Index: trunk/kernel/frontaction.php =================================================================== diff -u -r827 -r836 --- trunk/kernel/frontaction.php (.../frontaction.php) (revision 827) +++ trunk/kernel/frontaction.php (.../frontaction.php) (revision 836) @@ -767,26 +767,58 @@ $keywords = $_POST["keywords"]; $type = $objItemTypes->GetTypeByName("Category"); $objSearch = new clsSearchResults("Category","clsCategory"); + $length = $objConfig->Get('Search_MinKeyword_Length'); if(strlen($keywords)) - { - $objSearchList = new clsSearchLogList(); - $objSearchList->UpdateKeyword($keywords,0); + { + $performSearch = false; + $isExact = (substr($keywords, 0, 1) == '"' && substr($keywords, strlen($keywords) - 1, 1) == '"'); - $objSearch->SetKeywords($keywords); - $objSearch->AddSimpleFields(); - if(is_numeric($objConfig->Get("SearchRel_Pop_category"))) - $objSearch->PctPop = ($objConfig->Get("SearchRel_Pop_category")/100); - if(is_numeric($objConfig->Get("SearchRel_Keyword_category"))) - $objSearch->PctRelevance = ($objConfig->Get("SearchRel_Keyword_category")/100); - if(is_numeric($objConfig->Get("SearchRel_Rating_article"))) - $objSearch->PctRating = ($objConfig->Get("SearchRel_Rating_category")/100); - - //echo "Searching On $keywords
\n"; - $objSearch->PerformSearch(1,$SortOrder,TRUE); - $SearchPerformed = TRUE; - //$objSearch->SetRelevence($type->Get("ItemType"), "CategoryId"); - //echo "Finished Setting Category Relevence
\n"; + if ($isExact) { + $performSearch = (strlen(trim(str_replace('"', '', $keywords))) >= $length); + } + else { + $key_arr = explode(' ', $keywords); + + foreach($key_arr as $value) { + if (strlen($value) < $length) { + $keywords = str_replace(' '.$value, '', $keywords); + $keywords = str_replace($value.' ', '', $keywords); + } + } + + $keywords = str_replace(' ', ' ', $keywords); + + $performSearch = (strlen($keywords) >= $length); + } + + if ($performSearch) { + $objSearchList = new clsSearchLogList(); + $objSearchList->UpdateKeyword($keywords,0); + + $objSearch->SetKeywords($keywords); + $objSearch->AddSimpleFields(); + if(is_numeric($objConfig->Get("SearchRel_Pop_category"))) + $objSearch->PctPop = ($objConfig->Get("SearchRel_Pop_category")/100); + if(is_numeric($objConfig->Get("SearchRel_Keyword_category"))) + $objSearch->PctRelevance = ($objConfig->Get("SearchRel_Keyword_category")/100); + if(is_numeric($objConfig->Get("SearchRel_Rating_article"))) + $objSearch->PctRating = ($objConfig->Get("SearchRel_Rating_category")/100); + + //echo "Searching On $keywords
\n"; + $objSearch->PerformSearch(1,$SortOrder,TRUE); + $SearchPerformed = TRUE; + //$objSearch->SetRelevence($type->Get("ItemType"), "CategoryId"); + //echo "Finished Setting Category Relevence
\n"; + } + else { + if(strlen($_GET["Error"])>0) + $var_list["t"] = $_GET["Error"]; + + $MissingCount = SetMissingDataErrors("m_simplesearch"); + $MissingCount++; + $FormError["m_simplesearch"]["keywords"] = language("lu_keywords_tooshort"); + } } else { @@ -853,8 +885,32 @@ $keywords = $_POST["keywords"]; $type = $objItemTypes->GetTypeByName("Category"); $objSearch = new clsSearchResults("Category","clsCategory"); + $length = $objConfig->Get('Search_MinKeyword_Length'); + if(strlen($keywords)) - { + { + $performSearch = false; + $isExact = (substr($keywords, 0, 1) == '"' && substr($keywords, strlen($keywords) - 1, 1) == '"'); + + if ($isExact) { + $performSearch = (strlen(trim(str_replace('"', '', $keywords))) >= $length); + } + else { + $key_arr = explode(' ', $keywords); + + foreach($key_arr as $value) { + if (strlen($value) < $length) { + $keywords = str_replace(' '.$value, '', $keywords); + $keywords = str_replace($value.' ', '', $keywords); + } + } + + $keywords = str_replace(' ', ' ', $keywords); + + $performSearch = (strlen($keywords) >= $length); + } + + if ($performSearch) { $objSearchList = new clsSearchLogList(); $objSearchList->UpdateKeyword($keywords,0); @@ -874,6 +930,12 @@ //$objSearch->SetRelevence($type->Get("ItemType"), "CategoryId"); } $SearchPerformed = TRUE; + } + else { + $MissingCount = SetMissingDataErrors("m_simplesearch"); + $MissingCount++; + $FormError["m_simplesearch"]["keywords"] = language("lu_keywords_tooshort"); + } } else { $MissingCount = SetMissingDataErrors("m_simplesearch");