• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/entityfieldprovider.php
  • Класс: Bitrix\Crm\WebForm\EntityFieldProvider
  • Вызов: EntityFieldProvider::prepareFields
static function prepareFields(&$fieldsInfo)
{
	$result = array();

	foreach($fieldsInfo as $fieldID => &$fieldInfo)
	{
		if(!self::isFieldAllowed($fieldID, $fieldInfo))
		{
			unset($fieldsInfo[$fieldID]);
			continue;
		}

		$attributes = isset($fieldInfo['ATTRIBUTES']) ? $fieldInfo['ATTRIBUTES'] : array();

		$fieldType = $fieldInfo['TYPE'];
		$field = array(
			'type' => $fieldType,
			'isRequired' => in_array(\CCrmFieldInfoAttr::Required, $attributes, true),
			'isImmutable' => in_array(\CCrmFieldInfoAttr::Immutable, $attributes, true),
			'isMultiple' => in_array(\CCrmFieldInfoAttr::Multiple, $attributes, true),
			'isDynamic' => in_array(\CCrmFieldInfoAttr::Dynamic, $attributes, true)
		);

		$field['settings'] = isset($fieldInfo['SETTINGS']) ? $fieldInfo['SETTINGS'] : array();
		if($fieldType === 'enumeration')
		{
			$field['items'] = isset($fieldInfo['ITEMS']) ? $fieldInfo['ITEMS'] : array();
		}
		elseif($fieldType === 'crm_status')
		{
			$field['statusType'] = isset($fieldInfo['CRM_STATUS_TYPE']) ? $fieldInfo['CRM_STATUS_TYPE'] : '';
		}
		elseif ($fieldType === 'product_property')
		{
			$field['propertyType'] = isset($fieldInfo['PROPERTY_TYPE']) ? $fieldInfo['PROPERTY_TYPE'] : '';
			$field['userType'] = isset($fieldInfo['USER_TYPE']) ? $fieldInfo['USER_TYPE'] : '';
			$field['title'] = isset($fieldInfo['NAME']) ? $fieldInfo['NAME'] : '';
			if ($field['propertyType'] === 'L')
				$field['values'] = isset($fieldInfo['VALUES']) ? $fieldInfo['VALUES'] : array();
		}

		if(isset($fieldInfo['LABELS']) && is_array($fieldInfo['LABELS']))
		{
			$labels = $fieldInfo['LABELS'];
			if(isset($labels['LIST']))
			{
				$field['listLabel'] = $labels['LIST'];
			}
			if(isset($labels['FORM']))
			{
				$field['formLabel'] = $labels['FORM'];
			}
			if(isset($labels['FILTER']))
			{
				$field['filterLabel'] = $labels['FILTER'];
			}
		}

		$result[$fieldID] = &$field;
		unset($field);
	}
	unset($fieldInfo);

	return $result;
}