• Модуль: extranet
  • Путь к файлу: ~/bitrix/modules/extranet/classes/general/extranet.php
  • Класс: CExtranet
  • Вызов: CExtranet::getMyGroupsUsersSimple
static function getMyGroupsUsersSimple($extranetSite, $params = array()): array
{
	global $USER, $obUsersCache;

	$result = array();

	if (mb_strlen($extranetSite) < 0)
	{
		return $result;
	}

	$userId = 0;

	if (
		is_array($params)
		&& isset($params['userId'])
		&& (int)$params['userId'] > 0
	)
	{
		$userId = (int)$params['userId'];
	}
	elseif (
		is_object($USER)
		&& $USER->isAuthorized()
	)
	{
		$userId = $USER->getId();
	}

	if ($userId <= 0)
	{
		return $result;
	}

	$arUsersInMyGroups = $obUsersCache->get($extranetSite, false, $userId);

	if (is_array($arUsersInMyGroups))
	{
		return $arUsersInMyGroups;
	}

	$arUsersInMyGroups = array();

	if (Loader::includeModule('socialnetwork'))
	{
		$query = new Query(UserToGroupTable::getEntity());
		$query->setSelect(array('GROUP_ID'));
		$query->setFilter(array(
			'<=ROLE' => UserToGroupTable::ROLE_USER,
			'=USER_ID' => $userId,
			'=GROUP.ACTIVE' => 'Y',
			'=GROUP.WorkgroupSite:GROUP.SITE_ID' => $extranetSite
		));

		$subQuery = $query->getQuery();

		$res = UserToGroupTable::getList(array(
			'order' => array(),
			'filter' => array(
				'@GROUP_ID' => new BitrixMainDBSqlExpression($subQuery),
				'<=ROLE' => UserToGroupTable::ROLE_USER,
				'=USER.ACTIVE' => 'Y',
			),
			'select' => array('USER_ID'),
			'group' => array('USER_ID')
		));

		while ($arUserInGroup = $res->fetch())
		{
			$arUsersInMyGroups[] = $arUserInGroup["USER_ID"];
		}
	}

	$obUsersCache->SetForKey($userId."_".$extranetSite."_N", $arUsersInMyGroups);

	return $arUsersInMyGroups;
}