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); }