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