• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/userpause.php
  • Класс: BitrixImOpenLinesUserPause
  • Вызов: UserPause::getAllStatuses
static function getAllStatuses(int $configId = 0): array
{
	if (!Loader::includeModule('im'))
	{
		return [];
	}

	$statuses = UserOptionTable::query()
		->setSelect(['USER_ID'])
		->addFilter('=PAUSE', 'Y')
	;

	if ($configId)
	{
		$subQuery = ConfigQueueTable::query()
			->setSelect(['ENTITY_ID'])
			->where('CONFIG_ID', $configId)
			->where('ENTITY_TYPE', 'user')
		;

		$statuses->whereIn('USER_ID', $subQuery);
	}

	$users = $statuses->fetchAll();
	$userIds = array_map(function ($user) {
		return (int)$user['USER_ID'];
	}, $users);

	$userCollection = new UserCollection($userIds);
	$users = (new RestAdapter($userCollection))->toRestFormat();

	$result = [];
	foreach ($users as $user)
	{
		$result[$user['id']] = $user;
	}

	return $result;
}