Пример #1
0
 private function generateWeeks()
 {
     $date = new \TYPO3\CMS\Cal\Model\CalDate();
     $date->setDay(1);
     $date->setMonth($this->month);
     $date->setYear($this->year);
     $this->monthStartWeekdayNum = $date->format('%w');
     $this->monthLength = $date->getDaysInMonth();
     $monthEnd = \TYPO3\CMS\Cal\Controller\Calendar::calculateEndMonthTime($date);
     $weekEnd = $monthEnd->getWeekOfYear();
     $newDate = \TYPO3\CMS\Cal\Controller\Calendar::calculateStartWeekTime($date);
     $this->weeks = array();
     $weekNumber = $newDate->getWeekOfYear();
     if ($this->month == 12 && $weekEnd == 1) {
         do {
             if ($weekNumber == $weekEnd) {
                 $this->weeks[$newDate->getYear() + 1 . '_' . $weekNumber] = new \TYPO3\CMS\Cal\View\NewWeekView($weekNumber, $newDate->getYear() + 1, $this->month);
             } else {
                 $this->weeks[$newDate->getYear() . '_' . $weekNumber] = new \TYPO3\CMS\Cal\View\NewWeekView($weekNumber, $newDate->getYear(), $this->month);
             }
             $newDate->addSeconds(86400 * 7);
             $weekNumber = $newDate->getWeekOfYear();
             $weekNumberTmp = $weekNumber;
             if ($weekNumber != $weekEnd) {
                 $weekNumberTmp = 0;
             }
         } while ($weekNumberTmp <= $weekEnd && $newDate->year == $this->year);
     } else {
         if ($this->month == 1) {
             do {
                 if ($weekNumber > 6) {
                     $this->weeks[$newDate->getYear() . '_' . $weekNumber] = new \TYPO3\CMS\Cal\View\NewWeekView($weekNumber, $newDate->getYear(), $this->month);
                 } else {
                     $this->weeks[$this->year . '_' . $weekNumber] = new \TYPO3\CMS\Cal\View\NewWeekView($weekNumber, $this->year, $this->month);
                 }
                 $newDate->addSeconds(86400 * 7);
                 $weekNumber = $newDate->getWeekOfYear();
             } while ($weekNumber <= $weekEnd && $newDate->year == $this->year);
         } else {
             do {
                 $this->weeks[$this->year . '_' . $weekNumber] = new \TYPO3\CMS\Cal\View\NewWeekView($weekNumber, $newDate->getYear(), $this->month);
                 $newDate->addSeconds(86400 * 7);
                 $weekNumber = $newDate->getWeekOfYear();
             } while ($weekNumber <= $weekEnd && $newDate->getYear() == $this->year);
         }
     }
     $this->maxWeeksInYear = max($this->maxWeeksInYear, $weekNumber);
 }