• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/user.php
  • Класс: BitrixImUser
  • Вызов: User::getArrayWithOnline
static function getArrayWithOnline(array $users, array $options = ['JSON' => 'Y', 'SKIP_ONLINE' => 'Y']): array
{
	$result = [];

	foreach ($users as $user)
	{
		$result[$user->getId()] = $user->getArray($options);
	}

	$ids = array_keys($result);

	if (empty($ids))
	{
		return [];
	}

	$statuses = StatusTable::query()
		->setSelect(['USER_ID', 'IDLE', 'MOBILE_LAST_DATE', 'DESKTOP_LAST_DATE', 'LAST_ACTIVITY_DATE' => 'USER.LAST_ACTIVITY_DATE'])
		->whereIn('USER_ID', $ids)
		->fetchAll()
	;

	foreach ($statuses as $status)
	{
		$id = (int)$status['USER_ID'];
		$result[$id]['last_activity_date'] = $status['LAST_ACTIVITY_DATE'] ? $status['LAST_ACTIVITY_DATE']->format('c') : false;
		$result[$id]['desktop_last_date'] = $status['DESKTOP_LAST_DATE'] ? $status['DESKTOP_LAST_DATE']->format('c') : false;
		$result[$id]['mobile_last_date'] = $status['MOBILE_LAST_DATE'] ? $status['MOBILE_LAST_DATE']->format('c') : false;
		$result[$id]['idle'] = $status['IDLE'] ? $status['IDLE']->format('c') : false;
	}

	return array_values($result);
}