public function import() { if (isset($this->urlParams['ID'])) { $file = Director::baseFolder() . "/event_calendar/import/" . $this->urlParams['ID'] . ".ics"; } if (file_exists($file)) { $parser = new iCal(array($file)); $ics_events = $parser->iCalReader(); if (is_array($ics_events) && is_array($ics_events[$file])) { $dt_start = null; $dt_end = null; $i = 1; foreach ($ics_events[$file] as $event) { if (!$dt_start && !$dt_end || (!isset($event[$dt_start]) || !isset($event[$dt_end]))) { foreach ($event as $k => $v) { if (substr($k, 0, 7) == "DTSTART") { $dt_start = $k; } if (substr($k, 0, 5) == "DTEND") { $dt_end = $k; } } } if (isset($event[$dt_start]) && isset($event[$dt_end])) { list($start_date, $end_date, $start_time, $end_time) = CalendarUtil::date_info_from_ics($event[$dt_start], $event[$dt_end]); $c = $this->getModel()->getEventDateTimeClass(); $new_date = new $c(); $new_date->StartDate = $start_date; $new_date->StartTime = $start_time; $new_date->EndDate = $end_date; $new_date->EndTime = $end_time; if (isset($event['DESCRIPTION']) && !empty($event['DESCRIPTION'])) { $new_date->Content = $event['DESCRIPTION']; } if (isset($event['SUMMARY']) && !empty($event['SUMMARY'])) { $new_date->Title = $event['SUMMARY']; } $new_date->is_announcement = 1; $new_date->CalendarID = $this->ID; $new_date->write(); echo sprintf("<p style='color:green;'>Event <em>%s</em> imported successfully, and was assigned ID %d</p>", $new_date->Title, $new_date->ID); } else { echo sprintf("<p style='color:red;'>Event #%d could not be imported.</p>", $i); } $i++; } } die; } else { die("The file {$file} could not be found."); } }