- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/util/user.php
- Класс: BitrixTasksUtilUser
- Вызов: User::isAbsence
static function isAbsence(array $userIds)
{
if (!Loader::includeModule('intranet'))
{
return false;
}
if (empty($realUserIds = static::parseRealUsers($userIds)))
{
return [];
}
$dateNow = ConvertTimeStamp(false, 'SHORT');
$dateTimeNow = MakeTimeStamp(ConvertTimeStamp(false, 'FULL'));
$absenceData = CIntranetUtils::GetAbsenceData([
'USERS' => $realUserIds,
'DATE_START' => $dateNow,
'DATE_FINISH' => $dateNow,
'PER_USER' => false,
]);
if (empty($absenceData))
{
return [];
}
$list = [];
$userNames = static::getUserName(array_column($absenceData, 'USER_ID'));
foreach ($absenceData as $item)
{
if (array_key_exists('DATE_ACTIVE_FROM', $item) && array_key_exists('DATE_ACTIVE_TO', $item))
{
$absenceFrom = MakeTimeStamp($item['DATE_ACTIVE_FROM']);
$absenceTo = MakeTimeStamp($item['DATE_ACTIVE_TO']);
}
else
{
$absenceFrom = MakeTimeStamp($item['DATE_FROM']);
$absenceTo = MakeTimeStamp($item['DATE_TO']);
}
$absenceEnd = (CIntranetUtils::IsDateTime($absenceTo)? $absenceTo : $absenceTo + 86399);
if ($absenceEnd > $dateTimeNow)
{
$absenceFrom = UI::formatDateTime(
$absenceFrom,
CSite::GetDateFormat((CIntranetUtils::IsDateTime($absenceFrom)? 'FULL' : 'SHORT'))
);
$absenceTo = UI::formatDateTime(
$absenceTo,
CSite::GetDateFormat((CIntranetUtils::IsDateTime($absenceTo)? 'FULL' : 'SHORT'))
);
$list[]= GetMessageJS('TASKS_WARNING_RESPONSIBLE_IS_ABSENCE', [
'#FORMATTED_USER_NAME#' => htmlspecialcharsbx($userNames[$item['USER_ID']]),
'#DATE_FROM#' => $absenceFrom,
'#DATE_TO#' => $absenceTo,
'#ABSCENCE_REASON#' => htmlspecialcharsbx($item['NAME']),
]);
}
}
return $list;
}