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