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