From ce99a163f231888f0da55a88275872711aa4c7a2 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 1 Sep 2011 00:37:23 +0200 Subject: [PATCH] Fix recurring event in database backend --- plugins/calendar/drivers/calendar_driver.php | 2 +- .../calendar/drivers/database/database_driver.php | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/plugins/calendar/drivers/calendar_driver.php b/plugins/calendar/drivers/calendar_driver.php index 10aa3bae..18fcdaaf 100644 --- a/plugins/calendar/drivers/calendar_driver.php +++ b/plugins/calendar/drivers/calendar_driver.php @@ -200,7 +200,7 @@ abstract class calendar_driver /** * Return data of a single event * - * @param array Hash array with event properties: + * @param mixed UID string or hash array with event properties: * id: Event identifier * calendar: Calendar identifier * @return array Event object as hash array diff --git a/plugins/calendar/drivers/database/database_driver.php b/plugins/calendar/drivers/database/database_driver.php index 3387b9ab..da83fa1e 100644 --- a/plugins/calendar/drivers/database/database_driver.php +++ b/plugins/calendar/drivers/database/database_driver.php @@ -239,6 +239,7 @@ class database_driver extends calendar_driver $event_id = $this->rc->db->insert_id($this->sequence_events); if ($event_id) { + $event['id'] = $event_id; $this->cache[$eventid] = $event; // add attachments @@ -269,11 +270,11 @@ class database_driver extends calendar_driver if (!empty($this->calendars)) { $update_master = false; $update_recurring = true; - $old = $this->get_event($event['id']); + $old = $this->get_event($event); // modify a recurring event, check submitted savemode to do the right things if ($old['recurrence'] || $old['recurrence_id']) { - $master = $old['recurrence_id'] ? $this->get_event($old['recurrence_id']) : $old; + $master = $old['recurrence_id'] ? $this->get_event(array('id' => $old['recurrence_id'])) : $old; // keep saved exceptions (not submitted by the client) if ($old['recurrence']['EXDATE']) @@ -541,7 +542,7 @@ class database_driver extends calendar_driver public function move_event($event) { // let edit_event() do all the magic - return $this->edit_event($event + (array)$this->get_event($event['id'])); + return $this->edit_event($event + (array)$this->get_event($event)); } /** @@ -553,7 +554,7 @@ class database_driver extends calendar_driver public function resize_event($event) { // let edit_event() do all the magic - return $this->edit_event($event + (array)$this->get_event($event['id'])); + return $this->edit_event($event + (array)$this->get_event($event)); } /** @@ -567,14 +568,14 @@ class database_driver extends calendar_driver public function remove_event($event, $force = true) { if (!empty($this->calendars)) { - $event += (array)$this->get_event($event['id']); + $event += (array)$this->get_event($event); $master = $event; $update_master = false; $savemode = 'all'; // read master if deleting a recurring event if ($event['recurrence'] || $event['recurrence_id']) { - $master = $event['recurrence_id'] ? $this->get_event($old['recurrence_id']) : $event; + $master = $event['recurrence_id'] ? $this->get_event(array('id' => $old['recurrence_id'])) : $event; $savemode = $event['savemode']; } @@ -635,7 +636,7 @@ class database_driver extends calendar_driver /** * Return data of a specific event - * @param mixed Hash array with event properties or event ID + * @param mixed Hash array with event properties or event UID * @return array Hash array with event properties */ public function get_event($event)