| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Period; |
|
|
| use Piwik\Date; |
| use Piwik\Period; |
|
|
| class Month extends Period |
| { |
| public const PERIOD_ID = 3; |
|
|
| protected $label = 'month'; |
|
|
| |
| |
| |
| |
| |
| public function getLocalizedShortString() |
| { |
| |
| $out = $this->getDateStart()->getLocalized(Date::DATE_FORMAT_MONTH_SHORT); |
| return $out; |
| } |
|
|
| |
| |
| |
| |
| |
| public function getLocalizedLongString() |
| { |
| |
| $out = $this->getDateStart()->getLocalized(Date::DATE_FORMAT_MONTH_LONG); |
| return $out; |
| } |
|
|
| |
| |
| |
| |
| |
| public function getPrettyString() |
| { |
| $out = $this->getDateStart()->toString('Y-m'); |
| return $out; |
| } |
|
|
| |
| |
| |
| protected function generate() |
| { |
| if ($this->subperiodsProcessed) { |
| return; |
| } |
|
|
| parent::generate(); |
|
|
| $date = $this->date; |
|
|
| $startMonth = $date->setDay(1)->setTime('00:00:00'); |
| $endMonth = $startMonth->addPeriod(1, 'month')->setDay(1)->subDay(1); |
|
|
| $this->processOptimalSubperiods($startMonth, $endMonth); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| protected function processOptimalSubperiods($startDate, $endDate) |
| { |
| while ( |
| $startDate->isEarlier($endDate) |
| || $startDate == $endDate |
| ) { |
| $week = new Week($startDate); |
| $startOfWeek = $week->getDateStart(); |
| $endOfWeek = $week->getDateEnd(); |
|
|
| if ($endOfWeek->isLater($endDate)) { |
| $this->fillDayPeriods($startDate, $endDate); |
| } elseif ($startOfWeek == $startDate) { |
| $this->addSubperiod($week); |
| } else { |
| $this->fillDayPeriods($startDate, $endOfWeek); |
| } |
|
|
| $startDate = $endOfWeek->addDay(1); |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| |
| private function fillDayPeriods($startDate, $endDate) |
| { |
| while (($startDate->isEarlier($endDate) || $startDate == $endDate)) { |
| $this->addSubperiod(new Day($startDate)); |
| $startDate = $startDate->addDay(1); |
| } |
| } |
|
|
| public function getImmediateChildPeriodLabel() |
| { |
| return 'week'; |
| } |
|
|
| public function getParentPeriodLabel() |
| { |
| return 'year'; |
| } |
| } |
|
|