• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/outgoingmanager.php
  • Класс: BitrixCalendarSyncManagersOutgoingManager
  • Вызов: OutgoingManager::buildRecurrenceEvent
private function buildRecurrenceEvent(array $eventData): SyncEvent
{
	$masterEvent = $this->mapperFactory->getEvent()->getByEntityObject($eventData['master']);
	$masterLink = $this->getEventLink($eventData['master']);
	$masterSyncEvent = (new SyncEvent())
		->setEvent($masterEvent)
		->setEventConnection($masterLink)
	;
	if ($masterSyncEvent->getEventConnection() && !$masterSyncEvent->getEventConnection()->getVendorEventId())
	{
		$this->mapperFactory->getEventConnection()->delete($masterSyncEvent->getEventConnection());
		$masterSyncEvent->setEventConnection(null);
	}

	$instancesCollection = new InstanceMap();
	$instances = $eventData['instances'] ?? [];
	foreach ($instances as $instance)
	{
		$instanceEvent = $this->mapperFactory->getEvent()->getByEntityObject($instance);
		$instanceLink = $this->getEventLink($instance);
		$instanceSyncEvent = (new SyncEvent())
			->setEvent($instanceEvent)
			->setEventConnection($instanceLink)
		;

		if ($instanceSyncEvent->getEventConnection() && !$instanceSyncEvent->getEventConnection()->getVendorEventId())
		{
			$this->mapperFactory->getEventConnection()->delete($instanceSyncEvent->getEventConnection());
			$instanceSyncEvent->setEventConnection(null);
		}
		$instancesCollection->add($instanceSyncEvent);
	}

	$masterSyncEvent->setInstanceMap($instancesCollection);

	return $masterSyncEvent;
}