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