From 0a357a7d44aa3591c646daded8c25853eeafa5a3 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 23 Jul 2014 15:55:11 +0200 Subject: Add typeahead suggest to the merge request form Add the typeahead implementation we already use for the package search to the merge target text field. Instead of suggesting packages, suggest package base names. Signed-off-by: Lukas Fleischer --- web/lib/aurjson.class.php | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'web/lib/aurjson.class.php') diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php index 8187bef..b31143e 100644 --- a/web/lib/aurjson.class.php +++ b/web/lib/aurjson.class.php @@ -13,7 +13,8 @@ class AurJSON { private $dbh = false; private $version = 1; private static $exposed_methods = array( - 'search', 'info', 'multiinfo', 'msearch', 'suggest' + 'search', 'info', 'multiinfo', 'msearch', 'suggest', + 'suggest-pkgbase' ); private static $fields_v1 = array( 'Packages.ID', 'Packages.Name', @@ -74,7 +75,8 @@ class AurJSON { $this->dbh = DB::connect(); - $json = call_user_func(array(&$this, $http_data['type']), $http_data['arg']); + $type = str_replace('-', '_', $http_data['type']); + $json = call_user_func(array(&$this, $type), $http_data['arg']); $etag = md5($json); header("Etag: \"$etag\""); @@ -404,5 +406,27 @@ class AurJSON { return json_encode($result_array); } + + /* + * Get all package base names that start with $search. + * + * @param string $search Search string. + * + * @return string The JSON formatted response data. + */ + private function suggest_pkgbase($search) { + $query = 'SELECT Name FROM PackageBases WHERE Name LIKE ' . + $this->dbh->quote(addcslashes($search, '%_') . '%') . + ' ORDER BY Name ASC LIMIT 20'; + + $result = $this->dbh->query($query); + $result_array = array(); + + if ($result) { + $result_array = $result->fetchAll(PDO::FETCH_COLUMN, 0); + } + + return json_encode($result_array); + } } -- cgit v1.2.3-70-g09d2