- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/vendordataexchangemanager.php
- Класс: BitrixCalendarSyncManagersVendorDataExchangeManager
- Вызов: VendorDataExchangeManager::handleMerge
public function handleMerge(
SyncEntitiesSyncEventMap $localEventCollection,
string $vendorId,
SyncEventMergeHandler $handlerMerge,
SyncEntitiesSyncEvent $syncEvent,
?SyncConnectionEventConnection $eventConnection,
CoreEventEvent $event,
SyncEntitiesSyncSection $syncSection
): CoreEventEvent
{
$mergedSyncEvent = null;
if ($localEventCollection->has($vendorId))
{
$mergedSyncEvent = $handlerMerge(
$localEventCollection->getItem($vendorId),
$syncEvent,
$localEventCollection->getItem($vendorId)->getEvent()->getId()
);
$eventConnection->setId($localEventCollection->getItem($vendorId)->getEventConnection()->getId());
}
elseif (
$syncEvent->getEventConnection()
&& $localEventCollection->has($syncEvent->getEventConnection()
->getRecurrenceId())
)
{
/** @var SyncEntitiesSyncEvent $masterSyncEvent */
$masterSyncEvent = $localEventCollection->getItem($syncEvent->getEventConnection()->getRecurrenceId());
// merge with master event
$mergedSyncEvent = $handlerMerge(
$masterSyncEvent,
$syncEvent
);
$mergedSyncEvent->getEvent()->setRecurrenceId($masterSyncEvent->getEvent()->getId())
;
}
if ($mergedSyncEvent !== null)
{
$event = $mergedSyncEvent->getEvent();
}
else
{
$this->prepareNewEvent($event, $syncSection);
}
return $event;
}