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

SVN:trunk[483]
This commit is contained in:
Denis Flaven
2010-06-24 16:52:18 +00:00
parent e9d28e65e4
commit 50ee5f8194

View File

@@ -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)
{