• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/datasyncmanager.php
  • Класс: BitrixCalendarSyncManagersDataSyncManager
  • Вызов: DataSyncManager::deleteDuplicateExDates
private function deleteDuplicateExDates($exDate, $dateFrom, $eventId, $userId): void
{
	global $DB;
	$exDates = CCalendarEvent::GetExDate($exDate);
	$dtStartTimestamp = CCalendar::Timestamp($dateFrom, false);
	$needToUpdate = false;
	foreach ($exDates as $date)
	{
		$dateTs = CCalendar::Timestamp($date, false);
		if ($dateTs < $dtStartTimestamp)
		{
			$needToUpdate = true;
			break;
		}
	}

	if ($needToUpdate)
	{
		$childEvents = EventConnectionTable::query()
			->setSelect([
	            'EVENT_ID',
	            'VERSION',
	            'DATE_FROM' => 'EVENT.DATE_FROM',
	            'EVENT_CONNECTION_ID' => 'ID',
			])
			->where('EVENT.RECURRENCE_ID', $eventId)
			->where('EVENT.DELETED', 'N')
			->where('EVENT.OWNER_ID', $userId)
			->exec()
		;

		while ($child = $childEvents->fetch())
		{
			$eventIdList = $this->getAllEventByParentId($child['EVENT_ID']);

			EventTable::updateMulti($eventIdList, ['DELETED' => 'Y']);

			EventConnectionTable::delete($child['EVENT_CONNECTION_ID']);
		}
	}
}