From fcc13ef10c3e20523af6fbc8fb8e87506ed6d0d1 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Mon, 13 Feb 2023 10:14:43 +0200 Subject: [PATCH] skip text search for email address if whitespaces --- application/Espo/Core/Select/Text/DefaultFilter.php | 8 ++++++++ .../Espo/Core/Select/Text/MetadataProvider.php | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/application/Espo/Core/Select/Text/DefaultFilter.php b/application/Espo/Core/Select/Text/DefaultFilter.php index 77a93fae6b..18bab91708 100644 --- a/application/Espo/Core/Select/Text/DefaultFilter.php +++ b/application/Espo/Core/Select/Text/DefaultFilter.php @@ -104,6 +104,14 @@ class DefaultFilter implements Filter return; } + if ( + !str_contains($attribute, '.') && + $this->metadataProvider->getFieldType($this->entityType, $attribute) === 'email' && + str_contains($filter, ' ') + ) { + return; + } + $expression = $filter; if (!$skipWildcards) { diff --git a/application/Espo/Core/Select/Text/MetadataProvider.php b/application/Espo/Core/Select/Text/MetadataProvider.php index a58d3ab81a..f81d6774d8 100644 --- a/application/Espo/Core/Select/Text/MetadataProvider.php +++ b/application/Espo/Core/Select/Text/MetadataProvider.php @@ -120,6 +120,17 @@ class MetadataProvider ->getType(); } + public function getFieldType(string $entityType, string $field): ?string + { + $entityDefs = $this->ormDefs->getEntity($entityType); + + if (!$entityDefs->hasField($field)) { + return null; + } + + return $entityDefs->getField($field)->getType(); + } + public function getRelationEntityType(string $entityType, string $link): ?string { $relationDefs = $this->ormDefs