Branch 'roundcubemail-plugins-kolab-format2-horde5' - 2 commits - plugins/calendar plugins/libkolab

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


 plugins/calendar/drivers/kolab/kolab_driver.php |   16 ++++++++++++++++
 plugins/libkolab/lib/kolab_format_event.php     |    2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)

New commits:
commit e6b803df397b5a4fe57bb49f705b3eb740df00e1
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Mar 6 10:05:30 2013 +0100

    Fix recurring events handing (#1677)

diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php
index a68d96f..f7f4138 100644
--- a/plugins/calendar/drivers/kolab/kolab_driver.php
+++ b/plugins/calendar/drivers/kolab/kolab_driver.php
@@ -413,6 +413,13 @@ class kolab_driver extends calendar_driver
             $limit = clone $event['end'];
             $limit->add(new DateInterval('P370D'));
             $recurring = reset($storage->_get_recurring_events($event, $event['start'], $limit, $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'])
@@ -432,6 +439,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;
           }
@@ -555,6 +567,7 @@ class kolab_driver extends calendar_driver
       case 'new':
         // save submitted data as new (non-recurring) event
         $event['recurrence'] = array();
+        unset($event['recurrence_id']);
         $event['uid'] = $this->cal->generate_uid();
         
         // copy attachment data to new event
@@ -614,6 +627,9 @@ class kolab_driver extends calendar_driver
           if ($master['recurrence']['BYMONTH'] == $master['start']->format('n'))
             unset($event['recurrence']['BYMONTH']);
           
+          // remove reference to old master (bug #1677)
+          unset($event['recurrence_id']);
+          
           $success = $storage->insert_event($event);
           break;
         }


commit a7daf76e792b2c00c886de17e06a3dd5380b5443
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Mar 6 10:03:48 2013 +0100

    Pass recurrence exception as DateTime object to the Horde format library (#1677)

diff --git a/plugins/libkolab/lib/kolab_format_event.php b/plugins/libkolab/lib/kolab_format_event.php
index 88f2c80..35f8cf4 100644
--- a/plugins/libkolab/lib/kolab_format_event.php
+++ b/plugins/libkolab/lib/kolab_format_event.php
@@ -166,7 +166,7 @@ class kolab_format_event extends kolab_format
 
             // exclusions
             foreach ((array)$ra['EXDATE'] as $excl) {
-                $this->kolab_object['recurrence']['exclusion'][] = $excl->format('Y-m-d');
+                $this->kolab_object['recurrence']['exclusion'][] = $excl;
             }
         }
         else if (isset($object['recurrence']))





More information about the commits mailing list