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

	if (mb_strlen($site) < 0)
	{
		return array();
	}

	$arUsersInMyGroups = $obUsersCache->get($site, $bGadget);

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

	$arUsersInMyGroups = array();
	$arUserSocNetGroups = array();

	if (
		Loader::includeModule('socialnetwork')
		&& (
			!CSocNetUser::IsCurrentUserModuleAdmin()
			|| $bGadget
		)
	)
	{
		$dbUsersInGroup = CSocNetUserToGroup::GetList(
			array(),
			array(
				"USER_ID" => $USER->GetID(),
				"<=ROLE" => SONET_ROLES_USER,
				"GROUP_SITE_ID" => $site,
				"GROUP_ACTIVE" => "Y"
			),
			false,
			false,
			array("ID", "GROUP_ID")
		);

		if ($dbUsersInGroup)
		{
			while ($arUserInGroup = $dbUsersInGroup->GetNext())
			{
				$arUserSocNetGroups[] = $arUserInGroup["GROUP_ID"];
			}
		}

		if (count($arUserSocNetGroups) > 0)
		{
			$arFilter = array(
				"@GROUP_ID" => $arUserSocNetGroups,
				"<=ROLE" => SONET_ROLES_USER
			);

			if ($bOnlyActive)
			{
				$arFilter["USER_ACTIVE"] = "Y";
			}

			$dbUsersInGroup = CSocNetUserToGroup::GetList(
				array(),
				$arFilter,
				false,
				false,
				array("ID", "USER_ID")
			);

			if ($dbUsersInGroup)
			{
				while ($arUserInGroup = $dbUsersInGroup->GetNext())
				{
					$arUsersInMyGroups[] = $arUserInGroup["USER_ID"];
				}
			}
		}
	}
	else
	{
		$dbUsers = CUser::GetList(
			'ID',
			'ASC',
			[
				"ACTIVE" => "Y",
				"GROUPS_ID" => [ self::GetExtranetUserGroupID() ],
			]
		);

		if ($dbUsers)
		{
			while ($arUser = $dbUsers->GetNext())
			{
				$arUsersInMyGroups[] = $arUser["ID"];
			}
		}
	}

	if (count($arUsersInMyGroups) > 0)
	{
		$arUsersInMyGroups = array_unique($arUsersInMyGroups);
	}

	$obUsersCache->set($site, $bGadget, $arUsersInMyGroups);

	return $arUsersInMyGroups;
}