• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/component/ustatonline.php
  • Класс: BitrixIntranetComponentUstatOnline
  • Вызов: UstatOnline::prepareList
public function prepareList(): array
{
	$users = [];

	$select = [
		"ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "LAST_ACTIVITY_DATE",
	];

	$date = new DateTime;

	$filter = [
		'=ACTIVE'       => true,
		'=IS_REAL_USER' => true,
		'>=LAST_ACTIVITY_DATE' => $date->add('-'.$this->arResult["LIMIT_ONLINE_SECONDS"].' seconds'),
		"!UF_DEPARTMENT" => false,
	];

	$result = UserTable::getList([
		'select' => $select,
		'filter' => $filter,
		'order' => ['LAST_ACTIVITY_DATE' => 'DESC']
	]);

	while ($user = $result->fetch())
	{
		$users[$user['ID']] = self::prepareUser($user);
		$this->arResult['ONLINE_USERS_ID'][] = $user['ID'];
	}

	if (count($users) < 10)
	{
		unset($filter['>=LAST_ACTIVITY_DATE']);
		$result = UserTable::getList([
			'select' => $select,
			'filter' => $filter,
			'limit'  => 10,
		]);

		while ($user = $result->fetch())
		{
			$users[$user['ID']] = self::prepareUser($user);
		}
	}

	return array_values($users);
}