From b6eec5c142da665248a914ef2d47aad3f2367f4b Mon Sep 17 00:00:00 2001 From: Dhruv Date: Mon, 4 Nov 2013 15:34:52 +0530 Subject: [PATCH] [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 --- phpBB/includes/search/fulltext_native.php | 29 +++++++++-------------- 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/phpBB/includes/search/fulltext_native.php b/phpBB/includes/search/fulltext_native.php index dc961f3c8a..5e116efebc 100644 --- a/phpBB/includes/search/fulltext_native.php +++ b/phpBB/includes/search/fulltext_native.php @@ -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;