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