コード例 #1
0
ファイル: Calendar.php プロジェクト: racontemoi/shibuichi
 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.");
     }
 }