• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/userfield/dispatcher.php
  • Класс: BitrixMainUserFieldDispatcher
  • Вызов: Dispatcher::processField
protected function processField(array $fieldInfo)
{
	if(!$this->checkFieldDescription($fieldInfo))
	{
		return false;
	}

	if(!SignatureHelper::validateSignature($this->getSignatureManager(), $fieldInfo, $fieldInfo['SIGNATURE']))
	{
		$this->addError(Loc::getMessage('MAIN_UF_DISPATCHER_ERROR_SIGNATURE'), $fieldInfo['FIELD']);

		return false;
	}

	$userFieldInfo = $this->getUserFieldInfo($fieldInfo['ENTITY_ID'], $fieldInfo['FIELD']);

	if(!$userFieldInfo)
	{
		$this->addError(Loc::getMessage('MAIN_UF_DISPATCHER_ERROR_FIELD_NOT_FOUND'), $fieldInfo['FIELD']);

		return false;
	}

	if(isset($fieldInfo['ENTITY_VALUE_ID']))
	{
		$userFieldInfo['ENTITY_VALUE_ID'] = $fieldInfo['ENTITY_VALUE_ID'];
	}

	if(isset($fieldInfo['VALUE']))
	{
		$userFieldInfo['VALUE'] = $fieldInfo['VALUE'];
	}
	else
	{
		unset($userFieldInfo['VALUE']);
	}

	if(isset($fieldInfo['CONTEXT']))
	{
		$userFieldInfo['CONTEXT'] = $fieldInfo['CONTEXT'];
	}

	$this->getView()->setField($userFieldInfo);

	if(array_key_exists('ADDITIONAL', $fieldInfo) && is_array($fieldInfo['ADDITIONAL']))
	{
		foreach($fieldInfo['ADDITIONAL'] as $paramName => $paramValue)
		{
			$this->getView()->setAdditionalParameter($paramName, $paramValue);
		}
	}

	$this->result[$fieldInfo['FIELD']] = array(
		'HTML' => $this->getView()->display(),
		'FIELD' => $this->getResultFieldInfo($userFieldInfo),
	);

	$this->getView()->clear();

	return true;
}