public function setUp() { $this->calendar = new Calendar('test'); $event = new BasicEvent('My First Event', 'Testing the new calendar', new \DateTime('2015-03-05 00:00:00'), new \DateTime('2015-03-05 23:59:59')); $event->repeats()->daily()->every(2)->forever(); $this->calendar->add($event); $this->events[] = $event; $event = new BasicEvent('My Second Event', 'Testing the new calendar', new \DateTime('2015-07-15 00:00:00'), new \DateTime('2015-07-15 23:59:59')); $event->repeats()->weekly()->endsAfter(2); $this->calendar->add($event); $this->events[] = $event; $event = new BasicEvent('My Third Event', 'Testing the new calendar', new \DateTime('2015-07-15 00:00:00'), new \DateTime('2015-07-15 23:59:59')); $event->repeats()->monthly()->endsOn(new \DateTime('2015-06-01')); $this->calendar->add($event); $this->events[] = $event; }
public function testCreateRecurringEvent() { $event = new BasicEvent('My Event', 'Testing the new calendar', new \DateTime('now'), new \DateTime('tomorrow')); $event->repeats()->daily()->every(2)->endsOn(new \DateTime('2015-12-31')); $calendar = new Calendar('test'); $calendar->add($event); }
public function slice(CalendarInterface $calendar) { $sliced = new Calendar(); $current = $calendar->current(); if (!$current instanceof EquatablePeriodInterface) { throw new UnexpectedValueException('Each period must implement Calender\\EquatablePeriodInterface.'); } while ($period = $calendar->next()) { if (!$period instanceof EquatablePeriodInterface) { throw new UnexpectedValueException('Each period must implement Calender\\EquatablePeriodInterface.'); } if ($current->equals($period)) { $current = $current->endingOn($period->getEnd()); } else { $sliced->add($current); $current = $period; } } $sliced->add($current); if (isset($this->maxPeriodLength)) { $tmp = clone $sliced; $sliced->clear(); foreach ($tmp as $period) { if ($period->getDuration()->d > $this->maxPeriodLength->d) { $range = $period->getRange($this->maxPeriodLength); $range = iterator_to_array($range); $startDate = current($range); while ($date = next($range)) { $endDate = $date; $subPeriod = clone $period; $subPeriod->setPeriod(new BasePeriod($startDate, $endDate)); $sliced->add($subPeriod); $startDate = $endDate; } $lastPeriod = clone $period; $lastPeriod->setPeriod(new BasePeriod($startDate, $period->getEnd())); $sliced->add($lastPeriod); } else { $sliced->add($period); } } } return $sliced; }