From a07f6b032a94f9015641d62f9efbf7d26892d8c9 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Sat, 20 Apr 2024 21:47:38 +0300 Subject: [PATCH] sanitizer suppress list, allow empty attachment --- .../Espo/Core/FieldSanitize/SanitizeManager.php | 11 ++++++++++- .../Resources/metadata/entityDefs/Attachment.json | 6 +++++- schema/metadata/entityDefs.json | 7 +++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/application/Espo/Core/FieldSanitize/SanitizeManager.php b/application/Espo/Core/FieldSanitize/SanitizeManager.php index 87326912ef..bb57c34ef5 100644 --- a/application/Espo/Core/FieldSanitize/SanitizeManager.php +++ b/application/Espo/Core/FieldSanitize/SanitizeManager.php @@ -120,7 +120,16 @@ class SanitizeManager /** @var class-string[] $fieldClassNameList */ $fieldClassNameList = $this->metadata->get("entityDefs.$entityType.fields.$field.sanitizerClassNameList") ?? []; + $ignoreList = $this->metadata->get("entityDefs.$entityType.fields.$field.sanitizerSuppressClassNameList") ?? []; - return array_merge($classNameList, $fieldClassNameList); + $list = array_merge($classNameList, $fieldClassNameList); + + if ($ignoreList === []) { + return $list; + } + + $list = array_diff($list, $ignoreList); + + return array_values($list); } } diff --git a/application/Espo/Resources/metadata/entityDefs/Attachment.json b/application/Espo/Resources/metadata/entityDefs/Attachment.json index 018f506ad4..cd8741ca5e 100644 --- a/application/Espo/Resources/metadata/entityDefs/Attachment.json +++ b/application/Espo/Resources/metadata/entityDefs/Attachment.json @@ -48,7 +48,11 @@ }, "contents": { "type": "text", - "notStorable": true + "notStorable": true, + "sanitizerClassNameList": [], + "sanitizerSuppressClassNameList": [ + "Espo\\Classes\\FieldSanitizers\\EmptyStringToNull" + ] }, "role": { "type": "enum", diff --git a/schema/metadata/entityDefs.json b/schema/metadata/entityDefs.json index 0738f2de06..cde3347c11 100644 --- a/schema/metadata/entityDefs.json +++ b/schema/metadata/entityDefs.json @@ -714,6 +714,13 @@ }, "description": "A list of sanitizers. Should implement Espo\\Core\\FieldSanitize\\Sanitizer." }, + "sanitizerSuppressClassNameList": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of sanitizers to be suppressed." + }, "inlineEditDisabled": { "type": "boolean", "default": "Disable inline edit."