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>
This commit is contained in:
Lukas Fleischer 2015-10-04 09:50:05 +02:00
parent bc2ee0c63f
commit 261c7f74dd

View file

@ -17,7 +17,7 @@ class AurJSON {
'suggest-pkgbase', 'get-comment-form' 'suggest-pkgbase', 'get-comment-form'
); );
private static $exposed_fields = array( private static $exposed_fields = array(
'name', 'name-desc' 'name', 'name-desc', 'maintainer'
); );
private static $fields_v1 = array( private static $fields_v1 = array(
'Packages.ID', 'Packages.Name', 'Packages.ID', 'Packages.Name',
@ -358,23 +358,32 @@ class AurJSON {
*/ */
private function search($http_data) { private function search($http_data) {
$keyword_string = $http_data['arg']; $keyword_string = $http_data['arg'];
if (isset($http_data['search_by'])) { if (isset($http_data['search_by'])) {
$search_by = $http_data['search_by']; $search_by = $http_data['search_by'];
} else { } else {
$search_by = 'name-desc'; $search_by = 'name-desc';
} }
if (strlen($keyword_string) < 2) { if ($search_by === 'name' || $search_by === 'name-desc') {
return $this->json_error('Query arg too small'); if (strlen($keyword_string) < 2) {
} return $this->json_error('Query arg too small');
}
$keyword_string = $this->dbh->quote("%" . addcslashes($keyword_string, '%_') . "%");
$keyword_string = $this->dbh->quote("%" . addcslashes($keyword_string, '%_') . "%"); if ($search_by === 'name') {
$where_condition = "(Packages.Name LIKE $keyword_string)";
if ($search_by === 'name') { } else if ($search_by === 'name-desc') {
$where_condition = "(Packages.Name LIKE $keyword_string)"; $where_condition = "(Packages.Name LIKE $keyword_string OR ";
} else if ($search_by === 'name-desc') { $where_condition .= "Description LIKE $keyword_string)";
$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); 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 * @return mixed Returns an array of value data containing the package data
*/ */
private function msearch($http_data) { private function msearch($http_data) {
$maintainer = $http_data['arg']; $http_data['search_by'] = 'maintainer';
return $this->search($http_data);
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);
} }
/* /*