Calendar: Fix restoring an event (or event occurrence) in the Kolab driver (T854626)
This commit is contained in:
parent
57ed29ef68
commit
99717b0877
3 changed files with 9 additions and 4 deletions
|
@ -529,6 +529,11 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
return false;
|
||||
}
|
||||
|
||||
// When updating an event (e.g. when restoring an event occurrence)
|
||||
// the message UID might be outdated. Use the updated UID from database.
|
||||
// See kolab_driver::restore_event().
|
||||
$event['_msguid'] = $old['_msguid'];
|
||||
|
||||
// email links are stored separately
|
||||
$links = !empty($event['links']) ? $event['links'] : [];
|
||||
unset($event['links']);
|
||||
|
|
|
@ -880,7 +880,7 @@ class kolab_driver extends calendar_driver
|
|||
|
||||
switch ($savemode) {
|
||||
case 'current':
|
||||
$_SESSION['calendar_restore_event_data'] = $master;
|
||||
$_SESSION['calendar_restore_event_data'] = serialize(array_diff_key($master, ['_formatobj' => 1]));
|
||||
|
||||
// remove the matching RDATE entry
|
||||
if (!empty($master['recurrence']['RDATE'])) {
|
||||
|
@ -901,7 +901,7 @@ class kolab_driver extends calendar_driver
|
|||
case 'future':
|
||||
$master['_instance'] = libcalendaring::recurrence_instance_identifier($master);
|
||||
if ($master['_instance'] != $event['_instance']) {
|
||||
$_SESSION['calendar_restore_event_data'] = $master;
|
||||
$_SESSION['calendar_restore_event_data'] = serialize(array_diff_key($master, ['_formatobj' => 1]));
|
||||
|
||||
// set until-date on master event
|
||||
$master['recurrence']['UNTIL'] = clone $event['start'];
|
||||
|
@ -984,7 +984,7 @@ class kolab_driver extends calendar_driver
|
|||
{
|
||||
if ($storage = $this->get_calendar($event['calendar'])) {
|
||||
if (!empty($_SESSION['calendar_restore_event_data'])) {
|
||||
$success = $storage->update_event($event = $_SESSION['calendar_restore_event_data']);
|
||||
$success = $storage->update_event($event = unserialize($_SESSION['calendar_restore_event_data']));
|
||||
}
|
||||
else {
|
||||
$success = $storage->restore_event($event);
|
||||
|
|
|
@ -533,7 +533,7 @@ class kolab_storage_cache
|
|||
}
|
||||
|
||||
$this->check_error();
|
||||
return $this->objects[$msguid];
|
||||
return $this->objects[$msguid] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue