• Модуль: 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;
}