• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_status.php
  • Класс: CIMStatus
  • Вызов: CIMStatus::GetStatus
static function GetStatus($userId = null)
{
	$userId = IMCommon::getUserId($userId);
	if (!$userId)
	{
		return null;
	}

	$userStatus = null;
	$cache = BitrixMainDataCache::createInstance();
	if($cache->initCache(self::CACHE_TTL, 'list_v2', self::CACHE_PATH.$userId.'/'))
	{
		$userStatus = $cache->getVars();
	}
	else
	{
		$res = IMModelStatusTable::getList(Array(
			'select' => Array(
				'STATUS',
				'MOBILE_LAST_DATE',
				'DESKTOP_LAST_DATE',
				'IDLE',
				'EXTERNAL_AUTH_ID' => 'USER.EXTERNAL_AUTH_ID'
			),
			'runtime' => Array(
				new BitrixMainEntityReferenceField(
					'USER',
					'BitrixMainUserTable',
					array("=ref.ID" => "this.USER_ID",),
					array("join_type"=>"LEFT")
				)
			),
			'filter' => Array('=USER_ID' => $userId),
		));
		if ($status = $res->fetch())
		{
			$userStatus = $status;
			$cache->startDataCache();
			$cache->endDataCache($userStatus);
		}
	}

	if ($userStatus)
	{
		$userStatus = CIMStatus::prepareLastDate($userStatus);
	}

	return $userStatus;
}