From d2917796927c63939026ebfb87a9da93f7296166 Mon Sep 17 00:00:00 2001 From: Janos SUTO Date: Sun, 27 Aug 2017 16:33:02 +0200 Subject: [PATCH] gui: fix folder search Signed-off-by: Janos SUTO --- webui/model/search/search.php | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/webui/model/search/search.php b/webui/model/search/search.php index 3775e46c..38dddeda 100644 --- a/webui/model/search/search.php +++ b/webui/model/search/search.php @@ -196,7 +196,6 @@ class ModelSearchSearch extends Model { array_push($search_folders, $v); } } - array_push($search_folders, 0); } @@ -213,7 +212,7 @@ class ModelSearchSearch extends Model { else if(ENABLE_FOLDER_RESTRICTIONS == 1 && count($search_folders) > 0) { $q2 = "?" . str_repeat(",?", count($search_folders)-1); - if($data['match']) { + if(isset($data['match'][0]) && $data['match'][0]) { // run a query to figure out how many total hits we have $query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE MATCH('$match')"); @@ -223,24 +222,21 @@ class ModelSearchSearch extends Model { $query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE MATCH('$match') OPTION max_matches=" . (int)$query->num_rows); } - if(count($search_folders) > 1) { - $f_bag = array(); - foreach($query->rows as $q) { - array_push($f_bag, $q['id']); - } - - // run a final query to filter which messages are in this folder - $q1 = "?" . str_repeat(",?", count($f_bag)-1); - $f_bag = array_merge($f_bag, $search_folders); - - //$query = $this->db->query("SELECT id FROM " . TABLE_FOLDER_MESSAGE . " WHERE message_id IN ($q1) AND folder_id IN ($q2)", $f_bag); - $query = $this->db->query("SELECT DISTINCT message_id AS id FROM " . TABLE_FOLDER_MESSAGE . " WHERE message_id IN ($q1) AND folder_id IN ($q2)", $f_bag); - - if(LOG_LEVEL >= NORMAL) { syslog(LOG_INFO, sprintf("sql query: '%s' in %.2f s, %d hits", $query->query, $query->exec_time, $query->num_rows)); } + $f_bag = array(); + foreach($query->rows as $q) { + array_push($f_bag, $q['id']); } + + // run a final query to filter which messages are in this folder + $q1 = "?" . str_repeat(",?", count($f_bag)-1); + $f_bag = array_merge($f_bag, $search_folders); + + $query = $this->db->query("SELECT DISTINCT message_id AS id FROM " . TABLE_FOLDER_MESSAGE . " WHERE message_id IN ($q1) AND folder_id IN ($q2)", $f_bag); + + if(LOG_LEVEL >= NORMAL) { syslog(LOG_INFO, sprintf("sql query: '%s' in %.2f s, %d hits", $query->query, $query->exec_time, $query->num_rows)); } } else { - $query = $this->sphx->query("SELECT message_id FROM " . SPHINX_FOLDER_INDEX . " WHERE folder_id IN ($q2) $sortorder LIMIT $offset,$pagelen OPTION max_matches=" . MAX_SEARCH_HITS, $search_folders); + $query = $this->db->query("SELECT message_id AS id FROM " . TABLE_FOLDER_MESSAGE . " WHERE folder_id IN ($q2) LIMIT $offset,$pagelen", $search_folders); } $total_found = $query->total_found;