PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.8.4
Independent Analytics – WordPress Analytics Plugin v2.8.4
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 / Date_Picker / Date_Picker.php
independent-analytics / IAWP / Date_Picker Last commit date
Date_Picker.php 1 year ago Month.php 1 year ago
Date_Picker.php
42 lines
1 <?php
2
3 namespace IAWP\Date_Picker;
4
5 use IAWP\Date_Range\Relative_Date_Range;
6 use IAWPSCOPED\Proper\Timezone;
7 /** @internal */
8 class Date_Picker
9 {
10 private $start;
11 private $end;
12 private $relative_range;
13 private $first_data;
14 public function __construct($start, $end, $relative_range)
15 {
16 $this->start = $start;
17 $this->end = $end;
18 $this->relative_range = $relative_range;
19 // NOTE: Not sure why the timezone has to be set again, but it does
20 $this->first_data = Relative_Date_Range::beginning_of_time()->setTimezone(Timezone::site_timezone());
21 }
22 public function calendar_html()
23 {
24 return \IAWPSCOPED\iawp_blade()->run('date-picker.date-picker', ['months' => $this->months(), 'start_date' => $this->start, 'end_date' => $this->end, 'relative_range' => $this->relative_range, 'date_ranges' => Relative_Date_Range::ranges(), 'timezone' => Timezone::site_timezone(), 'user_format' => \get_option('date_format'), 'first_data' => $this->first_data->format('Y-m-d'), 'site_offset_in_seconds' => Timezone::site_offset_in_seconds()]);
25 }
26 private function months() : array
27 {
28 $first_day_last_year = new \DateTime('first day of January last year', Timezone::site_timezone());
29 $start = $this->first_data < $first_day_last_year ? clone $this->first_data : clone $first_day_last_year;
30 $start->modify('first day of this month')->setTime(0, 0, 0);
31 $end = (new \DateTime('last day of this month', Timezone::site_timezone()))->setTime(23, 59, 59);
32 $interval = new \DateInterval('P1M');
33 // 1 month interval
34 $period = new \DatePeriod($start, $interval, $end);
35 $months = [];
36 foreach ($period as $month) {
37 $months[] = new \IAWP\Date_Picker\Month($month, $start);
38 }
39 return $months;
40 }
41 }
42