plugins/calendar

Thomas Brüderli bruederli at kolabsys.com
Wed Mar 6 10:19:38 CET 2013


 plugins/calendar/drivers/kolab/kolab_driver.php |   12 ++++++++++++
 1 file changed, 12 insertions(+)

New commits:
commit cddf6e0494c095a0aac83dcbb7a9cee73a966c12
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Mar 6 10:19:22 2013 +0100

    Improve behavior when deleting recurring events (#1677)

diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index bd4a855..439bda7 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -436,6 +436,13 @@ class kolab_driver extends calendar_driver
           // removing the first instance => just move to next occurence
           if ($master['id'] == $event['id']) {
             $recurring = reset($storage->_get_recurring_events($event, $event['start'], null, $event['id'].'-1'));
+
+            // no future instances found: delete the master event (bug #1677)
+            if (!$recurring['start']) {
+              $success = $storage->delete_event($master, $force);
+              break;
+            }
+
             $master['start'] = $recurring['start'];
             $master['end'] = $recurring['end'];
             if ($master['recurrence']['COUNT'])
@@ -455,6 +462,11 @@ class kolab_driver extends calendar_driver
             $master['recurrence']['UNTIL'] = clone $event['start'];
             $master['recurrence']['UNTIL']->sub(new DateInterval('P1D'));
             unset($master['recurrence']['COUNT']);
+
+            // if all future instances are deleted, remove recurrence rule entirely (bug #1677)
+            if ($master['recurrence']['UNTIL']->format('Ymd') == $master['start']->format('Ymd'))
+              $master['recurrence'] = array();
+
             $success = $storage->update_event($master);
             break;
           }





More information about the commits mailing list