• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_group.php
  • Класс: CAllSocNetUserToGroup
  • Вызов: CAllSocNetUserToGroup::GetUserRole
static function GetUserRole($userId, $groupId, $extendedReturn = false)
{
	$userId = (int)$userId;
	if ($userId <= 0)
	{
		return false;
	}

	// compatibility?
	if (isset($_REQUEST['arSocNetUserInRoleCache']))
	{
		self::$roleCache = [];
	}

	if (is_array($groupId))
	{
		$result = false;

		$groupIdListToGet = [];
		foreach ($groupId as $TmpGroupID)
		{
			$cacheKey = $userId . '_' . $TmpGroupID;
			if (!isset(self::$roleCache[$cacheKey]))
			{
				$groupIdListToGet[] = $TmpGroupID;
			}
		}

		if (count($groupIdListToGet) > 0)
		{
			$res = CSocNetUserToGroup::getList(
				[],
				[
					'USER_ID' => $userId,
					'GROUP_ID' => $groupIdListToGet,
				],
				false,
				false,
				[ 'GROUP_ID', 'ROLE', 'AUTO_MEMBER' ]
			);
			$arRolesFromDB = [];
			while ($relationFields = $res->fetch())
			{
				$arRolesFromDB[$relationFields["GROUP_ID"]] = [
					"ROLE" => $relationFields["ROLE"],
					"AUTO_MEMBER" => $relationFields["AUTO_MEMBER"],
				];
			}

			foreach ($groupIdListToGet as $TmpGroupID)
			{
				self::$roleCache[$userId."_".$TmpGroupID] = (
					array_key_exists($TmpGroupID, $arRolesFromDB)
						? [
							"ROLE" => $arRolesFromDB[$TmpGroupID]["ROLE"],
							"AUTO_MEMBER" => $arRolesFromDB[$TmpGroupID]["AUTO_MEMBER"],
						]
						: array(
							"ROLE" => false,
							"AUTO_MEMBER" => "N"
						)
				);
			}
		}

		foreach ($groupId as $currentGroupId)
		{
			if ($result === false)
			{
				$result = [];
			}
			$result[$currentGroupId] = (
				$extendedReturn
					? self::$roleCache[$userId . '_' . $currentGroupId]
					: self::$roleCache[$userId . '_' . $currentGroupId]['ROLE']
			);
		}

		return $result;
	}

	$groupId = (int)$groupId;
	if ($groupId <= 0)
	{
		return false;
	}

	if (!array_key_exists($userId."_".$groupId, self::$roleCache))
	{
		$res = CSocNetUserToGroup::GetList(
			array(),
			array("USER_ID" => $userId, "GROUP_ID" => $groupId),
			false,
			false,
			array("ROLE", "AUTO_MEMBER")
		);
		if ($relationFields = $res->Fetch())
		{
			self::$roleCache[$userId."_".$groupId] = array(
				"ROLE" => $relationFields["ROLE"],
				"AUTO_MEMBER" => $relationFields["AUTO_MEMBER"]
			);
		}
		else
		{
			self::$roleCache[$userId."_".$groupId] = array(
				"ROLE" => false,
				"AUTO_MEMBER" => false
			);
		}
	}

	return (
		$extendedReturn
			? self::$roleCache[$userId."_".$groupId]
			: self::$roleCache[$userId."_".$groupId]["ROLE"]
	);
}