• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Entity/User/UserCollection.php
  • Класс: BitrixImV2EntityUserUserCollection
  • Вызов: UserCollection::fillOnlineData
public function fillOnlineData(): void
{
	$idsUsersWithoutOnlineData = [];

	foreach ($this as $user)
	{
		if (!$user->isOnlineDataFilled())
		{
			$idsUsersWithoutOnlineData[] = $user->getId();
		}
	}

	$idsUsersWithoutOnlineData = array_unique($idsUsersWithoutOnlineData);

	if (empty($idsUsersWithoutOnlineData))
	{
		return;
	}

	$statusesData = UserTable::query()
		->setSelect(User::ONLINE_DATA_SELECTED_FIELDS)
		->registerRuntimeField(
			new Reference(
				'STATUS',
				StatusTable::class,
				Join::on('this.ID', 'ref.USER_ID'),
				['join_type' => Join::TYPE_LEFT]
			)
		)
		->whereIn('ID', $idsUsersWithoutOnlineData)
		->fetchAll() ?: []
	;

	foreach ($statusesData as $statusData)
	{
		$this->getById((int)$statusData['USER_ID'])->setOnlineData($statusData);
	}
}