CCrmRestHelper::prepareFieldInfos

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmRestHelper
  4. prepareFieldInfos
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
  • Класс: \CCrmRestHelper
  • Вызов: CCrmRestHelper::prepareFieldInfos
static function prepareFieldInfos(array &$fieldsInfo)
{
	$result = array();

	foreach($fieldsInfo as $fieldID => &$fieldInfo)
	{
		$attrs = $fieldInfo['ATTRIBUTES'] ?? array();
		// Skip hidden fields
		if(in_array(CCrmFieldInfoAttr::Hidden, $attrs, true))
		{
			continue;
		}

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

		if(in_array(CCrmFieldInfoAttr::Deprecated, $attrs, true))
		{
			$field['isDeprecated'] = true;
		}

		if($fieldType === 'enumeration')
		{
			$field['items'] = $fieldInfo['ITEMS'] ?? array();
		}
		elseif($fieldType === 'crm_status')
		{
			$field['statusType'] = $fieldInfo['CRM_STATUS_TYPE'] ?? '';
		}
		elseif ($fieldType === 'product_property')
		{
			$field['propertyType'] = $fieldInfo['PROPERTY_TYPE'] ?? '';
			$field['userType'] = $fieldInfo['USER_TYPE'] ?? '';
			$field['title'] = $fieldInfo['NAME'] ?? '';
			if ($field['propertyType'] === 'L')
				$field['values'] = $fieldInfo['VALUES'] ?? array();
		}
		elseif ($fieldType === 'recurring_params')
		{
			$field['definition'] = [];
			if (is_array($fieldInfo['FIELDS']))
			{
				$paramFields = self::prepareFieldInfos($fieldInfo['FIELDS']);
				$field['definition'] = is_array($paramFields) ? $paramFields : [];
			}
		}

		if (empty($field['title']))
		{
			$field['title'] = isset($fieldInfo['CAPTION']) && $fieldInfo['CAPTION'] <> '' ? $fieldInfo['CAPTION'] : $fieldID;
		}

		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'];
			}
		}
		if (isset($fieldInfo['SETTINGS']))
		{
			$field['settings'] = $fieldInfo['SETTINGS'];
		}

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

	return $result;
}

Добавить комментарий