This repository has been archived on 2024-09-05. You can view files and clone it, but cannot push or open issues or pull requests.
shimmie2/ext/autocomplete/main.php
2019-04-26 10:31:23 +01:00

54 lines
1.3 KiB
PHP

<?php
/*
* Name: Autocomplete
* Author: Daku <admin@codeanimu.net>
* Description: Adds autocomplete to search & tagging.
*/
class AutoComplete extends Extension {
public function get_priority(): int {return 30;} // before Home
public function onPageRequest(PageRequestEvent $event) {
global $page, $database;
if($event->page_matches("api/internal/autocomplete")) {
if(!isset($_GET["s"])) return;
$s = strtolower($_GET["s"]);
if(
$s == '' ||
$s == '_' ||
$s == '%' ||
strlen($s) > 32
) return;
//$limit = 0;
$cache_key = "autocomplete-$s";
$limitSQL = "";
$SQLarr = array("search"=>"$s%");
if(isset($_GET["limit"]) && $_GET["limit"] !== 0){
$limitSQL = "LIMIT :limit";
$SQLarr['limit'] = $_GET["limit"];
$cache_key .= "-" . $_GET["limit"];
}
$res = $database->cache->get($cache_key);
if(!$res) {
$res = $database->get_pairs($database->scoreql_to_sql("
SELECT tag, count
FROM tags
WHERE SCORE_STRNORM(tag) LIKE SCORE_STRNORM(:search)
AND count > 0
ORDER BY count DESC
$limitSQL"), $SQLarr
);
$database->cache->set($cache_key, $res, 600);
}
$page->set_mode("data");
$page->set_type("application/json");
$page->set_data(json_encode($res));
}
$this->theme->build_autocomplete($page);
}
}