- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_perms.php
- Класс: CAllSocNetUserPerms
- Вызов: CAllSocNetUserPerms::InitUserPerms
static function InitUserPerms($currentUserID, $userID, $bCurrentUserIsAdmin)
{
global $arSocNetUserOperations, $USER;
$arReturn = array();
$currentUserID = intval($currentUserID);
$userID = intval($userID);
if ($userID <= 0)
{
return false;
}
$arReturn["Operations"] = array();
if ($currentUserID <= 0)
{
$arReturn["IsCurrentUser"] = false;
$arReturn["Relation"] = false;
$arReturn["Operations"]["modifyuser"] = false;
$arReturn["Operations"]["viewcontacts"] = false;
foreach ($arSocNetUserOperations as $operation => $defPerm)
{
$arReturn["Operations"][$operation] = CSocNetUserPerms::CanPerformOperation($currentUserID, $userID, $operation, false);
}
}
else
{
$arReturn["IsCurrentUser"] = ($currentUserID == $userID);
$arReturn["Relation"] = (
$arReturn["IsCurrentUser"]
? false
: CSocNetUserRelations::GetRelation($currentUserID, $userID)
);
if (
$bCurrentUserIsAdmin
|| $arReturn["IsCurrentUser"]
)
{
$arReturn["Operations"]["modifyuser"] = true;
$arReturn["Operations"]["viewcontacts"] = true;
foreach ($arSocNetUserOperations as $operation => $defPerm)
{
$arReturn["Operations"][$operation] = true;
}
}
else
{
$arReturn["Operations"]["modifyuser"] = false;
$arReturn["Operations"]["viewcontacts"] = (
CSocNetUser::IsFriendsAllowed()
? ($arReturn["Relation"] == SONET_RELATIONS_FRIEND)
: true
);
foreach ($arSocNetUserOperations as $operation => $defPerm)
{
$arReturn["Operations"][$operation] = CSocNetUserPerms::CanPerformOperation($currentUserID, $userID, $operation, false);
}
}
$arReturn["Operations"]["modifyuser_main"] = false;
if ($arReturn["IsCurrentUser"])
{
if ($USER->CanDoOperation('edit_own_profile'))
{
$arReturn["Operations"]["modifyuser_main"] = true;
}
}
elseif (
$USER->CanDoOperation('edit_all_users')
|| (
$USER->CanDoOperation('edit_subordinate_users')
&& count(array_diff(CUser::GetUserGroup($userID), CSocNetTools::GetSubordinateGroups($currentUserID))) <= 0
)
)
{
$arReturn["Operations"]["modifyuser_main"] = true;
}
}
return $arReturn;
}