PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.19.0
Independent Analytics – WordPress Analytics Plugin v1.19.0
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Queries / Visitors_Over_Time_Finder.php
independent-analytics / IAWP / Queries Last commit date
Campaigns.php 3 years ago City_Statistics.php 3 years ago Country_Statistics.php 3 years ago Current_Traffic_Finder.php 3 years ago Interval.php 3 years ago Minute_Interval.php 3 years ago Range_Query.php 3 years ago Referrers.php 3 years ago Reset_Database.php 3 years ago Resources.php 3 years ago Ten_Second_Interval.php 3 years ago View.php 3 years ago Views.php 3 years ago Visitors_Over_Time_Finder.php 3 years ago
Visitors_Over_Time_Finder.php
69 lines
1 <?php
2
3 namespace IAWP\Queries;
4
5 use IAWP\Query;
6
7 class Visitors_Over_Time_Finder extends Range_Query
8 {
9 private $interval;
10
11 public function __construct($options)
12 {
13 parent::__construct($options);
14 $options = iawp_default_args($options, [
15 'interval' => null,
16 ]);
17 $this->interval = $options['interval'];
18 }
19
20 public function fetch()
21 {
22 $rows = Query::query($this->interval->get_query_name(), [
23 'start' => $this->formatted_start(),
24 'end' => $this->formatted_end(),
25 ])->rows();
26
27 return $this->rows_to_class($rows);
28 }
29
30 private function rows_to_class(array $rows): object
31 {
32 $date_interval = $this->interval->get_date_interval();
33 $date_period = new \DatePeriod($this->start(), $date_interval, $this->end());
34 $interval_data = [];
35 $visitors_data = [];
36 $views_data = [];
37
38 foreach ($date_period as $index => $date) {
39 $current_interval = $index;
40 $current_visitors = 0;
41 $current_views = 0;
42
43 foreach ($rows as $row) {
44 $row_interval = intval($row->interval_ago);
45 $row_visitors = intval($row->visitors);
46 $row_views = intval($row->views);
47
48 if ($row_interval === $index) {
49 $current_interval = $row_interval;
50 $current_visitors = $row_visitors;
51 $current_views = $row_views;
52 break;
53 }
54 }
55
56 $interval_data[] = $current_interval;
57 $visitors_data[] = $current_visitors;
58 $views_data[] = $current_views;
59 }
60
61 return (object) [
62 'visitors' => $visitors_data,
63 'views' => $views_data,
64 'interval_labels_short' => $this->interval->get_short_labels($interval_data),
65 'interval_labels_full' => $this->interval->get_full_labels($interval_data),
66 ];
67 }
68 }
69