diff --git a/plugins/calendar/drivers/calendar_driver.php b/plugins/calendar/drivers/calendar_driver.php index db3ad904..0940e861 100644 --- a/plugins/calendar/drivers/calendar_driver.php +++ b/plugins/calendar/drivers/calendar_driver.php @@ -180,6 +180,16 @@ abstract class calendar_driver return false; } + /** + * Return data of a single event + * + * @param array Hash array with event properties: + * id: Event identifier + * calendar: Calendar identifier + * @return array Event object as hash array + */ + abstract function get_event($event); + /** * Get events from source. * diff --git a/plugins/calendar/drivers/database/database_driver.php b/plugins/calendar/drivers/database/database_driver.php index 3bd9a870..69898a8a 100644 --- a/plugins/calendar/drivers/database/database_driver.php +++ b/plugins/calendar/drivers/database/database_driver.php @@ -173,7 +173,7 @@ class database_driver extends calendar_driver * Add a single event to the database * * @param array Hash array with event properties - * @see Driver:new_event() + * @see calendar_driver::new_event() */ public function new_event($event) { @@ -233,7 +233,7 @@ class database_driver extends calendar_driver * Update an event entry with the given data * * @param array Hash array with event properties - * @see Driver:edit_event() + * @see calendar_driver::edit_event() */ public function edit_event($event) { @@ -502,7 +502,7 @@ class database_driver extends calendar_driver * Move a single event * * @param array Hash array with event properties - * @see Driver:move_event() + * @see calendar_driver::move_event() */ public function move_event($event) { @@ -514,7 +514,7 @@ class database_driver extends calendar_driver * Resize a single event * * @param array Hash array with event properties - * @see Driver:resize_event() + * @see calendar_driver::resize_event() */ public function resize_event($event) { @@ -528,7 +528,7 @@ class database_driver extends calendar_driver * @param array Hash array with event properties * @param boolean Remove record irreversible (@TODO) * - * @see Driver:remove_event() + * @see calendar_driver::remove_event() */ public function remove_event($event, $force = true) { @@ -601,13 +601,15 @@ class database_driver extends calendar_driver /** * Return data of a specific event - * @param string Event ID + * @param mixed Hash array with event properties or event ID * @return array Hash array with event properties */ - public function get_event($id) + public function get_event($event) { static $cache = array(); + $id = is_array($event) ? $event['id'] : $event; + if ($cache[$id]) return $cache[$id]; @@ -630,7 +632,7 @@ class database_driver extends calendar_driver /** * Get event data * - * @see Driver:load_events() + * @see calendar_driver::load_events() */ public function load_events($start, $end, $query = null, $calendars = null) { @@ -726,7 +728,7 @@ class database_driver extends calendar_driver /** * Get a list of pending alarms to be displayed to the user * - * @see Driver:pending_alarms() + * @see calendar_driver::pending_alarms() */ public function pending_alarms($time, $calendars = null) { @@ -759,7 +761,7 @@ class database_driver extends calendar_driver /** * Feedback after showing/sending an alarm notification * - * @see Driver:dismiss_alarm() + * @see calendar_driver::dismiss_alarm() */ public function dismiss_alarm($event_id, $snooze = 0) { diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index 50b06ed0..59ebb609 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -242,7 +242,7 @@ class kolab_calendar /** * Create a new event record * - * @see Driver:new_event() + * @see calendar_driver::new_event() * * @return mixed The created record ID on success, False on error */ @@ -263,6 +263,9 @@ class kolab_calendar true, false); $saved = false; } + else { + $this->events[$event['uid']] = $event; + } return $saved; } @@ -270,7 +273,7 @@ class kolab_calendar /** * Update a specific event record * - * @see Driver:new_event() + * @see calendar_driver::new_event() * @return boolean True on success, False on error */ @@ -289,6 +292,7 @@ class kolab_calendar } else { $updated = true; + $this->events[$event['id']] = $this->_to_rcube_event($object); } return $updated; @@ -297,7 +301,7 @@ class kolab_calendar /** * Delete an event record * - * @see Driver:remove_event() + * @see calendar_driver::remove_event() * @return boolean True on success, False on error */ public function delete_event($event, $force = true) @@ -332,7 +336,7 @@ class kolab_calendar /** * Restore deleted event record * - * @see Driver:undelete_event() + * @see calendar_driver::undelete_event() * @return boolean True on success, False on error */ public function restore_event($event) diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index a50edf85..62a55e03 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -274,10 +274,24 @@ class kolab_driver extends calendar_driver } + /** + * Move a single event + * + * @see calendar_driver::get_event() + * @return array Hash array with event properties, false if not found + */ + public function get_event($event) + { + if ($storage = $this->calendars[$event['calendar']]) + return $storage->get_event($event['id']); + + return false; + } + /** * Add a single event to the database * - * @see Driver:new_event() + * @see calendar_driver::new_event() */ public function new_event($event) { @@ -307,7 +321,7 @@ class kolab_driver extends calendar_driver /** * Update an event entry with the given data * - * @see Driver:new_event() + * @see calendar_driver::new_event() * @return boolean True on success, False on error */ public function edit_event($event) @@ -318,7 +332,7 @@ class kolab_driver extends calendar_driver /** * Move a single event * - * @see Driver:move_event() + * @see calendar_driver::move_event() * @return boolean True on success, False on error */ public function move_event($event) @@ -332,7 +346,7 @@ class kolab_driver extends calendar_driver /** * Resize a single event * - * @see Driver:resize_event() + * @see calendar_driver::resize_event() * @return boolean True on success, False on error */ public function resize_event($event) @@ -578,7 +592,7 @@ class kolab_driver extends calendar_driver /** * Get a list of pending alarms to be displayed to the user * - * @see Driver:pending_alarms() + * @see calendar_driver::pending_alarms() */ public function pending_alarms($time, $calendars = null) { @@ -649,7 +663,7 @@ class kolab_driver extends calendar_driver /** * Feedback after showing/sending an alarm notification * - * @see Driver:dismiss_alarm() + * @see calendar_driver::dismiss_alarm() */ public function dismiss_alarm($event_id, $snooze = 0) {