Поддержка серверов

CIBlock::GetPermission: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=177794

//    CIBlock::GetPermission()
//    /bitrix/modules/iblock/classes/general/iblock.php:2148

    public static function GetPermission($IBLOCK_ID, $FOR_USER_ID = false)
    {
        /** @global CDatabase $DB */
        global $DB;
        /** @global CUser $USER */
        global $USER;
        static $CACHE = array();
        $USER_ID = is_object($USER)? intval($USER->GetID()): 0;

        if($FOR_USER_ID > 0 && $FOR_USER_ID != $USER_ID)
        {
            $arGroups = CUser::GetUserGroup($FOR_USER_ID);
            if(
                in_array(1, $arGroups)
                && COption::GetOptionString("main", "controller_member", "N") != "Y"
                && COption::GetOptionString("main", "~controller_limited_admin", "N") != "Y"
            )
                return "X";
            $USER_GROUPS = implode(",", $arGroups);
        }
        elseif(is_object($USER))
        {
            if($USER->IsAdmin())
                return "X";
            $USER_GROUPS = $USER->GetGroups();
        }
        else
        {
            $USER_GROUPS = "2";
        }

        $IBLOCK_ID = intval($IBLOCK_ID);
        $CACHE_KEY = $IBLOCK_ID."|".$USER_GROUPS;

        if(!array_key_exists($CACHE_KEY, $CACHE))
        {
            //Deny by default
            $CACHE[$CACHE_KEY] = "D";
            //Now check database
            $strSql = "
                SELECT MAX(IBG.PERMISSION) as P
                FROM b_iblock_group IBG
                WHERE IBG.IBLOCK_ID=".$IBLOCK_ID."
                AND IBG.GROUP_ID IN (".$USER_GROUPS.")
            ";
            $res = $DB->Query($strSql);
            if($r = $res->Fetch())
            {
                if(strlen($r['P']) > 0)
                {
                    //Overwrite default value
                    $CACHE[$CACHE_KEY] = $r["P"];
                }
            }
        }

        return $CACHE[$CACHE_KEY];
    }

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение