- Модуль: 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());
}
}