• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/file.php
  • Класс: CFile
  • Вызов: CFile::GetList
static function GetList($arOrder = array(), $arFilter = array())
{
	global $DB;
	$arSqlSearch = array();
	$arSqlOrder = array();
	$strSqlSearch = "";

	if(is_array($arFilter))
	{
		foreach($arFilter as $key => $val)
		{
			$key = strtoupper($key);

			$strOperation = '';
			if(substr($key, 0, 1) == "@")
			{
				$key = substr($key, 1);
				$strOperation = "IN";
				$arIn = is_array($val)? $val: explode(',', $val);
				$val = '';
				foreach($arIn as $v)
				{
					$val .= ($val <> ''? ',':'')."'".$DB->ForSql(trim($v))."'";
				}
			}
			else
			{
				$val = $DB->ForSql($val);
			}

			if($val == '')
				continue;

			switch($key)
			{
				case "MODULE_ID":
				case "ID":
				case "EXTERNAL_ID":
				case "SUBDIR":
				case "FILE_NAME":
				case "ORIGINAL_NAME":
				case "CONTENT_TYPE":
				case "HANDLER_ID":
					if ($strOperation == "IN")
						$arSqlSearch[] = "f.".$key." IN (".$val.")";
					else
						$arSqlSearch[] = "f.".$key." = '".$val."'";
				break;
			}
		}
	}
	if(!empty($arSqlSearch))
		$strSqlSearch = " WHERE (".implode(") AND (", $arSqlSearch).")";

	if(is_array($arOrder))
	{
		static $aCols = array(
			"ID" => 1,
			"TIMESTAMP_X" => 1,
			"MODULE_ID" => 1,
			"HEIGHT" => 1,
			"WIDTH" => 1,
			"FILE_SIZE" => 1,
			"CONTENT_TYPE" => 1,
			"SUBDIR" => 1,
			"FILE_NAME" => 1,
			"ORIGINAL_NAME" => 1,
			"EXTERNAL_ID" => 1,
		);
		foreach($arOrder as $by => $ord)
		{
			$by = strtoupper($by);
			if(array_key_exists($by, $aCols))
				$arSqlOrder[] = "f.".$by." ".(strtoupper($ord) == "DESC"? "DESC":"ASC");
		}
	}
	if(empty($arSqlOrder))
		$arSqlOrder[] = "f.ID ASC";
	$strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder);

	$strSql =
		"SELECT f.*, ".$DB->DateToCharFunction("f.TIMESTAMP_X")." as TIMESTAMP_X ".
		"FROM b_file f ".
		$strSqlSearch.
		$strSqlOrder;

	$res = $DB->Query($strSql, false, "FILE: ".__FILE__."
LINE: ".__LINE__); return $res; }