diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index 408fd3cb..3c0f6151 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -24,6 +24,7 @@ class kolab_calendar public $ready = false; public $readonly = true; public $attachments = true; + public $alarms = false; private $cal; private $storage; @@ -56,10 +57,11 @@ class kolab_calendar $this->ready = !PEAR::isError($this->storage); - // Set readonly and editable flags according to folder permissions + // Set readonly and alarms flags according to folder permissions if ($this->ready) { if ($this->get_owner() == $_SESSION['username']) { $this->readonly = false; + $this->alarms = true; } else { $acl = $this->storage->_folder->getACL(); diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index 935c7600..bda22f3c 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -503,13 +503,22 @@ class kolab_driver extends calendar_driver */ public function pending_alarms($time, $calendars = null) { + if ($calendars && is_string($calendars)) + $calendars = explode(',', $calendars); + $events = array(); - foreach ($this->load_events($time, $time + 86400 * 365, $calendars) as $e) { - // add to list if alarm is set - if ($e['_alarm'] && ($notifyat = $e['start'] - $e['_alarm'] * 60) <= $time) { - $id = $e['id']; - $events[$id] = $e; - $events[$id]['notifyat'] = $notifyat; + foreach ($this->calendars as $cid => $calendar) { + // skip calendars with alarms disabled + if (!$calendar->alarms || ($calendars && !in_array($cid, $calendars))) + continue; + + foreach ($calendar->list_events($time, $time + 86400 * 365) as $e) { + // add to list if alarm is set + if ($e['_alarm'] && ($notifyat = $e['start'] - $e['_alarm'] * 60) <= $time) { + $id = $e['id']; + $events[$id] = $e; + $events[$id]['notifyat'] = $notifyat; + } } }