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