function __construct(ImportedEventModel $importedEvent) { $reoccur = $importedEvent->getReoccur(); if (isset($reoccur) && isset($reoccur['ical_rrule']) && $reoccur['ical_rrule']) { $icaldata = new ICalData(clone $importedEvent->getStartAt(), clone $importedEvent->getEndAt(), $reoccur['ical_rrule'], $importedEvent->getTimezone()); if (isset($reoccur['ical_exdates']) && is_array($reoccur['ical_exdates'])) { foreach ($reoccur['ical_exdates'] as $exdate) { $icaldata->addExDateByString($exdate['values'], $exdate['properties']); } } $unraveler = new Unraveler($icaldata); $unraveler->setIncludeOriginalEvent(true); $unraveler->process(); $results = $unraveler->getResults(); foreach ($results as $wantedTimes) { $newImportedOccurrenceEvent = new ImportedEventOccurrenceModel(); $newImportedOccurrenceEvent->setFromImportedEventModel($importedEvent); $newImportedOccurrenceEvent->setStartAt($wantedTimes->getStart()); $newImportedOccurrenceEvent->setEndAt($wantedTimes->getEnd()); $this->importedEventOccurrences[] = $newImportedOccurrenceEvent; } $this->toMultiples = true; } else { // If not a reoccuring event, there will still be 1 occurence ..... $newImportedOccurrenceEvent = new ImportedEventOccurrenceModel(); $newImportedOccurrenceEvent->setFromImportedEventModel($importedEvent); $this->importedEventOccurrences[] = $newImportedOccurrenceEvent; $this->toMultiples = false; } }