diff --git a/lib/kolab_sync_data_calendar.php b/lib/kolab_sync_data_calendar.php --- a/lib/kolab_sync_data_calendar.php +++ b/lib/kolab_sync_data_calendar.php @@ -803,13 +803,21 @@ throw new Syncroton_Exception_Status_MeetingResponse(Syncroton_Exception_Status_MeetingResponse::INVALID_REQUEST); } - if ($event['free_busy']) { - $old['free_busy'] = $event['free_busy']; + // Update event properties + // FIXME: Can we be smarter here? Should we update everything? What about e.g. new attendees? + if (isset($event['sequence']) && $event['sequence'] > $old['sequence']) { + $props = ['start', 'end', 'title', 'description', 'location', 'free_busy', 'sequence']; + foreach ($props as $prop) { + if (isset($event[$prop])) { + $old[$prop] = $event[$prop]; + } + } + } + else { + // Updating an existing event is most-likely a response + // to an iTip request with bumped SEQUENCE + $old['sequence'] += 1; } - - // Updating an existing event is most-likely a response - // to an iTip request with bumped SEQUENCE - $old['sequence'] += 1; // Copy new custom properties if (!empty($event['x-custom'])) {