diff --git a/calendar/inc/class.calendar_ui.inc.php b/calendar/inc/class.calendar_ui.inc.php index a3afa5b2f7..d2b4f95ded 100644 --- a/calendar/inc/class.calendar_ui.inc.php +++ b/calendar/inc/class.calendar_ui.inc.php @@ -773,10 +773,16 @@ function load_cal(url,id) { 'link' => False ); } + $file[] = array( + 'text' => lang('Import').': '.html::a_href(lang('iCal'),'calendar.calendar_uiforms.import'). + ' & '.html::a_href(lang('CSV'),'/calendar/csv_import.php'), + 'no_lang' => True, + 'link' => False, + ); // Merge print - if ($GLOBALS['egw_info']['user']['preferences']['calendar']['document_dir']) - { + if ($GLOBALS['egw_info']['user']['preferences']['calendar']['document_dir']) + { $options = ''; $documents = calendar_merge::get_documents($GLOBALS['egw_info']['user']['preferences']['calendar']['document_dir']); @@ -784,7 +790,7 @@ function load_cal(url,id) { $spreadsheets = importexport_admin_prefs_sidebox_hooks::get_spreadsheet_list('calendar'); foreach($spreadsheets as $file_info) { - if($key = array_search($file_info['name'], $documents)) + if($key = array_search($file_info['name'], $documents)) { unset($documents[$key]); } @@ -857,7 +863,7 @@ function load_cal(url,id) { if(!$timespan) { $timespan = array(array( - 'start' => is_array($this->first) ? $this->bo->date2ts($this->first) : $this->first, + 'start' => is_array($this->first) ? $this->bo->date2ts($this->first) : $this->first, 'end' => is_array($this->last) ? $this->bo->date2ts($this->last) : $this->last )); } diff --git a/calendar/inc/class.calendar_uiforms.inc.php b/calendar/inc/class.calendar_uiforms.inc.php index 80b39d52bd..c8112c22f1 100644 --- a/calendar/inc/class.calendar_uiforms.inc.php +++ b/calendar/inc/class.calendar_uiforms.inc.php @@ -1080,7 +1080,7 @@ class calendar_uiforms extends calendar_ui ); $cal_id = (int) $_GET['cal_id']; - if (!$cal_id || $cal_id && !($event = $this->bo->read($cal_id))) + if (!$cal_id && empty($_GET['ical']) || $cal_id && !($event = $this->bo->read($cal_id))) { if ($cal_id) { @@ -1096,6 +1096,28 @@ class calendar_uiforms extends calendar_ui } $event =& $this->default_add_event(); } + elseif (!empty($_GET['ical'])) + { + $ical = new calendar_ical(); + if (!($events = $ical->icaltoegw($_GET['ical'], '', 'utf-8')) || count($events) != 1) + { + error_log(__METHOD__."('$_GET[ical]') error parsing iCal!"); + $msg = lang('Error: importing the iCal'); + $event =& $this->default_add_event(); + } + else + { + $event = array_shift($events); + $event['participant_types'] = array(); + foreach($event['participants'] as $uid => $status) + { + calendar_so::split_user($uid, $user_type, $user_id); + $event['participant_types'][$user_type][$user_id] = $status; + } + //error_log(__METHOD__."(...) parsed as ".array2string($event)); + } + unset($ical); + } else { $preserv['actual_date'] = $event['start']; // remember the date clicked