• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/user.php
  • Класс: BitrixImUser
  • Вызов: User::getListParams
static function getListParams($params)
{
	if (isset($params['FILTER']['SEARCH']))
	{
		$filter = BitrixMainUserUtils::getUserSearchFilter(Array('FIND' => $params['FILTER']['SEARCH']));
		if (empty($filter))
		{
			return null;
		}
	}
	else
	{
		$filter = Array();
	}

	$filter['=ACTIVE'] = 'Y';
	$filter['=CONFIRM_CODE'] = false;
	$filter['!=EXTERNAL_AUTH_ID'] = BitrixImModelUserTable::filterExternalUserTypes([BitrixImBot::EXTERNAL_AUTH_ID]);

	$filterByUsers = [];

	if (User::getInstance($params['CURRENT_USER'])->isExtranet())
	{
		$groups = BitrixImIntegrationSocialnetworkExtranet::getGroup(Array(), $params['CURRENT_USER']);
		if (is_array($groups))
		{
			foreach ($groups as $group)
			{
				foreach ($group['USERS'] as $userId)
				{
					$filterByUsers[$userId] = $userId;
				}
			}
			$filterByUsers[$params['CURRENT_USER']] = $params['CURRENT_USER'];
		}
	}

	if (
		$params['FILTER']['BUSINESS'] == 'Y'
		&& BitrixMainLoader::includeModule('bitrix24')
		&& !CBitrix24BusinessTools::isLicenseUnlimited()
	)
	{
		$businessUsers = CBitrix24BusinessTools::getUnlimUsers();

		if (User::getInstance($params['CURRENT_USER'])->isExtranet())
		{
			$extranetBusinessResult = [];
			foreach ($filterByUsers as $userId)
			{
				if (in_array($userId, $businessUsers))
				{
					$extranetBusinessResult[$userId] = $userId;
				}
			}
			$filterByUsers = $extranetBusinessResult;
		}
		else
		{
			foreach ($businessUsers as $userId)
			{
				$filterByUsers[$userId] = $userId;
			}
		}
	}

	if ($filterByUsers)
	{
		$filter['=ID'] = array_keys($filterByUsers);
	}

	return ['filter' => $filter];
}