- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblocktype.php
- Класс: CIBlockType
- Вызов: CIBlockType::GetList
static function GetList($arOrder = array("SORT" => "ASC"), $arFilter = array())
{
/** @global CDatabase $DB */
global $DB;
/** @global CCacheManager $CACHE_MANAGER */
global $CACHE_MANAGER;
$bLang = false;
$bNameSort = false;
$strSqlSearch = "1=1n";
foreach ($arFilter as $key => $val)
{
if (!is_array($val) && $val == '')
continue;
switch(mb_strtoupper($key))
{
case "ID":
$strSqlSearch .= "AND UPPER(T.ID) LIKE UPPER('".$DB->ForSql($val)."')n";
break;
case "=ID":
if(is_array($val))
{
if(!empty($val))
{
$sqlVal = array_map(array($DB, 'ForSQL'), $val);
$strSqlSearch .= "AND T.ID in ('".implode("', '", $sqlVal)."')n";
}
}
else
{
$strSqlSearch .= "AND T.ID = '".$DB->ForSql($val)."'n";
}
break;
case "NAME":
$strSqlSearch .= "AND UPPER(TL.NAME) LIKE UPPER('%".$DB->ForSql($val)."%')n";
$bLang = true;
break;
case "LANGUAGE_ID":
$strSqlSearch .= "AND TL.LID = '".$DB->ForSql($val)."'n";
$bLang = true;
break;
}
}
$strSqlOrder = '';
foreach ($arOrder as $by => $order)
{
$by = mb_strtoupper($by);
if ($by == "ID")
$by = "T.ID";
elseif ($by == "NAME")
{
$by = "TL.NAME";
$bLang = true;
$bNameSort = true;
}
else
$by = "T.SORT";
$order = mb_strtolower($order);
if ($order != "desc")
$order = "asc";
if ($strSqlOrder == '')
$strSqlOrder = " ORDER BY ";
else
$strSqlOrder .= ', ';
$strSqlOrder .= $by." ".$order;
}
$strSql = "
SELECT ".($bLang ? "DISTINCT" : "")." T.*".($bNameSort ? ",TL.NAME" : "")."
FROM b_iblock_type T
".($bLang ? " LEFT JOIN b_iblock_type_lang TL ON TL.IBLOCK_TYPE_ID = T.ID " : "")."
WHERE ".$strSqlSearch.$strSqlOrder;
if (CACHED_b_iblock_type === false)
{
$res = $DB->Query($strSql, false, "FILE: ".__FILE__."
LINE: ".__LINE__);
}
else
{
if ($CACHE_MANAGER->Read(CACHED_b_iblock_type, $cache_id = "b_iblock_type".md5($strSql), "b_iblock_type"))
{
$arResult = $CACHE_MANAGER->Get($cache_id);
}
else
{
$arResult = array();
$res = $DB->Query($strSql, false, "FILE: ".__FILE__."
LINE: ".__LINE__);
while ($ar = $res->Fetch())
$arResult[] = $ar;
$CACHE_MANAGER->Set($cache_id, $arResult);
}
$res = new CDBResult;
$res->InitFromArray($arResult);
}
return $res;
}