diff options
author | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-07-23 15:55:11 +0200 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-07-23 17:53:30 +0200 |
commit | 0a357a7d44aa3591c646daded8c25853eeafa5a3 (patch) | |
tree | c81174178f914c45906c4d071011a13558f20094 /web/lib | |
parent | 48ae736068f9953ba69c91190ef7eb7b056c2b50 (diff) | |
download | aur-0a357a7d44aa3591c646daded8c25853eeafa5a3.tar.gz aur-0a357a7d44aa3591c646daded8c25853eeafa5a3.tar.xz |
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 <archlinux@cryptocrack.de>
Diffstat (limited to 'web/lib')
-rw-r--r-- | web/lib/aurjson.class.php | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php index 8187bef5..b31143e7 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); + } } |