From dda99db3f05d0c328323adbe23092d842c1fbf03 Mon Sep 17 00:00:00 2001 From: "Bogomil Shopov (Kolab Systems)" Date: Tue, 19 Jul 2011 14:54:13 +0300 Subject: [PATCH] Adding "Virtual event" filter for exporting to Icalendar format. --- plugins/calendar/calendar.php | 6 +++--- plugins/calendar/drivers/kolab/kolab_calendar.php | 5 +++-- plugins/calendar/drivers/kolab/kolab_driver.php | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index 76cb88d6..585c11d3 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -580,7 +580,7 @@ class calendar extends rcube_plugin } /** - * + * Construct the ics file for exporting events to iCalendar format; */ function export_events() { @@ -588,8 +588,8 @@ class calendar extends rcube_plugin $end = get_input_value('end', RCUBE_INPUT_GET); if (!$start) $start = mktime(0, 0, 0, 1, date('n'), date('Y')-1); if (!$end) $end = mktime(0, 0, 0, 31, 12, date('Y')+10); - $events = $this->driver->load_events($start, $end, get_input_value('source', RCUBE_INPUT_GET)); - + $events = $this->driver->load_events($start, $end, null, get_input_value('source', RCUBE_INPUT_GET), 0); + header("Content-Type: text/calendar"); header("Content-Disposition: inline; filename=calendar.ics"); diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index d7e22c80..d6b89f97 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -191,9 +191,10 @@ class kolab_calendar * @param integer Event's new start (unix timestamp) * @param integer Event's new end (unix timestamp) * @param string Search query (optional) + * @param boolean Strip virtual events (optional) * @return array A list of event records */ - public function list_events($start, $end, $search = null) + public function list_events($start, $end, $search = null, $virtual = 1) { $this->_fetch_events(); @@ -224,7 +225,7 @@ class kolab_calendar } // resolve recurring events - if ($event['recurrence']) { + if ($event['recurrence'] && $virtual == 1) { $events = array_merge($events, $this->_get_recurring_events($event, $start, $end)); } } diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index 43db91ae..2b22320e 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -505,9 +505,10 @@ class kolab_driver extends calendar_driver * @param integer Event's new end (unix timestamp) * @param string Search query (optional) * @param mixed List of calendar IDs to load events from (either as array or comma-separated string) + * @param boolean Strip virtual events (optional) * @return array A list of event records */ - public function load_events($start, $end, $search = null, $calendars = null) + public function load_events($start, $end, $search = null, $calendars = null, $virtual = 1) { if ($calendars && is_string($calendars)) $calendars = explode(',', $calendars); @@ -517,7 +518,7 @@ class kolab_driver extends calendar_driver if ($calendars && !in_array($cid, $calendars)) continue; - $events = array_merge($events, $this->calendars[$cid]->list_events($start, $end, $search)); + $events = array_merge($events, $this->calendars[$cid]->list_events($start, $end, $search, $virtual)); } return $events;