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

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

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

//    CSite::GetList()
//    /bitrix/modules/main/classes/general/main.php:4197

    public static function GetList(&$by, &$order, $arFilter=array())
    {
        global $DB, $CACHE_MANAGER;

        if(CACHED_b_lang!==false)
        {
            $cacheId = "b_lang".md5($by.".".$order.".".serialize($arFilter));
            if($CACHE_MANAGER->Read(CACHED_b_lang, $cacheId, "b_lang"))
            {
                $arResult = $CACHE_MANAGER->Get($cacheId);

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

        $strSqlSearch = "";
        $bIncDomain = false;
        if(is_array($arFilter))
        {
            foreach($arFilter as $key=>$val)
            {
                if(strlen($val)<=0) continue;
                $val = $DB->ForSql($val);
                switch(strtoupper($key))
                {
                    case "ACTIVE":
                        if($val=="Y" || $val=="N")
                            $strSqlSearch .= " AND L.ACTIVE='".$val."'\n";
                        break;
                    case "DEFAULT":
                        if($val=="Y" || $val=="N")
                            $strSqlSearch .= " AND L.DEF='".$val."'\n";
                        break;
                    case "NAME":
                        $strSqlSearch .= " AND UPPER(L.NAME) LIKE UPPER('".$val."')\n";
                        break;
                    case "DOMAIN":
                        $bIncDomain = true;
                        $strSqlSearch .= " AND UPPER(D.DOMAIN) LIKE UPPER('".$val."')\n";
                        break;
                    case "IN_DIR":
                        $strSqlSearch .= " AND UPPER('".$val."') LIKE ".$DB->Concat("UPPER(L.DIR)", "'%'")."\n";
                        break;
                    case "ID":
                    case "LID":
                        $strSqlSearch .= " AND L.LID='".$val."'\n";
                        break;
                    case "LANGUAGE_ID":
                        $strSqlSearch .= " AND L.LANGUAGE_ID='".$val."'\n";
                        break;
                }
            }
        }

        $strSql = "
            SELECT ".($bIncDomain ? " DISTINCT " : "")."
                L.*,
                L.LID ID,
                ".$DB->Length("L.DIR").",
                ".$DB->IsNull($DB->Length("L.DOC_ROOT"), "0").",
                C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION
            FROM
                b_culture C,
                b_lang L ".($bIncDomain? "LEFT JOIN b_lang_domain D ON D.LID=L.LID " : "")."
            WHERE
                C.ID=L.CULTURE_ID
                ".$strSqlSearch."
            ";

        $by = strtolower($by);
        $order = strtolower($order);

        if($by == "lid" || $by=="id")    $strSqlOrder = " ORDER BY L.LID ";
        elseif($by == "active")            $strSqlOrder = " ORDER BY L.ACTIVE ";
        elseif($by == "name")            $strSqlOrder = " ORDER BY L.NAME ";
        elseif($by == "dir")            $strSqlOrder = " ORDER BY L.DIR ";
        elseif($by == "lendir")            $strSqlOrder = " ORDER BY ".$DB->IsNull($DB->Length("L.DOC_ROOT"), "0").($order=="desc"? " desc":"").", ".$DB->Length("L.DIR");
        elseif($by == "def")            $strSqlOrder = " ORDER BY L.DEF ";
        else
        {
            $strSqlOrder = " ORDER BY L.SORT ";
            $by = "sort";
        }

        if($order=="desc")
            $strSqlOrder .= " desc ";
        else
            $order = "asc";

        $strSql .= $strSqlOrder;
        if(CACHED_b_lang===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);
        }
        $res = new _CLangDBResult($res);
        return $res;
    }
';

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

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

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

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

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

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

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

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