PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.22.0
Independent Analytics – WordPress Analytics Plugin v1.22.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 / Range_Query.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
Range_Query.php
74 lines
1 <?php
2
3 namespace IAWP_SCOPED\IAWP\Queries;
4
5 use IAWP_SCOPED\IAWP\Utils\Timezone;
6 abstract class Range_Query
7 {
8 private $start;
9 private $end;
10 const FORMAT_PATTERN = 'Y-m-d H:i:s';
11 public function __construct($options = [])
12 {
13 $options = \IAWP_SCOPED\iawp_default_args($options, ['start' => new \DateTime('1991-01-06'), 'end' => new \DateTime(), 'convert_to_full_days' => \true]);
14 $this->start = clone $options['start'];
15 $this->end = clone $options['end'];
16 if ($options['convert_to_full_days']) {
17 $this->start = $this->start_of_locale_day($this->start);
18 $this->end = $this->end_of_locale_day($this->end);
19 }
20 }
21 private function start_of_locale_day(\DateTime $datetime) : \DateTime
22 {
23 $user_timezone = new \DateTimeZone(Timezone::local_offset());
24 $utc_timezone = new \DateTimeZone('UTC');
25 return $datetime->setTimezone($user_timezone)->setTime(0, 0, 0)->setTimezone($utc_timezone);
26 }
27 private function end_of_locale_day(\DateTime $datetime) : \DateTime
28 {
29 $user_timezone = new \DateTimeZone(Timezone::local_offset());
30 $utc_timezone = new \DateTimeZone('UTC');
31 return $datetime->setTimezone($user_timezone)->setTime(23, 59, 59)->setTimezone($utc_timezone);
32 }
33 public final function start()
34 {
35 return $this->start;
36 }
37 protected final function formatted_start()
38 {
39 return $this->start->format(self::FORMAT_PATTERN);
40 }
41 public final function end()
42 {
43 return $this->end;
44 }
45 protected final function formatted_end()
46 {
47 return $this->end->format(self::FORMAT_PATTERN);
48 }
49 private function range_size()
50 {
51 return $this->start->diff($this->end)->days + 1;
52 }
53 public final function prev_period_start()
54 {
55 $prev_start = clone $this->start;
56 $range_size = $this->range_size();
57 return $prev_start->modify("-{$range_size} days");
58 }
59 protected final function prev_period_formatted_start()
60 {
61 return $this->prev_period_start()->format(self::FORMAT_PATTERN);
62 }
63 public final function prev_period_end()
64 {
65 $prev_end = clone $this->end;
66 $range_size = $this->range_size();
67 return $prev_end->modify("-{$range_size} days");
68 }
69 protected final function prev_period_formatted_end()
70 {
71 return $this->prev_period_end()->format(self::FORMAT_PATTERN);
72 }
73 }
74