[ticket/10945] Display search query when search fails in native search

If search fails and common words are present, split_keywords returns false
and search.php file prints appropriate message of common words.
If search fails and there are no common words, split_keywords returns true
and keyword_search returns false so that the search query is displayed in
search box.

PHPBB3-10945
This commit is contained in:
Dhruv 2013-11-04 15:34:52 +05:30
parent f4645a6376
commit b6eec5c142

View file

@ -357,22 +357,6 @@ class fulltext_native extends search_backend
$this->{$mode . '_ids'}[] = $words[$word];
}
}
// throw an error if we shall not ignore unexistant words
else if (!$ignore_no_id)
{
if (!isset($common_ids[$word]))
{
$len = utf8_strlen($word);
if ($len >= $this->word_length['min'] && $len <= $this->word_length['max'])
{
trigger_error(sprintf($user->lang['WORD_IN_NO_POST'], $word));
}
else
{
$this->common_words[] = $word;
}
}
}
else
{
$len = utf8_strlen($word);
@ -383,8 +367,11 @@ class fulltext_native extends search_backend
}
}
// we can't search for negatives only
if (!sizeof($this->must_contain_ids))
// If common words are present and no other search results then return false
// search.php will print out appropriate error message.
// If both common words and search results are empty return true and keyword_search()
// later will return false for that condition
if (empty($this->must_contain_ids) && sizeof($this->common_words))
{
return false;
}
@ -428,6 +415,12 @@ class fulltext_native extends search_backend
return false;
}
// we can't search for negatives only
if (empty($this->must_contain_ids))
{
return false;
}
$must_contain_ids = $this->must_contain_ids;
$must_not_contain_ids = $this->must_not_contain_ids;
$must_exclude_one_ids = $this->must_exclude_one_ids;