- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/usertypemanager.php
- Класс: CUserTypeManager
- Вызов: CUserTypeManager::getUserFieldsWithReadyData
function getUserFieldsWithReadyData($entity_id, $readyData, $LANG = false, $user_id = false, $primaryIdName = 'VALUE_ID')
{
if($readyData === null)
{
return $this->GetUserFields($entity_id, null, $LANG, $user_id);
}
$entity_id = preg_replace("/[^0-9A-Z_]+/", "", $entity_id);
$cacheId = $entity_id . "." . $LANG . '.' . (int)$user_id;
//global $DB;
$result = array();
if(!array_key_exists($cacheId, $this->arFieldsCache))
{
$arFilter = array("ENTITY_ID" => $entity_id);
if($LANG)
$arFilter["LANG"] = $LANG;
$rs = call_user_func_array(array('CUserTypeEntity', 'GetList'), array(array(), $arFilter));
while($arUserField = $rs->Fetch())
{
if($arType = $this->GetUserType($arUserField["USER_TYPE_ID"]))
{
if($user_id !== 0 && is_callable(array($arType["CLASS_NAME"], "checkpermission")))
{
if(!call_user_func_array(array($arType["CLASS_NAME"], "checkpermission"), array($arUserField, $user_id)))
continue;
}
$arUserField["USER_TYPE"] = $arType;
$arUserField["VALUE"] = false;
if(!is_array($arUserField["SETTINGS"]) || empty($arUserField["SETTINGS"]))
$arUserField["SETTINGS"] = $this->PrepareSettings(0, $arUserField);
$result[$arUserField["FIELD_NAME"]] = $arUserField;
}
}
$this->arFieldsCache[$cacheId] = $result;
}
else
$result = $this->arFieldsCache[$cacheId];
foreach($readyData as $key => $value)
{
if(array_key_exists($key, $result))
{
if($result[$key]["MULTIPLE"] == "Y" && !is_array($value))
{
$value = unserialize($value, ['allowed_classes' => false]);
}
$result[$key]["VALUE"] = $this->OnAfterFetch($result[$key], $value);
$result[$key]["ENTITY_VALUE_ID"] = $readyData[$primaryIdName];
}
}
return $result;
}