From bbdf8edce88bf11f2988a908fa107c0ecd2851e2 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 14 Jul 2022 12:04:14 +0300 Subject: [PATCH] enum max length validation --- .../Espo/Classes/FieldValidators/EnumType.php | 19 +++++++++++++++++++ .../Espo/Resources/metadata/fields/enum.json | 6 ++++-- 2 files changed, 23 insertions(+), 2 deletions(-) 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": {