• Модуль: 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; }