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