- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_sync.php
- Класс: CCalendarSync
- Вызов: CCalendarSync::ModifyReccurentInstances
static function ModifyReccurentInstances($params = array())
{
CCalendar::SetSilentErrorMode();
$parentEvent = CCalendarEvent::GetById($params['parentId']);
if ($parentEvent && CCalendarEvent::CheckRecurcion($parentEvent))
{
$excludeDates = CCalendarEvent::GetExDate($parentEvent['EXDATE']);
foreach ($params['events'] as $arFields)
{
if (isset($parentEvent['IS_MEETING']) && $parentEvent['IS_MEETING'])
{
$arFields['IS_MEETING'] = $parentEvent['IS_MEETING'];
$arFields['MEETING_HOST'] = $parentEvent['MEETING_HOST'];
$arFields['MEETING'] = $parentEvent['MEETING'];
$arFields['ATTENDEES_CODES'] = $parentEvent['ATTENDEES_CODES'];
}
$arFields['RECURRENCE_ID'] = $parentEvent['ID'];
self::ModifyEvent(
$params['calendarId'],
$arFields,
[
'handleMeetingParams' => $parentEvent['IS_MEETING'],
'sendInvitations' => false,
]);
if ($arFields['RECURRENCE_ID_DATE'])
{
$excludeDates[] = CCalendar::Date(CCalendar::Timestamp($arFields['RECURRENCE_ID_DATE']), false);
}
}
$res = CCalendar::SaveEventEx(array(
'arFields' => array(
'ID' => $parentEvent['ID'],
'EXDATE' => CCalendarEvent::SetExDate($excludeDates)
),
'bSilentAccessMeeting' => true,
'recursionEditMode' => 'skip',
'silentErrorMode' => true,
'sendInvitations' => false,
'bAffectToDav' => false,
'sendEditNotification' => false
));
}
CCalendar::SetSilentErrorMode(false);
}