コード例 #1
0
ファイル: Year.php プロジェクト: jniebuhr/piwik
 /**
  * Generates the subperiods (one for each month of the year)
  */
 protected function generate()
 {
     if ($this->subperiodsProcessed) {
         return;
     }
     parent::generate();
     $year = $this->date->toString("Y");
     for ($i = 1; $i <= 12; $i++) {
         $this->addSubperiod(new Month(Date::factory("{$year}-{$i}-01")));
     }
 }
コード例 #2
0
ファイル: Month.php プロジェクト: jniebuhr/piwik
 /**
  * Generates the subperiods (one for each day in the month)
  */
 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);
 }
コード例 #3
0
ファイル: Month.php プロジェクト: KiwiJuicer/handball-dachau
 /**
  * Generates the subperiods (one for each day in the month)
  */
 protected function generate()
 {
     if ($this->subperiodsProcessed) {
         return;
     }
     parent::generate();
     $date = $this->date;
     $startMonth = $date->setDay(1);
     $currentDay = clone $startMonth;
     while ($currentDay->compareMonth($startMonth) == 0) {
         $this->addSubperiod(new Day($currentDay));
         $currentDay = $currentDay->addDay(1);
     }
 }
コード例 #4
0
ファイル: Week.php プロジェクト: JoeHorn/piwik
 /**
  * Generates the subperiods - one for each day in the week
  */
 protected function generate()
 {
     if ($this->subperiodsProcessed) {
         return;
     }
     parent::generate();
     $date = $this->date;
     if ($date->toString('N') > 1) {
         $date = $date->subDay($date->toString('N') - 1);
     }
     $startWeek = $date;
     $currentDay = clone $startWeek;
     while ($currentDay->compareWeek($startWeek) == 0) {
         $this->addSubperiod(new Day($currentDay));
         $currentDay = $currentDay->addDay(1);
     }
 }
コード例 #5
0
ファイル: Range.php プロジェクト: KiwiJuicer/handball-dachau
 /**
  * Generates the subperiods
  *
  * @throws Exception
  */
 protected function generate()
 {
     if ($this->subperiodsProcessed) {
         return;
     }
     parent::generate();
     if (preg_match('/(last|previous)([0-9]*)/', $this->strDate, $regs)) {
         $lastN = $regs[2];
         $lastOrPrevious = $regs[1];
         if (!is_null($this->defaultEndDate)) {
             $defaultEndDate = $this->defaultEndDate;
         } else {
             $defaultEndDate = $this->today;
         }
         $period = $this->strPeriod;
         if ($period == 'range') {
             $period = 'day';
         }
         if ($lastOrPrevious == 'last') {
             $endDate = $defaultEndDate;
         } elseif ($lastOrPrevious == 'previous') {
             if ('month' == $period) {
                 $endDate = $defaultEndDate->subMonth(1);
             } else {
                 $endDate = $defaultEndDate->subPeriod(1, $period);
             }
         }
         $lastN = $this->getMaxN($lastN);
         // last1 means only one result ; last2 means 2 results so we remove only 1 to the days/weeks/etc
         $lastN--;
         $lastN = abs($lastN);
         $startDate = $endDate->addPeriod(-1 * $lastN, $period);
     } elseif ($dateRange = Range::parseDateRange($this->strDate)) {
         $strDateStart = $dateRange[1];
         $strDateEnd = $dateRange[2];
         $startDate = Date::factory($strDateStart);
         if ($strDateEnd == 'today') {
             $strDateEnd = 'now';
         } elseif ($strDateEnd == 'yesterday') {
             $strDateEnd = 'yesterdaySameTime';
         }
         // we set the timezone in the Date object only if the date is relative eg. 'today', 'yesterday', 'now'
         $timezone = null;
         if (strpos($strDateEnd, '-') === false) {
             $timezone = $this->timezone;
         }
         $endDate = Date::factory($strDateEnd, $timezone);
     } else {
         throw new Exception(Piwik::translate('General_ExceptionInvalidDateRange', array($this->strDate, ' \'lastN\', \'previousN\', \'YYYY-MM-DD,YYYY-MM-DD\'')));
     }
     if ($this->strPeriod != 'range') {
         $this->fillArraySubPeriods($startDate, $endDate, $this->strPeriod);
         return;
     }
     $this->processOptimalSubperiods($startDate, $endDate);
     // When period=range, we want End Date to be the actual specified end date,
     // rather than the end of the month / week / whatever is used for processing this range
     $this->endDate = $endDate;
 }