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
|
* 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
|
// use Horde classes to compute recurring instances
|
||||||
require_once($this->cal->home . '/lib/Horde_Date_Recurrence.php');
|
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)
|
public function remove_event($event, $force = true)
|
||||||
{
|
{
|
||||||
$success = false;
|
$success = false;
|
||||||
|
$_savemode = $event['_savemode'];
|
||||||
|
|
||||||
if (($storage = $this->calendars[$event['calendar']]) && ($event = $storage->get_event($event['id']))) {
|
if (($storage = $this->calendars[$event['calendar']]) && ($event = $storage->get_event($event['id']))) {
|
||||||
|
$event['_savemode'] = $_savemode;
|
||||||
$savemode = 'all';
|
$savemode = 'all';
|
||||||
$master = $event;
|
$master = $event;
|
||||||
|
|
||||||
|
@ -484,8 +486,17 @@ class kolab_driver extends calendar_driver
|
||||||
|
|
||||||
switch ($savemode) {
|
switch ($savemode) {
|
||||||
case 'current':
|
case 'current':
|
||||||
// add exception to master event
|
// 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'];
|
$master['recurrence']['EXDATE'][] = $event['start'];
|
||||||
|
}
|
||||||
$success = $storage->update_event($master);
|
$success = $storage->update_event($master);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue