diff --git a/ext/browser_search/main.php b/ext/browser_search/main.php
index ac4c4dc0..7764c448 100644
--- a/ext/browser_search/main.php
+++ b/ext/browser_search/main.php
@@ -15,11 +15,11 @@ class BrowserSearch extends Extension
// Add in header code to let the browser know that the search plugin exists
// We need to build the data for the header
$search_title = $config->get_string(SetupConfig::TITLE);
- $search_file_url = make_link('browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml');
+ $search_file_url = make_link('browser_search.xml');
$page->add_html_header("");
// The search.xml file that is generated on the fly
- if ($event->page_matches("browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml")) {
+ if ($event->page_matches("browser_search.xml")) {
// First, we need to build all the variables we'll need
$search_title = $config->get_string(SetupConfig::TITLE);
$search_form_url = make_link('post/list/{searchTerms}');
@@ -44,36 +44,30 @@ class BrowserSearch extends Extension
$page->set_mode(PageMode::DATA);
$page->set_type("text/xml");
$page->set_data($xml);
- } elseif (
- $event->page_matches("browser_search") &&
- !$config->get_bool("disable_search_suggestions")
- ) {
+ } elseif ($event->page_matches("browser_search")) {
+ $suggestions = $config->get_string("search_suggestions_results_order");
+ if ($suggestions == "n") {
+ return;
+ }
+
// We have to build some json stuff
$tag_search = $event->get_arg(0);
// Now to get DB results
- if ($config->get_string("search_suggestions_results_order") == "a") {
- $tags = $database->execute("SELECT tag FROM tags WHERE tag LIKE :tag AND count > 0 ORDER BY tag ASC LIMIT 30", ['tag'=>$tag_search."%"]);
+ if ($suggestions == "a") {
+ $order = "tag ASC";
} else {
- $tags = $database->execute("SELECT tag FROM tags WHERE tag LIKE :tag AND count > 0 ORDER BY count DESC LIMIT 30", ['tag'=>$tag_search."%"]);
+ $order = "count DESC";
}
-
+ $tags = $database->get_col(
+ "SELECT tag FROM tags WHERE tag LIKE :tag AND count > 0 ORDER BY $order LIMIT 30",
+ ['tag'=>$tag_search."%"]
+ );
// And to do stuff with it. We want our output to look like:
// ["shimmie",["shimmies","shimmy","shimmie","21 shimmies","hip shimmies","skea shimmies"],[],[]]
- $json_tag_list = "";
-
- $tags_array = [];
- foreach ($tags as $tag) {
- array_push($tags_array, $tag['tag']);
- }
-
- $json_tag_list .= implode("\",\"", $tags_array);
-
- // And now for the final output
- $json_string = "[\"$tag_search\",[\"$json_tag_list\"],[],[]]";
$page->set_mode(PageMode::DATA);
- $page->set_data($json_string);
+ $page->set_data(json_encode([$tag_search, $tags, [], []]));
}
}
@@ -82,10 +76,9 @@ class BrowserSearch extends Extension
$sort_by = [];
$sort_by['Alphabetical'] = 'a';
$sort_by['Tag Count'] = 't';
+ $sort_by['Disabled'] = 'n';
$sb = new SetupBlock("Browser Search");
- $sb->add_bool_option("disable_search_suggestions", "Disable search suggestions: ");
- $sb->add_label(" ");
$sb->add_choice_option("search_suggestions_results_order", $sort_by, "Sort the suggestions by:");
$event->panel->add_block($sb);
}
diff --git a/ext/browser_search/test.php b/ext/browser_search/test.php
index 03e80a93..5fae365f 100644
--- a/ext/browser_search/test.php
+++ b/ext/browser_search/test.php
@@ -3,7 +3,7 @@ class BrowserSearchTest extends ShimmiePHPUnitTestCase
{
public function testBasic()
{
- $page = $this->get_page("browser_search/please_dont_use_this_tag_as_it_would_break_stuff__search.xml");
+ $page = $this->get_page("browser_search.xml");
$this->assertEquals(200, $page->code);
$page = $this->get_page("browser_search/test");