PluginProbe
Sessions / 2.3.1
Sessions v2.3.1
2.1.0 2.10.0 2.11.0 2.12.0 2.13.0 2.13.1 2.13.2 2.13.3 2.14.0 2.2.0 2.3.0 2.3.1 2.4.0 2.4.1 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.8.0 2.9.0 2.9.1 3.0.0 3.1.0 3.1.1 All 39 releases
sessions / includes / features / class-analyticsfactory.php

class-analyticsfactory.php in Sessions 2.3.1, at includes/features/class-analyticsfactory.php

86 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Analytics factory
4 *
5 * Handles all analytics creation and queries.
6 *
7 * @package Features
8 * @author Pierre Lannoy <https://pierre.lannoy.fr/>.
9 * @since 1.0.0
10 */
11
12 namespace POSessions\Plugin\Feature;
13
14 use POSessions\Plugin\Feature\Analytics;
15 use POSessions\System\Blog;
16 use POSessions\System\Date;
17
18 use POSessions\System\Timezone;
19
20 /**
21 * Define the analytics factory functionality.
22 *
23 * Handles all analytics creation and queries.
24 *
25 * @package Features
26 * @author Pierre Lannoy <https://pierre.lannoy.fr/>.
27 * @since 1.0.0
28 */
29 class AnalyticsFactory {
30
31 /**
32 * Ajax callback.
33 *
34 * @since 1.0.0
35 */
36 public static function get_stats_callback() {
37 check_ajax_referer( 'ajax_pose', 'nonce' );
38 $analytics = self::get_analytics( true );
39 $query = filter_input( INPUT_POST, 'query' );
40 $queried = filter_input( INPUT_POST, 'queried' );
41 exit( wp_json_encode( $analytics->query( $query, $queried ) ) );
42 }
43
44 /**
45 * Get the content of the viewer page.
46 *
47 * @param boolean $reload Optional. Is it a reload of an already displayed analytics.
48 * @since 1.0.0
49 */
50 public static function get_analytics( $reload = false ) {
51 $timezone = Timezone::network_get();
52 // Analytics type.
53 if ( ! ( $type = filter_input( INPUT_GET, 'type' ) ) ) {
54 $type = filter_input( INPUT_POST, 'type' );
55 }
56 if ( empty( $type ) ) {
57 $type = 'summary';
58 }
59 // Filters.
60 if ( ! ( $start = filter_input( INPUT_GET, 'start' ) ) ) {
61 $start = filter_input( INPUT_POST, 'start' );
62 }
63 if ( empty( $start ) || ! Date::is_date_exists( $start, 'Y-m-d' ) ) {
64 $sdatetime = new \DateTime( 'now', $timezone );
65 $start = $sdatetime->format( 'Y-m-d' );
66 } else {
67 $sdatetime = new \DateTime( $start, $timezone );
68 }
69 if ( ! ( $end = filter_input( INPUT_GET, 'end' ) ) ) {
70 $end = filter_input( INPUT_POST, 'end' );
71 }
72 if ( empty( $end ) || ! Date::is_date_exists( $end, 'Y-m-d' ) ) {
73 $edatetime = new \DateTime( 'now', $timezone );
74 $end = $edatetime->format( 'Y-m-d' );
75 } else {
76 $edatetime = new \DateTime( $end, $timezone );
77 }
78 if ( $edatetime->getTimestamp() < $sdatetime->getTimestamp() ) {
79 $start = $edatetime->format( 'Y-m-d' );
80 $end = $sdatetime->format( 'Y-m-d' );
81 }
82 return new Analytics( $type, $start, $end, $reload );
83 }
84
85 }
86