• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/absence.php
  • Класс: BitrixTimemanAbsence
  • Вызов: Absence::onImUserStatusSet
static function onImUserStatusSet(BitrixMainEvent $event)
{
	if (!self::isActive() || !self::isRegisterIdle())
	{
		return true;
	}

	$currentValues = $event->getParameters();
	$previousValues = $currentValues['PREVIOUS_VALUES'];
	unset($currentValues['PREVIOUS_VALUES']);

	if ($currentValues['IDLE'] != $previousValues['IDLE'])
	{
		if ($currentValues['IDLE'] instanceof BitrixMainTypeDateTime)
		{
			$idleDate = $currentValues['IDLE']->add('1 MINUTE');
			self::setStatusIdle($currentValues['USER_ID'], true, $idleDate);
		}
		else
		{
			self::setStatusIdle($currentValues['USER_ID'], false);
		}
	}

	if ($currentValues['DESKTOP_LAST_DATE'])
	{
		if ($currentValues['DESKTOP_LAST_DATE'] != $previousValues['DESKTOP_LAST_DATE'])
		{
			if ($currentValues['DESKTOP_LAST_DATE'] instanceof BitrixMainTypeDateTime)
			{
				self::setDesktopOnline($currentValues['USER_ID'], $currentValues['DESKTOP_LAST_DATE'], $previousValues['DESKTOP_LAST_DATE']);
			}
			else
			{
				self::setDesktopOnline($currentValues['USER_ID'], $currentValues['DESKTOP_LAST_DATE'], null);
			}
		}
	}

	return true;
}