• Модуль: mobile
  • Путь к файлу: ~/bitrix/modules/mobile/lib/user.php
  • Класс: BitrixMobileUser
  • Вызов: User::setOnline
static function setOnline($userId = false, $cache = true)
{
	global $USER;

	if (!$userId)
	{
		$userId = $USER->GetId();
	}

	$userId = intval($userId);
	if ($userId <= 0)
	{
		return false;
	}

	if ($cache && $userId == $USER->GetId())
	{
		if (isset($_SESSION['MOBILE_LAST_ONLINE_'.$userId]) && intval($_SESSION['MOBILE_LAST_ONLINE_'.$userId])+60 > time())
			return false;

		$_SESSION['MOBILE_LAST_ONLINE_'.$userId] = time();
	}

	$time = time();
	if (BitrixMainLoader::includeModule('im'))
	{
		CIMStatus::Set($userId, Array('MOBILE_LAST_DATE' => BitrixMainTypeDateTime::createFromTimestamp($time)));
	}
	else
	{
		CUserOptions::SetOption('mobile', 'lastActivityDate', $time, false, $userId);
	}

	$mobileDevice = BitrixMainContext::getCurrent()->getRequest()->getCookieRaw('MOBILE_DEVICE');
	if ($mobileDevice)
	{
		$mobileDevice = mb_strtolower($mobileDevice);

		if ($mobileDevice === 'iphone' || $mobileDevice === 'ipad')
		{
			$lastTimestamp = (int)CUserOptions::GetOption('mobile', 'iOsLastActivityDate', -1, $userId);
			if ($lastTimestamp+86400*30 < time())
			{
				CUserOptions::SetOption('mobile', 'iOsLastActivityDate', $time, false, $userId);
			}
		}
		else if ($mobileDevice === 'android')
		{
			$lastTimestamp = (int)CUserOptions::GetOption('mobile', 'AndroidLastActivityDate', -1, $userId);
			if ($lastTimestamp+86400*30 < time())
			{
				CUserOptions::SetOption('mobile', 'AndroidLastActivityDate', $time, false, $userId);
			}
		}
	}

	return true;
}