• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/vendordataexchangemanager.php
  • Класс: BitrixCalendarSyncManagersVendorDataExchangeManager
  • Вызов: VendorDataExchangeManager::handleEventsToLocalStorage
private function handleEventsToLocalStorage(SyncEntitiesSyncEventMap $externalSyncEventMap): void
{
	/** @var SyncEntitiesSyncEvent $syncEvent */
	foreach ($externalSyncEventMap as $key => $syncEvent)
	{
		/** @var SyncEntitiesSyncEvent $existsExternalSyncEvent */
		$existsExternalSyncEvent = $this->syncEventMap->getItem($key);

		if (!$this->validateSyncEventChange($syncEvent, $existsExternalSyncEvent))
		{
			continue;
		}

		$masterSyncEvent = $this->getMasterSyncEvent($syncEvent);
		if (
			$masterSyncEvent
			&& ($syncEvent->isInstance() || $syncEvent->getVendorRecurrenceId())
			&& $masterSyncEvent->getId() !== $masterSyncEvent->getParentId()
		)
		{
			continue;
		}

		$this->handleSyncEvent($syncEvent, $syncEvent->getVendorEventId(), $masterSyncEvent);

		if (
			$existsExternalSyncEvent
			&& (
				$syncEvent->isRecurrence()
				|| ($syncEvent->getAction() === SyncDictionary::SYNC_EVENT_ACTION['delete'])
			)
		)
		{
			$this->removeDeprecatedInstances($existsExternalSyncEvent, $syncEvent);
		}

		if ($syncEvent->hasInstances())
		{
			$collection = $syncEvent->getInstanceMap()->getCollection();
			array_walk($collection, [$this, 'handleSyncEvent'], $syncEvent);
		}

		$this->syncEventMap->updateItem($syncEvent, $syncEvent->getVendorEventId());
	}
}