• Модуль: 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(),
		);
	}
}