• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_event_handlers.php
  • Класс: CCalendarEventHandlers
  • Вызов: CCalendarEventHandlers::getEvent
static function getEvent($arParams)
{
	global $USER;

	$userId = $USER->GetID();
	$date_from = CCalendar::Date(time() - date('Z', time()) + CCalendar::GetCurrentOffsetUTC(), false);
	$ts_date_from = CCalendar::Timestamp($date_from) - CCalendar::GetCurrentOffsetUTC();
	$date_from = CCalendar::Date($ts_date_from);
	$date_to = $date_from;
	$ts_date_to = $ts_date_from + CCalendar::GetDayLen() - 1;

	$res = CCalendarEvent::GetList(
		array(
			'arFilter' => array(
				"ID" => $arParams['ID'],
				"FROM_LIMIT" => $date_from,
				"TO_LIMIT" => $date_to
			),
			'parseRecursion' => true,
			'fetchAttendees' => true,
			'checkPermissions' => true,
			'skipDeclined' => true
		)
	);

	$arEvents = array();
	foreach ($res as $arEvent)
	{
		if ($arEvent['IS_MEETING'] && $arEvent['MEETING_STATUS'] === 'N')
		{
			continue;
		}
		$fromTo = CCalendarEvent::GetEventFromToForUser($arEvent, $userId);

		if ($arEvent['RRULE'])
		{
			$ts_from_utc = $fromTo['TS_FROM'] - CCalendar::GetCurrentOffsetUTC();
			$ts_to_utc = $ts_from_utc + $arEvent['DT_LENGTH'];
			if ($ts_to_utc <= $ts_date_from || $ts_from_utc >= $ts_date_to)
			{
				continue;
			}
		}

		$arEvents[] = $arEvent;
	}


	if (is_array($arEvents) && !empty($arEvents))
	{
		$arEvent = $arEvents[0];

		$arEvent['GUESTS'] = array();
		if ($arEvent['IS_MEETING'] && is_array($arEvent['ATTENDEE_LIST']))
		{
			$userIndex = CCalendarEvent::getUserIndex();
			foreach ($arEvent['ATTENDEE_LIST'] as $attendee)
			{
				if (isset($userIndex[$attendee["id"]]))
				{
					$arEvent['GUESTS'][] = array(
						'id' => $attendee['id'],
						'name' => $userIndex[$attendee["id"]]['DISPLAY_NAME'],
						'status' => $attendee['status'],
						'accessibility' => $arEvent['ACCESSIBILITY'],
						'bHost' => (int)$attendee['id'] === (int)$arEvent['MEETING_HOST'],
					);

					if ((int)$attendee['id'] === (int)$USER->GetID())
					{
						$arEvent['STATUS'] = $attendee['status'];
					}
				}
			}
		}

		$set = CCalendar::GetSettings();
		$url = str_replace(
			'#user_id#', $arEvent['CREATED_BY'], $set['path_to_user_calendar']
		).'?EVENT_ID='.$arEvent['ID'];

		$fromTo = CCalendarEvent::GetEventFromToForUser($arEvent, $USER->GetID());

		return [
			'ID' => $arEvent['ID'],
			'NAME' => $arEvent['NAME'],
			'DETAIL_TEXT' => $arEvent['DESCRIPTION'],
			'DATE_FROM' => $fromTo['DATE_FROM'],
			'DATE_TO' => $fromTo['DATE_TO'],
			'ACCESSIBILITY' => $arEvent['ACCESSIBILITY'],
			'IMPORTANCE' => $arEvent['IMPORTANCE'],
			'STATUS' => $arEvent['STATUS'],
			'IS_MEETING' => $arEvent['IS_MEETING'] ? 'Y' : 'N',
			'GUESTS' => $arEvent['GUESTS'],
			'UF_WEBDAV_CAL_EVENT' => $arEvent['UF_WEBDAV_CAL_EVENT'],
			'URL' => $url,
		];
	}
}