- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
- Класс: CCalendar
- Вызов: CCalendar::GetDavCalendarEventsList
static function GetDavCalendarEventsList($calendarId, $arFilter = [])
{
[$sectionId, $entityType, $entityId] = $calendarId;
self::SetOffset(false, 0);
$arFilter1 = array(
'OWNER_ID' => $entityId,
'DELETED' => 'N',
);
if (isset($arFilter['DAV_XML_ID']))
{
unset($arFilter['DATE_START'], $arFilter['FROM_LIMIT'], $arFilter['DATE_END'], $arFilter['TO_LIMIT']);
}
else
{
if (isset($arFilter['DATE_START']))
{
$arFilter['FROM_LIMIT'] = $arFilter['DATE_START'];
unset($arFilter['DATE_START']);
}
if (isset($arFilter['DATE_END']))
{
$arFilter['TO_LIMIT'] = $arFilter['DATE_END'];
unset($arFilter['DATE_END']);
}
}
$fetchMeetings = true;
if ($sectionId > 0)
{
$arFilter['SECTION'] = $sectionId;
$fetchMeetings = false;
if ($entityType === 'user')
{
$fetchMeetings = self::GetMeetingSection($entityId) == $sectionId;
}
}
$arFilter = array_merge($arFilter1, $arFilter);
$arEvents = CCalendarEvent::GetList(
array(
'arFilter' => $arFilter,
'getUserfields' => false,
'parseRecursion' => false,
'fetchAttendees' => false,
'fetchMeetings' => $fetchMeetings,
'userId' => self::GetCurUserId(),
)
);
$result = [];
foreach ($arEvents as $event)
{
if ($event['IS_MEETING'] && $event["MEETING_STATUS"] === 'N')
{
continue;
}
// Skip events from where owner is host of the meeting and it's meeting from other section
if (
$entityType === 'user'
&& $event['IS_MEETING']
&& (int)$event['MEETING_HOST'] === (int)$entityId
&& (int)$event['SECT_ID'] !== (int)$sectionId
)
{
continue;
}
$event['XML_ID'] = $event['DAV_XML_ID'];
if ($event['LOCATION'] !== '')
{
$event['LOCATION'] = self::GetTextLocation($event['LOCATION']);
}
$event['RRULE'] = CCalendarEvent::ParseRRULE($event['RRULE']);
$result[] = $event;
}
return $result;
}