PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.30.0
Independent Analytics – WordPress Analytics Plugin v1.30.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 2 years ago Cities.php 2 years ago Countries.php 2 years ago Current_Traffic_Finder.php 3 years ago Device_Browsers.php 2 years ago Device_Operating_Systems.php 2 years ago Device_Types.php 2 years ago Referrers.php 2 years ago Resources.php 2 years ago Table_Data.php 3 years ago Visitors_Over_Time_Finder.php 3 years ago
Visitors_Over_Time_Finder.php
57 lines
1 <?php
2
3 namespace IAWP_SCOPED\IAWP\Queries;
4
5 use IAWP_SCOPED\IAWP\Date_Range\Date_Range;
6 use IAWP_SCOPED\IAWP\Interval\Interval;
7 use IAWP_SCOPED\IAWP\Query;
8 class Visitors_Over_Time_Finder
9 {
10 /**
11 * @var Date_Range
12 */
13 private $date_range;
14 private $interval;
15 /**
16 * @param Date_Range $date_range Range to fetch referrers for
17 */
18 public function __construct(Date_Range $date_range, Interval $interval)
19 {
20 $this->date_range = $date_range;
21 $this->interval = $interval;
22 }
23 public function fetch()
24 {
25 $rows = Query::query($this->interval->get_query_name(), ['start' => $this->date_range->iso_start(), 'end' => $this->date_range->iso_end()])->rows();
26 return $this->rows_to_class($rows);
27 }
28 private function rows_to_class(array $rows) : object
29 {
30 $date_interval = $this->interval->get_date_interval();
31 $date_period = new \DatePeriod($this->date_range->start(), $date_interval, $this->date_range->end());
32 $interval_data = [];
33 $visitors_data = [];
34 $views_data = [];
35 foreach ($date_period as $index => $date) {
36 $current_interval = $index;
37 $current_visitors = 0;
38 $current_views = 0;
39 foreach ($rows as $row) {
40 $row_interval = \intval($row->interval_ago);
41 $row_visitors = \intval($row->visitors);
42 $row_views = \intval($row->views);
43 if ($row_interval === $index) {
44 $current_interval = $row_interval;
45 $current_visitors = $row_visitors;
46 $current_views = $row_views;
47 break;
48 }
49 }
50 $interval_data[] = $current_interval;
51 $visitors_data[] = $current_visitors;
52 $views_data[] = $current_views;
53 }
54 return (object) ['visitors' => $visitors_data, 'views' => $views_data, 'interval_labels_short' => $this->interval->get_short_labels($interval_data), 'interval_labels_full' => $this->interval->get_full_labels($interval_data)];
55 }
56 }
57