- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/usertype.php
- Класс: CAllUserTypeEntity
- Вызов: CAllUserTypeEntity::GetList
static function GetList($aSort = array(), $aFilter = array())
{
global $DB, $CACHE_MANAGER;
if(CACHED_b_user_field !== false)
{
$cacheId = "b_user_type" . md5(serialize($aSort) . "." . serialize($aFilter));
if($CACHE_MANAGER->Read(CACHED_b_user_field, $cacheId, "b_user_field"))
{
$arResult = $CACHE_MANAGER->Get($cacheId);
$res = new CDBResult;
$res->InitFromArray($arResult);
$res = new CUserTypeEntity($res);
return $res;
}
}
$bLangJoin = false;
$arFilter = array();
foreach($aFilter as $key => $val)
{
if(is_array($val) || (string)$val == '')
continue;
$key = mb_strtoupper($key);
$val = $DB->ForSql($val);
switch($key)
{
case "ID":
case "ENTITY_ID":
case "FIELD_NAME":
case "USER_TYPE_ID":
case "XML_ID":
case "SORT":
case "MULTIPLE":
case "MANDATORY":
case "SHOW_FILTER":
case "SHOW_IN_LIST":
case "EDIT_IN_LIST":
case "IS_SEARCHABLE":
$arFilter[] = "UF." . $key . " = '" . $val . "'";
break;
case "LANG":
$bLangJoin = $val;
break;
}
}
$arOrder = array();
foreach($aSort as $key => $val)
{
$key = mb_strtoupper($key);
$ord = (mb_strtoupper($val) <> "ASC" ? "DESC" : "ASC");
switch($key)
{
case "ID":
case "ENTITY_ID":
case "FIELD_NAME":
case "USER_TYPE_ID":
case "XML_ID":
case "SORT":
$arOrder[] = "UF." . $key . " " . $ord;
break;
}
}
if(empty($arOrder))
{
$arOrder[] = "UF.SORT asc";
$arOrder[] = "UF.ID asc";
}
DelDuplicateSort($arOrder);
$sOrder = "nORDER BY " . implode(", ", $arOrder);
if(empty($arFilter))
$sFilter = "";
else
$sFilter = "nWHERE " . implode("nAND ", $arFilter);
$strSql = "
SELECT
UF.ID
,UF.ENTITY_ID
,UF.FIELD_NAME
,UF.USER_TYPE_ID
,UF.XML_ID
,UF.SORT
,UF.MULTIPLE
,UF.MANDATORY
,UF.SHOW_FILTER
,UF.SHOW_IN_LIST
,UF.EDIT_IN_LIST
,UF.IS_SEARCHABLE
,UF.SETTINGS
" . ($bLangJoin ? "
,UFL.EDIT_FORM_LABEL
,UFL.LIST_COLUMN_LABEL
,UFL.LIST_FILTER_LABEL
,UFL.ERROR_MESSAGE
,UFL.HELP_MESSAGE
" : "") . "
FROM
b_user_field UF
" . ($bLangJoin ? "LEFT JOIN b_user_field_lang UFL on UFL.LANGUAGE_ID = '" . $bLangJoin . "' AND UFL.USER_FIELD_ID = UF.ID" : "") . "
" . $sFilter . $sOrder;
if(CACHED_b_user_field === false)
{
$res = $DB->Query($strSql, false, "FILE: " . __FILE__ . "
LINE: " . __LINE__);
}
else
{
$arResult = array();
$res = $DB->Query($strSql, false, "FILE: " . __FILE__ . "
LINE: " . __LINE__);
while($ar = $res->Fetch())
$arResult[] = $ar;
/** @noinspection PhpUndefinedVariableInspection */
$CACHE_MANAGER->Set($cacheId, $arResult);
$res = new CDBResult;
$res->InitFromArray($arResult);
}
return new CUserTypeEntity($res);
}