• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/google/outgoingeventmanager.php
  • Класс: BitrixCalendarSyncGoogleOutgoingEventManager
  • Вызов: OutgoingEventManager::prepareContextForHttpQuery
private function prepareContextForHttpQuery(
	SyncEvent $syncEvent,
	SyncSection $syncSection,
	array $syncEventList,
	EventManager $eventManager
): array
{
	$method = $this->calculateHttpMethod($syncEvent);

	$eventContext = (new EventContext())->setSectionConnection($syncSection->getSectionConnection());
	if ($syncEvent->isInstance())
	{
		if ($eventConnection = $syncEvent->getEventConnection())
		{
			$eventContext->setEventConnection($eventConnection);
		}
		else
		{
			$this->prepareEventContextForInstance($syncEventList[$syncEvent->getUid()], $syncEvent, $eventContext);
			$this->prepareEventForInstance($syncEventList[$syncEvent->getUid()], $syncEvent);
			$syncEvent->setEventConnection($eventContext->getEventConnection());
		}

		if (
			($eventContext->getSectionConnection() === null)
			|| ($eventContext->getEventConnection() === null)
		)
		{
			throw new LogicException('you should set event or section info');
		}

		$methodHeader = $method . ' ' . $eventManager->prepareUpdateUrl($eventContext) . self::LINE_SEPARATOR;
		$converter = $this->getEventConverter($syncEvent);
		$vendorEvent = $converter->convertForUpdate();
	}
	elseif ($syncEvent->getEventConnection() !== null)
	{
		$eventContext->setEventConnection($syncEvent->getEventConnection());
		$methodHeader = $method . ' ' . $eventManager->prepareUpdateUrl($eventContext) . self::LINE_SEPARATOR;
		$converter = $this->getEventConverter($syncEvent);
		$vendorEvent = $converter->convertForUpdate();
	}
	elseif ($method !== Dictionary::SYNC_EVENT_ACTION['delete'])
	{
		$methodHeader = $method . ' ' . $eventManager->prepareCreateUrl($eventContext) . self::LINE_SEPARATOR;
		$converter = $this->getEventConverter($syncEvent);
		$vendorEvent = $converter->convertForCreate();
	}
	else
	{
		throw new LogicException('do not detect action');
	}

	return [$methodHeader, $vendorEvent];
}