From 79793ebff6735df8e14427274fc8aad3292247f3 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 14 Apr 2022 11:14:19 +0300 Subject: [PATCH] email search fix --- .../Espo/Classes/Select/Email/TextFilter.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/application/Espo/Classes/Select/Email/TextFilter.php b/application/Espo/Classes/Select/Email/TextFilter.php index 6c44206b82..9b20593909 100644 --- a/application/Espo/Classes/Select/Email/TextFilter.php +++ b/application/Espo/Classes/Select/Email/TextFilter.php @@ -63,12 +63,12 @@ class TextFilter implements Filter public function apply(QueryBuilder $queryBuilder, Data $data): void { $filter = $data->getFilter(); + $ftWhereItem = $data->getFullTextSearchWhereItem(); if ( mb_strlen($filter) < $this->config->getMinLengthForContentSearch() || strpos($filter, '@') === false || - $data->forceFullTextSearch() || - $data->getFullTextSearchWhereItem() + $data->forceFullTextSearch() ) { $this->defaultFilter->apply($queryBuilder, $data); @@ -77,15 +77,25 @@ class TextFilter implements Filter $emailAddressId = $this->getEmailAddressIdByValue($filter); + $orGroupBuilder = OrGroup::createBuilder(); + + if ($ftWhereItem) { + $orGroupBuilder->add($ftWhereItem); + } + if (!$emailAddressId) { - $queryBuilder->where(['id' => null]); + $orGroupBuilder->add( + Cmp::equal(Expr::column('id'), null) + ); + + $queryBuilder->where($orGroupBuilder->build()); return; } $this->leftJoinEmailAddress($queryBuilder); - $orGroupBuilder = OrGroup::createBuilder() + $orGroupBuilder ->add( Cmp::equal( Expr::column('fromEmailAddressId'),