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