- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/user_options.php
- Класс: CUserOptions
- Вызов: CUserOptions::GetList
static function GetList($arOrder = array("ID" => "ASC"), $arFilter = array())
{
global $DB;
$arSqlSearch = array();
foreach ($arFilter as $key => $val)
{
$key = strtoupper($key);
switch ($key)
{
case "ID":
$arSqlSearch[] = "UO.ID = ".intval($val);
break;
case "USER_ID":
$arSqlSearch[] = "UO.USER_ID = ".intval($val);
break;
case "USER_ID_EXT":
$arSqlSearch[] = "(UO.USER_ID = ".intval($val)." OR UO.COMMON='Y')";
break;
case "CATEGORY":
$arSqlSearch[] = "UO.CATEGORY = '".$DB->ForSql($val)."'";
break;
case "NAME":
$arSqlSearch[] = "UO.NAME = '".$DB->ForSql($val)."'";
break;
case "NAME_MASK":
$arSqlSearch[] = GetFilterQuery("UO.NAME", $val);
break;
case "COMMON":
$arSqlSearch[] = "UO.COMMON = '".$DB->ForSql($val)."'";
break;
}
}
$strSqlSearch = "";
foreach ($arSqlSearch as $condition)
if ($condition <> '')
$strSqlSearch.= " AND (".$condition.") ";
$strSql = "
SELECT UO.ID, UO.USER_ID, UO.CATEGORY, UO.NAME, UO.COMMON, UO.VALUE
FROM b_user_option UO
WHERE 1 = 1
".$strSqlSearch."
";
$arSqlOrder = array();
if (is_array($arOrder))
{
foreach ($arOrder as $by => $order)
{
$by = strtoupper($by);
$order = strtoupper($order);
if ($order != "ASC")
$order = "DESC";
if ($by == "ID")
$arSqlOrder[$by] = " UO.ID ".$order." ";
elseif ($by == "USER_ID")
$arSqlOrder[$by] = " UO.USER_ID ".$order." ";
elseif ($by == "CATEGORY")
$arSqlOrder[$by] = " UO.CATEGORY ".$order." ";
elseif ($by == "NAME")
$arSqlOrder[$by] = " UO.NAME ".$order." ";
elseif ($by == "COMMON")
$arSqlOrder[$by] = " UO.COMMON ".$order." ";
}
}
if (!empty($arSqlOrder))
$strSqlOrder = "ORDER BY ".implode(", ", $arSqlOrder);
else
$strSqlOrder = "";
$res = $DB->Query($strSql.$strSqlOrder, false, "FILE: ".__FILE__."
LINE: ".__LINE__);
return $res;
}