38 $data = $this->getApiService()->createEvent(
$context->getSectionConnection()->getVendorSectionId(),
$event);
40 if ($this->getApiService()->getError())
42 $this->processConnectionError($this->connection, $this->getApiService()->getError());
49 'id' =>
$data[
'XML_ID'],
50 'version' =>
$data[
'MODIFICATION_LABEL'],
51 'etag' =>
$data[
'MODIFICATION_LABEL'],
57 $result->addError(
new Error(
'Error while trying to save event'));
78 $event->setUid(
$context->getEventConnection()->getVendorEventId());
80 $context->getEventConnection()->setData(
$context->getEventConnection()->fetchData());
82 if (
$event->getRecurringRule())
87 $data = $this->getApiService()->updateEvent(
88 $context->getSectionConnection()->getVendorSectionId(),
90 $context->getEventConnection()->getData()
93 if ($this->getApiService()->getError())
95 $this->processConnectionError($this->connection, $this->getApiService()->getError());
102 'id' =>
$data[
'XML_ID'],
103 'version' =>
$data[
'MODIFICATION_LABEL'],
104 'etag' =>
$data[
'MODIFICATION_LABEL'],
110 $result->addError(
new Error(
'Error while trying to update event'));
128 $sectionId =
$context->getSectionConnection()->getVendorSectionId();
129 $event->setUid(
$context->getEventConnection()->getVendorEventId());
131 $data = $this->getApiService()->deleteEvent($sectionId,
$event);
133 if ($this->getApiService()->getError())
135 $this->processConnectionError($this->connection, $this->getApiService()->getError());
140 $result->addError(
new Error(
'Error while trying delete event'));
195 $masterLink =
$context->getEventConnection();
204 $sectionId =
$context->getSectionConnection()->getVendorSectionId();
205 $masterEvent = $masterLink->getEvent();
206 $masterEvent->setUid($masterLink->getVendorEventId());
208 $data = $this->getApiService()->saveInstance(
211 $masterLink->getData()
214 if ($this->getApiService()->getError())
216 $this->processConnectionError($this->connection, $this->getApiService()->getError());
223 'id' =>
$data[
'XML_ID'],
224 'version' =>
$data[
'MODIFICATION_LABEL'],
225 'etag' =>
$data[
'MODIFICATION_LABEL'],
231 $result->addError(
new Error(
'Error while trying to save instance'));
252 $masterLink =
$context->getEventConnection();
261 $sectionId =
$context->getSectionConnection()->getVendorSectionId();
262 $excludeDate =
$context->sync[
'excludeDate'];
263 $masterEvent = $masterLink->getEvent();
264 $masterEvent->setUid($masterLink->getVendorEventId());
266 $data = $this->getApiService()->saveInstance(
269 $masterLink->getData(),
273 if ($this->getApiService()->getError())
275 $this->processConnectionError($this->connection, $this->getApiService()->getError());
282 'id' =>
$data[
'XML_ID'],
283 'version' =>
$data[
'MODIFICATION_LABEL'],
284 'etag' =>
$data[
'MODIFICATION_LABEL'],
290 $result->addError(
new Error(
'Error while trying to delete instance'));
309 public function saveRecurrence(
316 $sectionId =
$context->sync[
'vendorSectionId'];
318 $data = $this->getApiService()->saveRecurrence($sectionId, $recurrenceEvent);
320 if ($this->getApiService()->getError())
322 $this->processConnectionError($sectionConnection->getConnection(), $this->getApiService()->getError());
327 $masterEvent = $recurrenceEvent;
329 $this->prepareLink($masterEvent, $sectionConnection,
$data[
'XML_ID'],
$data[
'MODIFICATION_LABEL']);
332 foreach ($recurrenceEvent->getInstanceMap()->getCollection() as
$instance)
334 $this->prepareLink(
$instance, $sectionConnection,
$data[
'XML_ID']);
335 $instance->getEventConnection()->setRecurrenceId(
$data[
'XML_ID']);
340 $result->addError(
new Error(
'Error while trying to save recurrence event'));
364 return $this->saveRecurrence($recurrenceEvent, $sectionConnection,
$context);
385 return $this->saveRecurrence($recurrenceEvent, $sectionConnection,
$context);
393 if (!$this->apiService)
398 return $this->apiService;
409 private function prepareLink(
413 ?
string $entityTag =
null
416 if (
$event->getEventConnection())
418 $event->getEventConnection()
419 ->setLastSyncStatus(
Calendar\
Sync\Dictionary::SYNC_STATUS[
'success'])
420 ->setEntityTag($entityTag);
424 $link = (
new EventConnection())
426 ->setEvent(
$event->getEvent())
427 ->setVersion(
$event->getEvent()->getVersion())
429 ->setVendorEventId($vendorId)
430 ->setEntityTag($entityTag)
431 ->setLastSyncStatus(
Calendar\Sync\Dictionary::SYNC_STATUS[
'success'])
433 $event->setEventConnection($link);
446 \CDavConnection::SetLastResult(
$connection->getId(), $parsedError);