public function getArrayOfStartDates(CalendarReoccuranceInterface $reoccurance) { $dateArray = array(); switch ($reoccurance->getPeriod()) { case CalendarReoccuranceInterface::FREQUENCY_DAY: $period = 'D'; break; case CalendarReoccuranceInterface::FREQUENCY_WEEK: $period = 'W'; break; case CalendarReoccuranceInterface::FREQUENCY_MONTH: $period = 'M'; break; case CalendarReoccuranceInterface::FREQUENCY_YEAR: $period = 'Y'; break; } $date = $reoccurance->getStartDate(); if ($reoccurance->getStopMethod() === CalendarReoccuranceInterface::END_DATE) { while ($date <= $reoccurance->getEndDate()) { $interval = new \DateInterval("P" . $reoccurance->getIntervalBetween() . $period); $date = $date->add($interval); $cloneDate = clone $date; $dateArray[] = $cloneDate; } } if ($reoccurance->getStopMethod() === CalendarReoccuranceInterface::END_ITERATIONS) { for ($x = 0; $x <= $reoccurance->getIterations(); $x++) { $interval = new \DateInterval("P" . $reoccurance->getIntervalBetween() . $period); $date = $date->add($interval); $cloneDate = clone $date; $dateArray[] = $cloneDate; } } return $dateArray; }