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