• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/usertypemanager.php
  • Класс: CUserTypeManager
  • Вызов: CUserTypeManager::GetUserFieldValue
function GetUserFieldValue($entity_id, $field_id, $value_id, $LANG = false)
{
	global $DB;
	$entity_id = preg_replace("/[^0-9A-Z_]+/", "", $entity_id);
	$field_id = preg_replace("/[^0-9A-Z_]+/", "", $field_id);
	$value_id = intval($value_id);
	$strTableName = "b_uts_".mb_strtolower($entity_id);
	$result = false;

	$arFilter = array(
		"ENTITY_ID" => $entity_id,
		"FIELD_NAME" => $field_id,
	);
	if($LANG)
		$arFilter["LANG"] = $LANG;
	$rs = CUserTypeEntity::GetList(array(), $arFilter);
	if($arUserField = $rs->Fetch())
	{
		$values = $this->getUserFieldValuesByEvent([$arUserField['FIELD_NAME'] => $arUserField], $entity_id, $value_id);
		if(is_array($values))
		{
			return $values[$arUserField['FIELD_NAME']];
		}
		$arUserField["USER_TYPE"] = $this->GetUserType($arUserField["USER_TYPE_ID"]);
		$arTableFields = $DB->GetTableFields($strTableName);
		if(array_key_exists($field_id, $arTableFields))
		{
			$simpleFormat = true;
			$select = "";
			if($arUserField["MULTIPLE"] == "N")
			{
				if($arType = $arUserField["USER_TYPE"])
				{
					if(is_callable(array($arType["CLASS_NAME"], "FormatField")))
					{
						$select = call_user_func_array(array($arType["CLASS_NAME"], "FormatField"), array($arUserField, $field_id));
						$simpleFormat = false;
					}
				}
			}
			if($simpleFormat)
			{
				$select = $field_id;
			}

			$rs = $DB->Query("SELECT " . $select . " " . $DB->quote('VALUE') . " FROM " . $strTableName . " WHERE VALUE_ID = " . $value_id, false, "FILE: " . __FILE__ . "
LINE: " . __LINE__); if($ar = $rs->Fetch()) { if($arUserField["MULTIPLE"] == "Y") $result = $this->OnAfterFetch($arUserField, unserialize($ar["VALUE"], ['allowed_classes' => false])); else $result = $this->OnAfterFetch($arUserField, $ar["VALUE"]); } } } return $result; }