- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/core/managers/accessibility.php
- Класс: BitrixCalendarCoreManagersAccessibility
- Вызов: Accessibility::getAbsences
public function getAbsences(array $userIds, int $timestampFromUTC, int $timestampToUTC): array
{
if (!CCalendar::IsIntranetEnabled())
{
return [];
}
[$from, $to] = $this->formatLimitFromTimestamps($timestampFromUTC, $timestampToUTC);
$usersAbsence = CIntranetUtils::GetAbsenceData(
array(
'DATE_START' => $from,
'DATE_FINISH' => $to,
'USERS' => $userIds,
'PER_USER' => true,
),
BX_INTRANET_ABSENCE_HR
);
$serverOffset = (int)date('Z');
$userOffset = CCalendar::GetOffset(CCalendar::GetUserId());
$accessibility = $this->initAccessibility($userIds);
foreach($usersAbsence as $userId => $absenceData)
{
foreach($absenceData as $event)
{
$fromUTC = CCalendar::TimestampUTC($event['DATE_ACTIVE_FROM']);
$toUTC = CCalendar::TimestampUTC($event['DATE_ACTIVE_TO']);
$isFullDay = $this->isFullDay($event['DATE_ACTIVE_FROM'], $event['DATE_ACTIVE_TO']);
if ($this->isDateWithoutTimeOrIsMidnight($event['DATE_ACTIVE_TO']))
{
$toUTC += CCalendar::GetDayLen();
}
if ($isFullDay)
{
$from = Util::formatDateTimestampUTC($fromUTC);
$to = Util::formatDateTimestampUTC($toUTC);
}
else
{
$from = Util::formatDateTimeTimestampUTC($fromUTC - $serverOffset - $userOffset);
$to = Util::formatDateTimeTimestampUTC($toUTC - $serverOffset - $userOffset);
}
$accessibility[$userId][] = [
'from' => $from,
'to' => $to,
'isFullDay' => $isFullDay,
'name' => $event['PROPERTY_ABSENCE_TYPE_VALUE'] ?? null,
];
}
}
return $accessibility;
}