PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.0
Independent Analytics – WordPress Analytics Plugin v2.15.0
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 3 months ago Month.php 5 months 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 IAWP\Utils\Format;
7 use IAWP\Utils\Timezone;
8 /** @internal */
9 class Date_Picker
10 {
11 private $start;
12 private $end;
13 private $relative_range;
14 private $first_data;
15 public function __construct($start, $end, $relative_range)
16 {
17 $this->start = $start;
18 $this->end = $end;
19 $this->relative_range = $relative_range;
20 $this->first_data = Relative_Date_Range::beginning_of_time();
21 }
22 public function calendar_html()
23 {
24 return \IAWPSCOPED\iawp_render('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' => Format::date(), 'first_data' => $this->first_data->format('Y-m-d'), 'site_offset_in_seconds' => Timezone::site_offset_in_seconds($this->start)]);
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