- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/entityrequisite.php
- Класс: Bitrix\Crm\EntityRequisite
- Вызов: EntityRequisite::checkRqFieldsBeforeSave
public function checkRqFieldsBeforeSave($requisiteId, $fields)
{
$result = new Main\Result();
$countryId = 0;
$presetId = 0;
$requisiteId = (int)$requisiteId;
$isUpdate = ($requisiteId > 0);
if (isset($fields['PRESET_ID']))
{
$presetId = (int)$fields['PRESET_ID'];
}
if ($presetId > 0)
{
$countryId = $this->getCountryIdByPresetId($presetId);
}
else if ($isUpdate)
{
$countryId = $this->getCountryIdByRequisiteId($requisiteId);
}
if ($countryId < 0)
{
$countryId = 0;
}
$validationMap = $this->getRqFieldValidationMap();
$titleMap = $this->getRqFieldTitleMap();
foreach ($fields as $fieldName => $fieldValue)
{
if (isset($validationMap[$fieldName]) && is_array($validationMap[$fieldName]))
{
foreach ($validationMap[$fieldName] as $validateInfo)
{
if (
isset($validateInfo['type'])
&& is_array($validateInfo['params'])
)
{
if ($validateInfo['type'] === 'length')
{
$params = $validateInfo['params'];
$strValue = strval($fieldValue);
if ($strValue !== '')
{
$title = ($countryId > 0 && isset($titleMap[$fieldName][$countryId])) ?
$titleMap[$fieldName][$countryId] : $fieldName;
$length = mb_strlen($strValue);
if (isset($params['min']) && $params['min'] > 0)
{
if ($length < $params['min'])
{
$message = Loc::getMessage(
'CRM_REQUISITE_FIELD_VALIDATOR_LENGTH_MIN',
[
'#FIELD_TITLE#' => $title,
'#MIN_LENGTH#' => $params['min']
]
);
$result->addError(new Main\Error($message, self::ERR_FIELD_LENGTH_MIN));
}
}
if (isset($params['max']) && $params['max'] > 0)
{
if ($length > $params['max'])
{
$message = Loc::getMessage(
'CRM_REQUISITE_FIELD_VALIDATOR_LENGTH_MAX',
[
'#FIELD_TITLE#' => $title,
'#MAX_LENGTH#' => $params['max']
]
);
$result->addError(new Main\Error($message, self::ERR_FIELD_LENGTH_MAX));
}
}
}
}
}
}
}
}
return $result;
}