예제 #1
0
 protected function instantiateRecurrences(Event $event)
 {
     if (empty($event->recurring_dates) || empty($event->start)) {
         return;
     }
     $dates = array_map('trim', explode(';', $event->recurring_dates));
     foreach ($dates as $start) {
         $newEvent = $this->newEntity($event->toArray(), ['accessibleFields' => ['id' => false, 'recurring_dates' => false, 'created' => false, 'modified' => false, 'created_by' => false, 'modified_by' => false]]);
         $newEvent->parent_event_id = $event->id;
         $newEvent->start_day = $start;
         $dateDiff = $event->start->diffInDays($newEvent->start, false);
         if ($dateDiff < 1 || $dateDiff > 366) {
             //Sanity check!
             //Recurrences should all be *after* the original date
             //and within a year of the original date
             continue;
         }
         $this->save($newEvent);
     }
     //Clear original list of recurring dates so we don't re-instantiate
     $event->recurring_dates = '';
     $this->save($event);
 }