diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index fed7aed5..0eafc3bd 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -346,13 +346,16 @@ class kolab_driver extends calendar_driver $this->_read_calendars(); // create calendar object if necesary - if (!$this->calendars[$id] && in_array($id, array(self::INVITATIONS_CALENDAR_PENDING, self::INVITATIONS_CALENDAR_DECLINED))) { - $this->calendars[$id] = new kolab_invitation_calendar($id, $this->cal); - } - else if (!$this->calendars[$id] && $id !== self::BIRTHDAY_CALENDAR_ID) { - $calendar = kolab_calendar::factory($id, $this->cal); - if ($calendar->ready) - $this->calendars[$calendar->id] = $calendar; + if (!$this->calendars[$id]) { + if (in_array($id, array(self::INVITATIONS_CALENDAR_PENDING, self::INVITATIONS_CALENDAR_DECLINED))) { + $this->calendars[$id] = new kolab_invitation_calendar($id, $this->cal); + } + else if ($id !== self::BIRTHDAY_CALENDAR_ID) { + $calendar = kolab_calendar::factory($id, $this->cal); + if ($calendar->ready) { + $this->calendars[$calendar->id] = $calendar; + } + } } return $this->calendars[$id]; diff --git a/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php b/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php index 5e81377b..b41e2964 100644 --- a/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_invitation_calendar.php @@ -197,7 +197,7 @@ class kolab_invitation_calendar else { $cal = null; foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) { - $cal = new kolab_calendar($foldername, $this->cal); + $cal = $this->_get_calendar($foldername); if ($cal->ready && $cal->storage && $cal->get_event($event['id'])) { break; } @@ -233,7 +233,7 @@ class kolab_invitation_calendar // aggregate events from all calendar folders $events = array(); foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) { - $cal = new kolab_calendar($foldername, $this->cal); + $cal = $this->_get_calendar($foldername); if ($cal->get_namespace() == 'other') continue; @@ -287,7 +287,7 @@ class kolab_invitation_calendar // aggregate counts from all calendar folders $count = 0; foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) { - $cal = new kolab_calendar($foldername, $this->cal); + $cal = $this->_get_calendar($foldername); if ($cal->get_namespace() == 'other') continue; @@ -297,6 +297,15 @@ class kolab_invitation_calendar return $count; } + /** + * Get calendar object instance (that maybe already initialized) + */ + private function _get_calendar($folder_name) + { + $id = kolab_storage::folder_id($folder_name, true); + return $this->cal->driver->get_calendar($id); + } + /** * Helper method to modify some event properties */