PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
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 1 month ago Factory.php 3 months ago Month.php 1 month ago PeriodValidator.php 2 years ago Range.php 1 month ago Week.php 1 month ago Year.php 1 month 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