• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/integration/dav/syncadapter.php
  • Класс: BitrixCalendarIntegrationDavSyncAdapter
  • Вызов: SyncAdapter::getEventList
static function getEventList($sectionId = false, $params = [])
{
	$entryList = [];

	if ($params['entityType'] === 'user')
	{
		$userId = $params['entityId'];
		if ($sectionId === CCalendar::TASK_SECTION_ID)
		{
			$entryList = self::getTaskList($userId);
		}
		else
		{
			CCalendar::SetOffset(false, 0);
			$filter = [
				'DELETED' => 'N'
			];

			if (isset($params['filter']['DAV_XML_ID']))
			{
				$filter['DAV_XML_ID'] = $params['filter']['DAV_XML_ID'];
			}
			else
			{
				if (isset($params['filter']['DATE_START']))
				{
					$filter['FROM_LIMIT'] = $params['filter']['DATE_START'];
				}
				if (isset($params['filter']['DATE_END']))
				{
					$filter['TO_LIMIT'] = $params['filter']['DATE_END'];
				}
			}

			if ($sectionId > 0)
			{
				$filter['SECTION'] = $sectionId;
			}

			$events = CCalendarEvent::GetList(
				array(
					'arFilter' => $filter,
					'getUserfields' => false,
					'parseRecursion' => false,
					'fetchAttendees' => false,
					'fetchMeetings' => !$sectionId || CCalendar::getMeetingSection($userId, true) == $sectionId,
					'userId' => $userId
				)
			);

			foreach ($events as $event)
			{
				// Skip events from where owner is host of the meeting and it's meeting from other section
				// or declined events
				if($event['IS_MEETING'] && ($event["MEETING_STATUS"] == 'N' || ($event['MEETING_HOST'] == $userId && $event['SECTION_ID'] != $sectionId)))
				{
					continue;
				}

				$event['XML_ID'] = $event['DAV_XML_ID'];
				$event['LOCATION'] = CCalendar::GetTextLocation($event['LOCATION']);
				$event['RRULE'] = CCalendarEvent::ParseRRULE($event['RRULE']);
				$entryList[] = $event;
			}
		}
	}

	return $entryList;
}