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