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