Explorar el Código

- global search enhancement: search for several words when the search search string contains spaces, unless it is surrounded by quotes.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@483 a333f486-631f-4898-b8df-5754b55c2be0
dflaven hace 15 años
padre
commit
22171aeccc
Se han modificado 1 ficheros con 15 adiciones y 1 borrados
  1. 15 1
      pages/UI.php

+ 15 - 1
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 <word1> AND <word2> AND <word3>
+					$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)
 					{