- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/vendordataexchangemanager.php
- Класс: BitrixCalendarSyncManagersVendorDataExchangeManager
- Вызов: VendorDataExchangeManager::mergeExternalEventWithLocalParams
private function mergeExternalEventWithLocalParams(SyncEntitiesSyncEvent $syncEvent): void
{
/** @var SyncEntitiesSyncEvent $existsSyncEvent */
if ($existsSyncEvent = $this->syncEventMap->getItem($syncEvent->getEventConnection()->getVendorEventId()))
{
$this->mergeSyncEvent(
$existsSyncEvent,
$syncEvent,
$existsSyncEvent->getEventId(),
$existsSyncEvent->getEventConnection()->getId()
);
if (
$syncEvent->isRecurrence()
&& $syncEvent->hasInstances()
)
{
foreach ($syncEvent->getInstanceMap() as $instanceSyncEvent)
{
if (
$existsSyncEvent->hasInstances()
&& $instanceSyncEvent->getEvent()->getOriginalDateFrom()
&& $existsInstanceSyncEvent = $existsSyncEvent->getInstanceMap()->getItem(
SyncEntitiesInstanceMap::getKeyByDate(
$instanceSyncEvent->getEvent()->getOriginalDateFrom()
)
)
)
{
$this->mergeSyncEvent(
$existsInstanceSyncEvent,
$instanceSyncEvent,
$existsInstanceSyncEvent->getEventId(),
$existsInstanceSyncEvent->getEventConnection()->getId()
);
}
else
{
$this->prepareNewSyncEvent($syncEvent);
}
}
}
return;
}
/** @var SyncEntitiesSyncEvent $existsMasterSyncEvent */
if ($existsMasterSyncEvent = $this->syncEventMap->getItem($syncEvent->getEventConnection()->getRecurrenceId()))
{
if (
$existsMasterSyncEvent->hasInstances()
&& $syncEvent->getEvent()->getOriginalDateFrom()
&& $existsInstanceSyncEvent = $existsMasterSyncEvent->getInstanceMap()->getItem(
SyncEntitiesInstanceMap::getKeyByDate(
$syncEvent->getEvent()->getOriginalDateFrom()
)
)
)
{
$this->mergeSyncEvent(
$existsInstanceSyncEvent,
$syncEvent,
$existsInstanceSyncEvent->getEventId(),
$existsInstanceSyncEvent->getEventConnection()->getId()
);
return;
}
$this->mergeSyncEvent($existsMasterSyncEvent, $syncEvent);
return;
}
if ($syncEvent->getAction() !== SyncDictionary::SYNC_EVENT_ACTION['delete'])
{
$this->prepareNewSyncEvent($syncEvent);
}
}