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

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

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

<?php 
//    /bitrix/modules/main/classes/general/main.phpCSite::GetList()
//    4188:

    
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($strSqlfalse"FILE: ".__FILE__."<br> LINE: ".__LINE__);
        }
        else
        {
            
$arResult = array();
            
$res $DB->Query($strSqlfalse"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, или иной формат общения, но проще всего воспользоваться штатным инструментом:

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