- Модуль: fileman
- Путь к файлу: ~/bitrix/modules/fileman/classes/general/medialib.php
- Класс: CMedialibCollection
- Вызов: CMedialibCollection::GetList
static function GetList($Params = array())
{
global $DB, $USER;
$arFilter = $Params['arFilter'];
$arOrder = isset($Params['arOrder']) ? $Params['arOrder'] : Array('ID' => 'asc');
static $arFields = array(
"ID" => Array("FIELD_NAME" => "MLC.ID", "FIELD_TYPE" => "int"),
"NAME" => Array("FIELD_NAME" => "MLC.NAME", "FIELD_TYPE" => "string"),
"ACTIVE" => Array("FIELD_NAME" => "MLC.ACTIVE", "FIELD_TYPE" => "string"),
"DATE_UPDATE" => Array("FIELD_NAME" => "MLC.DATE_UPDATE", "FIELD_TYPE" => "date"),
"KEYWORDS" => Array("FIELD_NAME" => "MLC.KEYWORDS", "FIELD_TYPE" => "string"),
"DESCRIPTION" => Array("FIELD_NAME" => "MLC.DESCRIPTION", "FIELD_TYPE" => "string"),
"OWNER_ID" => Array("FIELD_NAME" => "MLC.OWNER_ID", "FIELD_TYPE" => "int"),
"PARENT_ID" => Array("FIELD_NAME" => "MLC.PARENT_ID", "FIELD_TYPE" => "int"),
"ML_TYPE" => Array("FIELD_NAME" => "MLC.ML_TYPE", "FIELD_TYPE" => "string")
);
$err_mess = (CMedialibCollection::GetErrorMess())."
Function: GetList
Line: ";
$arSqlSearch = array();
$strSqlSearch = "";
if(is_array($arFilter))
{
$filter_keys = array_keys($arFilter);
for($i=0, $l = count($filter_keys); $i<$l; $i++)
{
$n = mb_strtoupper($filter_keys[$i]);
$val = $arFilter[$filter_keys[$i]];
if((is_string($val) && $val == '') || (!is_array($val) && (string)$val==="NOT_REF"))
continue;
if ($n == 'ID' || $n == 'PARENT_ID' || $n == 'OWNER_ID')
$arSqlSearch[] = GetFilterQuery($arFields[$n]["FIELD_NAME"], $val, 'N');
elseif(isset($arFields[$n]))
$arSqlSearch[] = GetFilterQuery($arFields[$n]["FIELD_NAME"], $val);
}
}
$strOrderBy = '';
foreach($arOrder as $by=>$order)
if(isset($arFields[mb_strtoupper($by)]))
$strOrderBy .= $arFields[mb_strtoupper($by)]["FIELD_NAME"].' '.(mb_strtolower($order) == 'desc'?'desc'.($DB->type == "ORACLE"?" NULLS LAST":""):'asc'.($DB->type == "ORACLE"?" NULLS FIRST":"")).',';
if($strOrderBy <> '')
$strOrderBy = "ORDER BY ".rtrim($strOrderBy, ",");
$strSqlSearch = GetFilterSqlSearch($arSqlSearch);
if (isset($arFilter['TYPES']) && is_array($arFilter['TYPES']))
{
$strTypes = "";
for($i = 0, $l = count($arFilter['TYPES']); $i < $l; $i++)
$strTypes .= ",".intval($arFilter['TYPES'][$i]);
$strSqlSearch .= "n AND ML_TYPE in (".trim($strTypes, ", ").")";
}
$strSql = "
SELECT
MLC.*
FROM
b_medialib_collection MLC
WHERE
$strSqlSearch
$strOrderBy";
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
$arResult = Array();
while($arRes = $res->Fetch())
$arResult[] = $arRes;
return $arResult;
}