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