PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.2.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.2.0
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Period / Month.php
matomo / app / core / Period Last commit date
Day.php 2 years ago Factory.php 1 year ago Month.php 2 years ago PeriodValidator.php 2 years ago Range.php 1 year ago Week.php 1 year ago Year.php 2 years ago
Month.php
110 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 namespace Piwik\Period;
10
11 use Piwik\Date;
12 use Piwik\Period;
13 /**
14 */
15 class Month extends Period
16 {
17 public const PERIOD_ID = 3;
18 protected $label = 'month';
19 /**
20 * Returns the current period as a localized short string
21 *
22 * @return string
23 */
24 public function getLocalizedShortString()
25 {
26 //"Aug 09"
27 $out = $this->getDateStart()->getLocalized(Date::DATE_FORMAT_MONTH_SHORT);
28 return $out;
29 }
30 /**
31 * Returns the current period as a localized long string
32 *
33 * @return string
34 */
35 public function getLocalizedLongString()
36 {
37 //"August 2009"
38 $out = $this->getDateStart()->getLocalized(Date::DATE_FORMAT_MONTH_LONG);
39 return $out;
40 }
41 /**
42 * Returns the current period as a string
43 *
44 * @return string
45 */
46 public function getPrettyString()
47 {
48 $out = $this->getDateStart()->toString('Y-m');
49 return $out;
50 }
51 /**
52 * Generates the subperiods (one for each day in the month)
53 */
54 protected function generate()
55 {
56 if ($this->subperiodsProcessed) {
57 return;
58 }
59 parent::generate();
60 $date = $this->date;
61 $startMonth = $date->setDay(1)->setTime('00:00:00');
62 $endMonth = $startMonth->addPeriod(1, 'month')->setDay(1)->subDay(1);
63 $this->processOptimalSubperiods($startMonth, $endMonth);
64 }
65 /**
66 * Determine which kind of period is best to use.
67 * See Range.test.php
68 *
69 * @param Date $startDate
70 * @param Date $endDate
71 */
72 protected function processOptimalSubperiods($startDate, $endDate)
73 {
74 while ($startDate->isEarlier($endDate) || $startDate == $endDate) {
75 $week = new \Piwik\Period\Week($startDate);
76 $startOfWeek = $week->getDateStart();
77 $endOfWeek = $week->getDateEnd();
78 if ($endOfWeek->isLater($endDate)) {
79 $this->fillDayPeriods($startDate, $endDate);
80 } elseif ($startOfWeek == $startDate) {
81 $this->addSubperiod($week);
82 } else {
83 $this->fillDayPeriods($startDate, $endOfWeek);
84 }
85 $startDate = $endOfWeek->addDay(1);
86 }
87 }
88 /**
89 * Fills the periods from startDate to endDate with days
90 *
91 * @param Date $startDate
92 * @param Date $endDate
93 */
94 private function fillDayPeriods($startDate, $endDate)
95 {
96 while ($startDate->isEarlier($endDate) || $startDate == $endDate) {
97 $this->addSubperiod(new \Piwik\Period\Day($startDate));
98 $startDate = $startDate->addDay(1);
99 }
100 }
101 public function getImmediateChildPeriodLabel()
102 {
103 return 'week';
104 }
105 public function getParentPeriodLabel()
106 {
107 return 'year';
108 }
109 }
110