• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_restservice.php
  • Класс: CCalendarRestService
  • Вызов: CCalendarRestService::EventGetNearest
static function EventGetNearest($params = [], $nav = null, $server = null)
{
	$userId = CCalendar::GetCurUserId();
	$methodName = "calendar.event.get.nearest";

	if (!isset($params['type'], $params['ownerId']) || $params['forCurrentUser'])
	{
		$params['type'] = 'user';
		$params['ownerId'] = $userId;
		$params['forCurrentUser'] = true;
	}

	if (!isset($params['days']))
	{
		$params['days'] = 60;
	}

	// Limits
	$ts = time();
	$fromLimit = CCalendar::Date($ts, false);
	$toLimit = CCalendar::Date($ts + CCalendar::DAY_LENGTH * $params['days'], false);

	$arEvents = CCalendar::GetNearestEventsList(
		array(
			'bCurUserList' => (bool)$params['forCurrentUser'],
			'fromLimit' => $fromLimit,
			'toLimit' => $toLimit,
			'type' => $params['CALENDAR_TYPE'],
			'sectionId' => $params['CALENDAR_SECTION_ID'],
			'fromRest' => true,
		));

	if ($arEvents === 'access_denied' || $arEvents === 'inactive_feature')
	{
		throw new RestException(Loc::getMessage('CAL_REST_ACCESS_DENIED'));
	}

	if (is_array($arEvents))
	{

		if (isset($params['detailUrl']))
		{
			if (mb_strpos($params['detailUrl'], '?') !== FALSE)
			{
				$params['detailUrl'] = mb_substr($params['detailUrl'], 0, mb_strpos($params['detailUrl'], '?'));
			}
			$params['detailUrl'] = str_replace('#user_id#', $userId, mb_strtolower($params['detailUrl']));

			foreach ($arEvents as $i => $event)
			{
				$arEvents[$i]['~detailUrl'] = CHTTP::urlAddParams($params['detailUrl'], ['EVENT_ID' => $event['ID'], 'EVENT_DATE' => $event['DATE_FROM']]);
			}
		}

		if (isset($params['maxEventsCount']))
		{
			array_splice($arEvents, (int)$params['maxEventsCount']);
		}
	}

	return $arEvents;
}