- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/synchronization.php
- Класс: BitrixCalendarSyncManagersSynchronization
- Вызов: Synchronization::createRecurrence
public function createRecurrence(Event $event, Context $context): Result
{
// if (empty($event->getRecurringRule()))
// {
// return $this->createEvent($event, $context);
// }
$eventExceptionsMap = $this->getEventExceptionsMap($event);
$mainResult = new Result();
$data = [];
$eventCloner = new CoreBuildersEventCloner($event);
/** @var FactoryInterface $factory */
foreach ($this->factories as $factory)
{
if ($this->checkExclude($factory, $context))
{
continue;
}
try
{
$safeEvent = $eventCloner->build();
$vendorSyncManager = $this->getVendorSynchronization($factory);
$eventContext = $this->prepareEventContext($safeEvent, $context, $factory);
$syncEvent = $this->prepareRecurrenceEvent($safeEvent, $eventExceptionsMap);
$vendorResult = $vendorSyncManager->createRecurrence($syncEvent, $eventContext);
$data[$this->getVendorCode($factory)] = $vendorResult;
if (!$vendorResult->isSuccess())
{
$mainResult->addErrors($vendorResult->getErrors());
}
}
catch (RemoteAccountException $e)
{
$mainResult->addError(new Error($e->getMessage(), $e->getCode()));
}
}
return $mainResult->setData($data);
}