• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/vendordataexchangemanager.php
  • Класс: BitrixCalendarSyncManagersVendorDataExchangeManager
  • Вызов: VendorDataExchangeManager::handleSyncEvent
public function handleSyncEvent(
	SyncEntitiesSyncEvent $syncEvent,
	?string $key = null,
	?SyncEntitiesSyncEvent $masterSyncEvent = null
): void
{
	if ($syncEvent->getEventConnection() === null)
	{
		return;
	}

	if ($masterSyncEvent !== null)
	{
		$syncEvent->getEvent()->setRecurrenceId($masterSyncEvent->getId());
	}

	$this->mergeExternalEventWithLocalParams($syncEvent);

	if ($syncEvent->getAction() === SyncDictionary::SYNC_EVENT_ACTION['delete'])
	{
		//if we drag out an old event that has not been saved in our system
		if ($syncEvent->getEvent()->getId() === null)
		{
			if ($syncEvent->isInstance())
			{
				if ($masterSyncEvent === null)
				{
					$masterSyncEvent = $this->getMasterSyncEvent($syncEvent);
				}
				if (!$masterSyncEvent)
				{
					return;
				}

				if ($masterSyncEvent->getAction() === SyncDictionary::SYNC_EVENT_ACTION['delete'])
				{
					return;
				}

				if ($masterSyncEvent->getId() === null)
				{
					$this->handleSyncEvent($masterSyncEvent);

					return;
				}

				$this->updateMasterExdate($this->addExdateToMasterEvent($masterSyncEvent, $syncEvent));
			}

			return;
		}

		$this->deleteEvent($syncEvent);

		return;
	}

	$this->saveEvent($syncEvent);

	if (
		$masterSyncEvent
		&& $masterSyncEvent->getId()
		&& $syncEvent->isInstance()
	)
	{
		$this->updateMasterExdate($this->addExdateToMasterEvent($masterSyncEvent, $syncEvent));
	}
}