- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/webform/requisite.php
- Класс: Bitrix\Crm\WebForm\Requisite
- Вызов: Requisite::getPresets
public function getPresets(): array
{
$list = [];
foreach (array_keys(EntityPreset::getActiveItemList()) as $id)
{
$preset = EntityPreset::getSingleInstance()->getById($id);
if (!$preset)
{
continue;
}
$countryId = (int)$preset['COUNTRY_ID'];
$presetSettings = is_array($preset['SETTINGS'] ?? 0) ? $preset['SETTINGS'] : [];
$fieldNames = EntityPreset::getSingleInstance()->settingsGetFields($presetSettings);
$fieldNames = array_column($fieldNames, 'FIELD_NAME');
$hasAddress = in_array(EntityRequisite::ADDRESS, $fieldNames);
$fields = $this->getReqFields(
$countryId,
array_diff(
$fieldNames,
[EntityRequisite::ADDRESS]
)
);
if ($hasAddress)
{
$fields = array_merge($fields, $this->getAddressTypes($countryId));
}
if ($this->splitAccountFields)
{
foreach ($this->getBankingFields($countryId) as $accountField)
{
//$accountField['name'] = 'RQ_ACC_' . $accountField['name'];
$fields[] = $accountField;
}
}
else
{
$fields[] = [
'name' => 'RQ_ACC',
'type' => 'account',
'label' => 'Banking account',
'fields' => $this->getBankingFields($countryId),
];
}
$validationMap = EntityRequisite::getSingleInstance()->getRqFieldValidationMap();
$fields = array_map(
function (array $field) use ($validationMap)
{
$name = $field['name'];
$validators = $validationMap[$name] ?? [];
if (Main\Type\Collection::isAssociative($validators))
{
$validators = [$validators];
}
foreach ($validators as $validator)
{
if ($validator['type'] !== 'length')
{
continue;
}
$field['size'] = [
'min' => (int)($validator['params']['min'] ?? 0),
'max' => (int)($validator['params']['max'] ?? 0),
];
break;
}
return $field;
},
$fields
);
$list[] = [
'id' => (int)$preset['ID'],
'label' => $preset['NAME'],
'countryId' => $countryId,
'fields' => $fields,
];
}
return $list;
}