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