From 50ee5f81942f92adedf3ccb90ff6d6dad82d0998 Mon Sep 17 00:00:00 2001 From: Denis Flaven Date: Thu, 24 Jun 2010 16:52:18 +0000 Subject: [PATCH] - global search enhancement: search for several words when the search search string contains spaces, unless it is surrounded by quotes. SVN:trunk[483] --- pages/UI.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pages/UI.php b/pages/UI.php index 991c608656..ef0c20ffa9 100644 --- a/pages/UI.php +++ b/pages/UI.php @@ -519,10 +519,24 @@ try $iCount = 0; $iBlock = 0; // Search in full text mode in all the classes + $aMatches = array(); + if (preg_match('/^"(.*)"$/', $sFullText, $aMatches)) + { + // The text is surrounded by double-quotes, remove the quotes and treat it as one single expression + $aFullTextNeedles = array($aMatches[1]); + } + else + { + // Split the text on the blanks and treat this as a search for AND AND + $aFullTextNeedles = explode(' ', $sFullText); + } foreach(MetaModel::GetClasses('bizmodel') as $sClassName) { $oFilter = new DBObjectSearch($sClassName); - $oFilter->AddCondition_FullText($sFullText); + foreach($aFullTextNeedles as $sSearchText) + { + $oFilter->AddCondition_FullText($sSearchText); + } $oSet = new DBObjectSet($oFilter); if ($oSet->Count() > 0) {