- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock_rights.php
- Класс: CIBlockRights
- Вызов: CIBlockRights::_check_if_user_has_right
static function _check_if_user_has_right($obRights, $ID, $permission, $flags = 0)
{
global $USER;
$USER_ID = 0;
if($USER_ID > 0 && (!is_object($USER) || $USER_ID != $USER->GetID()))
{
$arGroups = CUser::GetUserGroup($USER_ID);
if(
in_array(1, $arGroups)
&& COption::GetOptionString("main", "controller_member", "N") != "Y"
&& COption::GetOptionString("main", "~controller_limited_admin", "N") != "Y"
)
{
return CIBlockRights::_mk_result($ID, CIBlockRights::LetterToOperations("X"), true, $flags);
}
}
elseif(!is_object($USER))
{
return CIBlockRights::_mk_result($ID, array(), false, $flags);
}
elseif($USER->IsAdmin())
{
return CIBlockRights::_mk_result($ID, CIBlockRights::LetterToOperations("X"), true, $flags);
}
$user_id = intval($USER->GetID());
$RIGHTS_MODE = CIBlock::GetArrayByID($obRights->GetIBlockID(), "RIGHTS_MODE");
if($RIGHTS_MODE === IblockIblockTable::RIGHTS_EXTENDED)
{
if(is_array($ID))
$arOperations = $obRights->GetUserOperations($ID, $user_id);
else
{
static $cache;
$cache_id = get_class($obRights).$user_id."|".$ID;
if(!isset($cache[$cache_id]))
$cache[$cache_id] = $obRights->GetUserOperations($ID, $user_id);
$arOperations = $cache[$cache_id];
}
if($flags & CIBlockRights::RETURN_OPERATIONS)
return $arOperations;
else
return isset($arOperations[$permission]);
}
else//if($RIGHTS_MODE === IblockIblockTable::RIGHTS_SIMPLE)
{
$letter = CIBlock::GetPermission($obRights->GetIBlockID());
$arOperations = CIBlockRights::_mk_result($ID, CIBlockRights::LetterToOperations($letter), CIBlockRights::LetterToOperations($letter), $flags);
if($flags & CIBlockRights::RETURN_OPERATIONS)
return $arOperations;
else
return isset($arOperations[$permission]);
}
}