• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/userabsence.php
  • Класс: BitrixIntranetUserAbsence
  • Вызов: UserAbsence::isAbsentOnVacation
static function isAbsentOnVacation($userId, bool $returnToDate = false)
{
	$result = self::getCurrentMonth();

	if (isset($result[$userId]))
	{
		$now = new BitrixMainTypeDateTime();
		$nowTs = $now->getTimestamp();

		foreach ($result[$userId] as $vacation)
		{
			if (!$vacation['IS_VACATION'])
			{
				continue;
			}

			$isCounterpart = $vacation['DATE_FROM_TS'] === $vacation['DATE_TO_TS'];
			$isLastDayWithoutTime = date('y.d.m', $nowTs) === date('y.d.m', $vacation['DATE_TO_TS'])
				&& date('H:i:s', $vacation['DATE_TO_TS']) === '00:00:00';

			if ($isCounterpart || $isLastDayWithoutTime)
			{
				$vacation['DATE_TO_TS'] += 86400;
			}

			if ($nowTs >= $vacation['DATE_FROM_TS'] && $nowTs < $vacation['DATE_TO_TS'])
			{
				if ($isCounterpart || $isLastDayWithoutTime)
				{
					$vacation['DATE_TO_TS'] -= 86399;
				}

				if ($returnToDate)
				{
					return $vacation;
				}

				return true;
			}
		}
	}

	return false;
}