- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/datasyncmanager.php
- Класс: BitrixCalendarSyncManagersDataSyncManager
- Вызов: DataSyncManager::modifyEvent
private function modifyEvent(
Connection $connection,
CDavGroupdavClientCalendar $client,
array $event,
array $eventsMap,
array $calendar
): void
{
if (!array_key_exists($event['href'], $eventsMap))
{
return;
}
$eventId = null;
$existEvent = $eventsMap[$event['href']];
if (empty($event['calendar-data']))
{
return;
}
[$event, $exDate] = $this->mergeExternalEventWithLocal($existEvent, $event, $client);
if (!empty($event['calendar-data']) && is_array($event['calendar-data']))
{
$eventId = $this->modifySingleEvent(
$connection,
$event['calendar-data'],
[
'SECTION_ID' => $calendar['SECTION_ID'],
'VERSION' => $existEvent['VERSION'],
'EVENT_CONNECTION_ID' => $eventsMap[$event['href']]['EVENT_CONNECTION_ID'],
]
);
}
if ($eventId && !empty($event['calendar-data-ex'] && is_array($event['calendar-data-ex'])))
{
$this->modifyRecurrenceEvent(
$connection,
$event['calendar-data-ex'],
[
'PARENT_ID' => $eventId,
'SECTION_ID' => $calendar['SECTION_ID'],
'PERIOD_UNTIL' => $event['calendar-data']['PROPERTY_PERIOD_UNTIL'] ?? null,
]
);
}
else if ($exDate && $event['calendar-data'] && $event['calendar-data']['ID'])
{
$this->deleteDuplicateExDates(
$exDate,
$event['calendar-data']['DATE_FROM'],
$event['calendar-data']['ID'],
$connection->getOwner()->getId(),
);
}
}