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."