- Модуль: 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"]
);
}