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