PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.6.1
Independent Analytics – WordPress Analytics Plugin v2.6.1
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 / Email_Reports / Interval.php
independent-analytics / IAWP / Email_Reports Last commit date
Email_Chart.php 2 years ago Email_Reports.php 2 years ago Interval.php 2 years ago Interval_Factory.php 2 years ago
Interval.php
67 lines
1 <?php
2
3 namespace IAWP\Email_Reports;
4
5 use DateTime;
6 use IAWP\Date_Range\Date_Range;
7 use IAWP\Date_Range\Relative_Date_Range;
8 use IAWP\Utils\String_Util;
9 use IAWPSCOPED\Illuminate\Support\Carbon;
10 /** @internal */
11 class Interval
12 {
13 private $id;
14 private $relative_date_range_id;
15 private $datetime_prefix;
16 private $datetime_format_pattern;
17 private $chart_title;
18 public function __construct(array $attributes)
19 {
20 $this->id = $attributes['id'];
21 $this->relative_date_range_id = $attributes['relative_date_range_id'];
22 $this->datetime_prefix = $attributes['datetime_prefix'] ?? '';
23 $this->datetime_format_pattern = $attributes['datetime_format_pattern'];
24 $this->chart_title = $attributes['chart_title'];
25 }
26 public function id() : string
27 {
28 return $this->id;
29 }
30 public function report_time_period_for_humans() : string
31 {
32 $prefix = $this->datetime_prefix;
33 if (\strlen($prefix) > 0 && !String_Util::str_ends_with($prefix, ' ')) {
34 $prefix .= ' ';
35 }
36 $formatted_date = Carbon::parse($this->date_range()->start())->translatedFormat($this->datetime_format_pattern);
37 return $prefix . $formatted_date;
38 }
39 public function chart_title() : string
40 {
41 return $this->chart_title;
42 }
43 public function next_interval_start() : DateTime
44 {
45 return $this->current_date_range()->next_period()->start();
46 }
47 /**
48 * This is the date range that the email report covers, which is the previous period, not the
49 * current period.
50 *
51 * @return Date_Range
52 */
53 public function date_range() : Date_Range
54 {
55 // This exception is necessary because in Date_Range, range_sizes_in_days doesn't take the
56 // months length into account
57 if ($this->id === 'monthly') {
58 return new Relative_Date_Range('LAST_MONTH');
59 }
60 return $this->current_date_range()->previous_period();
61 }
62 private function current_date_range() : Relative_Date_Range
63 {
64 return new Relative_Date_Range($this->relative_date_range_id);
65 }
66 }
67