PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.10
Independent Analytics – WordPress Analytics Plugin v1.10
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 / inc / queries / range_query.php
independent-analytics / inc / queries Last commit date
geos.php 3 years ago range_query.php 3 years ago referrers.php 3 years ago resources.php 3 years ago views.php 3 years ago
range_query.php
78 lines
1 <?php
2
3 namespace IAWP;
4
5 abstract class Range_Query
6 {
7 private $start;
8 private $end;
9 const FORMAT_PATTERN = 'Y-m-d H:i:s';
10
11 public function __construct($start = null, $end = null)
12 {
13 if (is_null($start) || is_null($end)) {
14 list($start, $end) = IAWP()->default_date_range();
15 }
16
17 $this->start = clone $start;
18 $this->end = clone $end;
19
20 $user_timezone = new \DateTimeZone(Timezone::local_offset());
21 $utc_timezone = new \DateTimeZone('UTC');
22
23 $this->start->setTimezone($user_timezone)->setTime(0, 0, 0)->setTimezone($utc_timezone);
24 $this->end->setTimezone($user_timezone)->setTime(23, 59, 59)->setTimezone($utc_timezone);
25 }
26
27 final public function start()
28 {
29 return $this->start;
30 }
31
32 final protected function formatted_start()
33 {
34 return $this->start->format(self::FORMAT_PATTERN);
35 }
36
37 final public function end()
38 {
39 return $this->end;
40 }
41
42 final protected function formatted_end()
43 {
44 return $this->end->format(self::FORMAT_PATTERN);
45 }
46
47 private function range_size()
48 {
49 return $this->start->diff($this->end)->days + 1;
50 }
51
52 final public function prev_period_start()
53 {
54 $prev_start = clone $this->start;
55 $range_size = $this->range_size();
56
57 return $prev_start->modify("-$range_size days");
58 }
59
60 final protected function prev_period_formatted_start()
61 {
62 return $this->prev_period_start()->format(self::FORMAT_PATTERN);
63 }
64
65 final public function prev_period_end()
66 {
67 $prev_end = clone $this->end;
68 $range_size = $this->range_size();
69
70 return $prev_end->modify("-$range_size days");
71 }
72
73 final protected function prev_period_formatted_end()
74 {
75 return $this->prev_period_end()->format(self::FORMAT_PATTERN);
76 }
77 }
78