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

CUserTypeEntity::GetList: метод Битрикс

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

//    CUserTypeEntity::GetList()
//    /bitrix/modules/main/classes/general/usertype.php:171

    public static function GetList($aSort = array(), $aFilter = array())
    {
        global $DB, $CACHE_MANAGER;

        if(CACHED_b_user_field !== false)
        {
            $cacheId = "b_user_type" . md5(serialize($aSort) . "." . serialize($aFilter));
            if($CACHE_MANAGER->Read(CACHED_b_user_field, $cacheId, "b_user_field"))
            {
                $arResult = $CACHE_MANAGER->Get($cacheId);
                $res = new CDBResult;
                $res->InitFromArray($arResult);
                $res = new CUserTypeEntity($res);
                return $res;
            }
        }

        $bLangJoin = false;
        $arFilter = array();
        foreach($aFilter as $key => $val)
        {
            if(is_array($val) || strlen($val) <= 0)
                continue;

            $key = strtoupper($key);
            $val = $DB->ForSql($val);

            switch($key)
            {
                case "ID":
                case "ENTITY_ID":
                case "FIELD_NAME":
                case "USER_TYPE_ID":
                case "XML_ID":
                case "SORT":
                case "MULTIPLE":
                case "MANDATORY":
                case "SHOW_FILTER":
                case "SHOW_IN_LIST":
                case "EDIT_IN_LIST":
                case "IS_SEARCHABLE":
                    $arFilter[] = "UF." . $key . " = '" . $val . "'";
                    break;
                case "LANG":
                    $bLangJoin = $val;
                    break;
            }
        }

        $arOrder = array();
        foreach($aSort as $key => $val)
        {
            $key = strtoupper($key);
            $ord = (strtoupper($val) <> "ASC" ? "DESC" : "ASC");
            switch($key)
            {
                case "ID":
                case "ENTITY_ID":
                case "FIELD_NAME":
                case "USER_TYPE_ID":
                case "XML_ID":
                case "SORT":
                    $arOrder[] = "UF." . $key . " " . $ord;
                    break;
            }
        }
        if(count($arOrder) == 0)
        {
            $arOrder[] = "UF.SORT asc";
            $arOrder[] = "UF.ID asc";
        }
        DelDuplicateSort($arOrder);
        $sOrder = "\nORDER BY " . implode(", ", $arOrder);

        if(count($arFilter) == 0)
            $sFilter = "";
        else
            $sFilter = "\nWHERE " . implode("\nAND ", $arFilter);

        $strSql = "
            SELECT
                UF.ID
                ,UF.ENTITY_ID
                ,UF.FIELD_NAME
                ,UF.USER_TYPE_ID
                ,UF.XML_ID
                ,UF.SORT
                ,UF.MULTIPLE
                ,UF.MANDATORY
                ,UF.SHOW_FILTER
                ,UF.SHOW_IN_LIST
                ,UF.EDIT_IN_LIST
                ,UF.IS_SEARCHABLE
                ,UF.SETTINGS
                " . ($bLangJoin ? "
                    ,UFL.EDIT_FORM_LABEL
                    ,UFL.LIST_COLUMN_LABEL
                    ,UFL.LIST_FILTER_LABEL
                    ,UFL.ERROR_MESSAGE
                    ,UFL.HELP_MESSAGE
                " : "") . "
            FROM
                b_user_field UF
                " . ($bLangJoin ? "LEFT JOIN b_user_field_lang UFL on UFL.LANGUAGE_ID = '" . $bLangJoin . "' AND UFL.USER_FIELD_ID = UF.ID" : "") . "
            " . $sFilter . $sOrder;

        if(CACHED_b_user_field === false)
        {
            $res = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
        }
        else
        {
            $arResult = array();
            $res = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
            while($ar = $res->Fetch())
                $arResult[] = $ar;

            /** @noinspection PhpUndefinedVariableInspection */
            $CACHE_MANAGER->Set($cacheId, $arResult);

            $res = new CDBResult;
            $res->InitFromArray($arResult);
        }

        return new CUserTypeEntity($res);
    }
';

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

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

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

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

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

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

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

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