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 @@ -596,7 +596,11 @@ $event = $this->get_event_from_invitation($request); // find the event in calendar - $existing = $this->find_event_by_uid($event['uid']); + if (array_key_exists('uid', $event)) { + $existing = $this->find_event_by_uid($event['uid']); + } else { + $existing = $this->find_event_by_uid($event->uID); + } /* switch ($status) { case 'ACCEPTED': $event['free_busy'] = 'busy'; break; @@ -665,7 +669,11 @@ // as it's expected by the specification. Server // should delete an event in such a case, but we // keep the event copy with appropriate attendee status instead. - return empty($status) ? null : $this->serverId($event['uid'], $folder); + return empty($status) ? null : ( + array_key_exists('uid', $event) ? + $this->serverId($event['uid'], $folder) : + $this->serverId($event->uID, $folder) + ); } /** @@ -684,6 +692,14 @@ return $event; } + $collection = new Syncroton_Model_SyncCollection( + array('collectionId' => $request->collectionId) + ); + + if ($event = $this->getEntry($collection, $request->requestId)) { + return $event; + } + throw new Syncroton_Exception_Status_MeetingResponse(Syncroton_Exception_Status_MeetingResponse::INVALID_REQUEST); } @@ -723,8 +739,10 @@ $this->update_attendee_status($old, $status); - if ($event['free_busy']) { - $old['free_busy'] = $event['free_busy']; + if (array_key_exists('free_busy', $event)) { + if ($event['free_busy']) { + $old['free_busy'] = $event['free_busy']; + } } // Updating an existing event is most-likely a response