diff --git a/application/Espo/Classes/FieldValidators/EnumType.php b/application/Espo/Classes/FieldValidators/EnumType.php index 1b8ea5bc5b..7a90fab053 100644 --- a/application/Espo/Classes/FieldValidators/EnumType.php +++ b/application/Espo/Classes/FieldValidators/EnumType.php @@ -40,6 +40,8 @@ class EnumType private Defs $defs; + private const DEFAULT_MAX_LENGTH = 255; + public function __construct(Metadata $metadata, Defs $defs) { $this->metadata = $metadata; @@ -94,6 +96,23 @@ class EnumType return in_array($value, $optionList); } + public function checkMaxLength(Entity $entity, string $field, ?int $validationValue): bool + { + if (!$this->isNotEmpty($entity, $field)) { + return true; + } + + $value = $entity->get($field); + + $maxLength = $validationValue ?? self::DEFAULT_MAX_LENGTH; + + if (mb_strlen($value) > $maxLength) { + return false; + } + + return true; + } + protected function isNotEmpty(Entity $entity, string $field): bool { return $entity->has($field) && $entity->get($field) !== null; diff --git a/application/Espo/Resources/metadata/fields/enum.json b/application/Espo/Resources/metadata/fields/enum.json index c9b88eebe0..269160516f 100644 --- a/application/Espo/Resources/metadata/fields/enum.json +++ b/application/Espo/Resources/metadata/fields/enum.json @@ -50,10 +50,12 @@ ], "validationList": [ "required", - "valid" + "valid", + "maxLength" ], "mandatoryValidationList": [ - "valid" + "valid", + "maxLength" ], "filter": true, "fieldDefs": {