Fix deleting first occurence of a recurring event (#439)
This commit is contained in:
parent
154d25b5b9
commit
0e7007b5b5
2 changed files with 14 additions and 3 deletions
|
@ -434,7 +434,7 @@ class kolab_calendar
|
|||
/**
|
||||
* Create instances of a recurring event
|
||||
*/
|
||||
private function _get_recurring_events($event, $start, $end, $event_id = null)
|
||||
public function _get_recurring_events($event, $start, $end, $event_id = null)
|
||||
{
|
||||
// use Horde classes to compute recurring instances
|
||||
require_once($this->cal->home . '/lib/Horde_Date_Recurrence.php');
|
||||
|
|
|
@ -469,8 +469,10 @@ class kolab_driver extends calendar_driver
|
|||
public function remove_event($event, $force = true)
|
||||
{
|
||||
$success = false;
|
||||
$_savemode = $event['_savemode'];
|
||||
|
||||
if (($storage = $this->calendars[$event['calendar']]) && ($event = $storage->get_event($event['id']))) {
|
||||
$event['_savemode'] = $_savemode;
|
||||
$savemode = 'all';
|
||||
$master = $event;
|
||||
|
||||
|
@ -484,8 +486,17 @@ class kolab_driver extends calendar_driver
|
|||
|
||||
switch ($savemode) {
|
||||
case 'current':
|
||||
// add exception to master event
|
||||
$master['recurrence']['EXDATE'][] = $event['start'];
|
||||
// removing the first instance => just move to next occurence
|
||||
if ($master['id'] == $event['id']) {
|
||||
$recurring = reset($storage->_get_recurring_events($event, $event['start'], $event['end'] + 86400 * 370, $event['id'].'-1'));
|
||||
$master['start'] = $recurring['start'];
|
||||
$master['end'] = $recurring['end'];
|
||||
if ($master['recurrence']['COUNT'])
|
||||
$master['recurrence']['COUNT']--;
|
||||
}
|
||||
else { // add exception to master event
|
||||
$master['recurrence']['EXDATE'][] = $event['start'];
|
||||
}
|
||||
$success = $storage->update_event($master);
|
||||
break;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue