PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.12.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.12.1
5.12.1 5.12.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 months ago Factory.php 2 weeks ago Month.php 2 months ago PeriodValidator.php 2 years ago Range.php 2 months ago Week.php 2 months ago Year.php 2 weeks ago
Month.php
108 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 class Month extends Period
14 {
15 public const PERIOD_ID = 3;
16 protected $label = 'month';
17 /**
18 * Returns the current period as a localized short string
19 *
20 * @return string
21 */
22 public function getLocalizedShortString()
23 {
24 //"Aug 09"
25 $out = $this->getDateStart()->getLocalized(Date::DATE_FORMAT_MONTH_SHORT);
26 return $out;
27 }
28 /**
29 * Returns the current period as a localized long string
30 *
31 * @return string
32 */
33 public function getLocalizedLongString()
34 {
35 //"August 2009"
36 $out = $this->getDateStart()->getLocalized(Date::DATE_FORMAT_MONTH_LONG);
37 return $out;
38 }
39 /**
40 * Returns the current period as a string
41 *
42 * @return string
43 */
44 public function getPrettyString()
45 {
46 $out = $this->getDateStart()->toString('Y-m');
47 return $out;
48 }
49 /**
50 * Generates the subperiods (one for each day in the month)
51 */
52 protected function generate()
53 {
54 if ($this->subperiodsProcessed) {
55 return;
56 }
57 parent::generate();
58 $date = $this->date;
59 $startMonth = $date->setDay(1)->setTime('00:00:00');
60 $endMonth = $startMonth->addPeriod(1, 'month')->setDay(1)->subDay(1);
61 $this->processOptimalSubperiods($startMonth, $endMonth);
62 }
63 /**
64 * Determine which kind of period is best to use.
65 * See Range.test.php
66 *
67 * @param Date $startDate
68 * @param Date $endDate
69 */
70 protected function processOptimalSubperiods($startDate, $endDate)
71 {
72 while ($startDate->isEarlier($endDate) || $startDate == $endDate) {
73 $week = new \Piwik\Period\Week($startDate);
74 $startOfWeek = $week->getDateStart();
75 $endOfWeek = $week->getDateEnd();
76 if ($endOfWeek->isLater($endDate)) {
77 $this->fillDayPeriods($startDate, $endDate);
78 } elseif ($startOfWeek == $startDate) {
79 $this->addSubperiod($week);
80 } else {
81 $this->fillDayPeriods($startDate, $endOfWeek);
82 }
83 $startDate = $endOfWeek->addDay(1);
84 }
85 }
86 /**
87 * Fills the periods from startDate to endDate with days
88 *
89 * @param Date $startDate
90 * @param Date $endDate
91 */
92 private function fillDayPeriods($startDate, $endDate)
93 {
94 while ($startDate->isEarlier($endDate) || $startDate == $endDate) {
95 $this->addSubperiod(new \Piwik\Period\Day($startDate));
96 $startDate = $startDate->addDay(1);
97 }
98 }
99 public function getImmediateChildPeriodLabel()
100 {
101 return 'week';
102 }
103 public function getParentPeriodLabel()
104 {
105 return 'year';
106 }
107 }
108