- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/webform/options/fields.php
- Класс: Bitrix\Crm\WebForm\Options\Fields
- Вызов: Fields::getTabletFormattedField
private function getTabletFormattedField(array $options)
{
$options = self::filterFieldOptions($options);
$field = self::$fields[$options['name']];
$type = $this->getTabletFieldType($options, $field);
$data = array(
'ID' => $options['editing']['id'] ?? null,
'CODE' => $options['name'],
'TYPE' => $type,
'CAPTION' => self::isTypeHasLabel($type)
? $options['label']
: '',
'SORT' => (int) $options['sort'],
'ITEMS' => $this->getTabletFormattedFieldItems($options),
'SETTINGS_DATA' => [],
'VALUE_TYPE' => $options['editing']['editable']['valueType'],
'VALUE' => $options['value']
);
$multipleOriginal = $field['MULTIPLE_ORIGINAL'] ?? false;
if($data['TYPE'] == 'product')
{
$data['SETTINGS_DATA']['BIG_PIC'] = ($options['bigPic'] ?? false) ? 'Y' : 'N';
$multipleOriginal = true;
}
if($data['TYPE'] == 'file')
{
if (!self::isFieldFileImage($options['name']))
{
$data['SETTINGS_DATA']['CONTENT_TYPES'] = is_array($options['contentTypes'] ?? null)
? $options['contentTypes']
: []
;
}
$data['SETTINGS_DATA']['MAX_SIZE_MB'] = is_numeric($options['maxSizeMb'] ?? null)
? max(intval($options['maxSizeMb']), 0)
: null
;
if ($options['maxSizeMb'] === '')
{
$data['SETTINGS_DATA']['MAX_SIZE_MB'] = -1;
}
}
if($data['TYPE'] === 'rq')
{
$data['SETTINGS_DATA']['REQUISITE'] = WebForm\Requisite::instance()
->convertOptionsToSettings($options['requisite'] ?? [])
;
}
if (isset($options['autocomplete']))
{
$data['SETTINGS_DATA']['AUTOCOMPLETE'] = ($options['autocomplete'] ?? false) ? 'Y' : 'N';
}
if (isset($options['hint']))
{
$data['SETTINGS_DATA']['HINT'] = $options['hint'];
}
if (isset($options['hintOnFocus']))
{
$data['SETTINGS_DATA']['HINT_ON_FOCUS'] = ($options['hintOnFocus'] ?? false) ? 'Y' : 'N';
}
if (isset($options['size']) && is_array($options['size']))
{
$data['SETTINGS_DATA']['SIZE'] = [
'min' => (int)($options['size']['min'] ?? 0),
'max' => (int)($options['size']['max'] ?? 0),
];
}
$data['REQUIRED'] = $options['required'] ? 'Y' : 'N';
$data['MULTIPLE'] = $options['multiple'] && $multipleOriginal ? 'Y' : 'N';
if($data['TYPE'] == 'section' || $data['TYPE'] == 'page')
{
$data['REQUIRED'] = 'N';
$data['MULTIPLE'] = 'N';
}
else
{
$data['PLACEHOLDER'] = $options['PLACEHOLDER'];
}
if(isset($data['VALUE_TYPE']) && isset($field['VALUE_TYPE_ORIGINAL']))
{
$isValueTypeExisted = false;
foreach($field['VALUE_TYPE_ORIGINAL'] as $valueTypeItem)
{
if($valueTypeItem['ID'] == $field['VALUE_TYPE'])
{
$isValueTypeExisted = true;
break;
}
}
if($isValueTypeExisted)
{
$data['VALUE_TYPE'] = $field['VALUE_TYPE'];
}
}
if(is_array($data['ITEMS']))
{
foreach($data['ITEMS'] as $itemId => $item)
{
$unknownItemKeys = array_diff(
array_keys($item),
array('ID', 'VALUE', 'PRICE', 'CUSTOM_PRICE', 'DISCOUNT', 'NAME', 'SELECTED', 'DISABLED')
);
if(count($unknownItemKeys) == 0)
{
continue;
}
foreach($unknownItemKeys as $unknownItemKey)
{
unset($data['ITEMS'][$itemId][$unknownItemKey]);
}
}
$data['ITEMS'] = array_values($data['ITEMS']);
}
if($data['CAPTION'] === ($field['ENTITY_FIELD_CAPTION'] ?? null))
{
$data['CAPTION'] = '';
}
if(is_array($field['SETTINGS_DATA']))
{
$data['SETTINGS_DATA'] = $field['SETTINGS_DATA'];
}
if($data['TYPE'] === WebForm\Internals\FieldTable::TYPE_ENUM_RESOURCEBOOKING)
{
$settingsData = $options['booking']['settings_data'] ?? [];
$data['SETTINGS_DATA'] = $settingsData;
}
if($data['TYPE'] === WebForm\Internals\FieldTable::TYPE_ENUM_RQ)
{
$data['SETTINGS_DATA'] = WebForm\Requisite::instance()
->convertSettingsToOptions($options['requisite'] ?? [])
;
}
return $data;
}