summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@archlinux.org>2015-10-04 09:50:05 +0200
committerLukas Fleischer <lfleischer@archlinux.org>2015-10-04 11:40:37 +0200
commit261c7f74dd17ad277fc9e1a1478983749578f133 (patch)
treea7ee388805ed2708d681ffe1d528dbe15f6c58a8 /web
parentbc2ee0c63fcb18c0ab6494b167803a0b25a4a158 (diff)
downloadaurweb-261c7f74dd17ad277fc9e1a1478983749578f133.tar.xz
aurjson: Add "maintainer" search type
Deprecate the msearch command and add a new search type to the search command. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
Diffstat (limited to 'web')
-rw-r--r--web/lib/aurjson.class.php43
1 files changed, 22 insertions, 21 deletions
diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php
index 8ca028a..f4d5b3e 100644
--- a/web/lib/aurjson.class.php
+++ b/web/lib/aurjson.class.php
@@ -17,7 +17,7 @@ class AurJSON {
'suggest-pkgbase', 'get-comment-form'
);
private static $exposed_fields = array(
- 'name', 'name-desc'
+ 'name', 'name-desc', 'maintainer'
);
private static $fields_v1 = array(
'Packages.ID', 'Packages.Name',
@@ -358,23 +358,32 @@ class AurJSON {
*/
private function search($http_data) {
$keyword_string = $http_data['arg'];
+
if (isset($http_data['search_by'])) {
$search_by = $http_data['search_by'];
} else {
$search_by = 'name-desc';
}
- if (strlen($keyword_string) < 2) {
- return $this->json_error('Query arg too small');
- }
-
- $keyword_string = $this->dbh->quote("%" . addcslashes($keyword_string, '%_') . "%");
+ if ($search_by === 'name' || $search_by === 'name-desc') {
+ if (strlen($keyword_string) < 2) {
+ return $this->json_error('Query arg too small');
+ }
+ $keyword_string = $this->dbh->quote("%" . addcslashes($keyword_string, '%_') . "%");
- if ($search_by === 'name') {
- $where_condition = "(Packages.Name LIKE $keyword_string)";
- } else if ($search_by === 'name-desc') {
- $where_condition = "(Packages.Name LIKE $keyword_string OR ";
- $where_condition .= "Description LIKE $keyword_string)";
+ if ($search_by === 'name') {
+ $where_condition = "(Packages.Name LIKE $keyword_string)";
+ } else if ($search_by === 'name-desc') {
+ $where_condition = "(Packages.Name LIKE $keyword_string OR ";
+ $where_condition .= "Description LIKE $keyword_string)";
+ }
+ } else if ($search_by === 'maintainer') {
+ if (empty($keyword_string)) {
+ $where_condition = "Users.ID is NULL";
+ } else {
+ $keyword_string = $this->dbh->quote($keyword_string);
+ $where_condition = "Users.Username = $keyword_string ";
+ }
}
return $this->process_query('search', $where_condition);
@@ -443,16 +452,8 @@ class AurJSON {
* @return mixed Returns an array of value data containing the package data
*/
private function msearch($http_data) {
- $maintainer = $http_data['arg'];
-
- if (empty($maintainer)) {
- $where_condition = "Users.ID is NULL";
- } else {
- $maintainer = $this->dbh->quote($maintainer);
- $where_condition = "Users.Username = $maintainer ";
- }
-
- return $this->process_query('msearch', $where_condition);
+ $http_data['search_by'] = 'maintainer';
+ return $this->search($http_data);
}
/*