[aur-dev] [PATCH] aurjson: Add package base keywords

Lukas Fleischer lfleischer at archlinux.org
Tue Feb 9 20:55:38 UTC 2016


Expose package base keywords through the RPC interface (version 5).

Signed-off-by: Lukas Fleischer <lfleischer at archlinux.org>
---
 web/lib/aurjson.class.php | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php
index 51a7c64..7f9b5f2 100644
--- a/web/lib/aurjson.class.php
+++ b/web/lib/aurjson.class.php
@@ -175,10 +175,11 @@ class AurJSON {
 	 * Get extended package details (for info and multiinfo queries).
 	 *
 	 * @param $pkgid The ID of the package to retrieve details for.
+	 * @param $base_id The ID of the package base to retrieve details for.
 	 *
 	 * @return array An array containing package details.
 	 */
-	private function get_extended_fields($pkgid) {
+	private function get_extended_fields($pkgid, $base_id) {
 		$query = "SELECT DependencyTypes.Name AS Type, " .
 			"PackageDepends.DepName AS Name, " .
 			"PackageDepends.DepCondition AS Cond " .
@@ -224,6 +225,19 @@ class AurJSON {
 			$data[$type][] = $row['Name'] . $row['Cond'];
 		}
 
+		if ($this->version >= 5) {
+			$query = "SELECT Keyword FROM PackageKeywords " .
+				"WHERE PackageBaseID = " . intval($base_id) . " " .
+				"ORDER BY Keyword ASC";
+			$result = $this->dbh->query($query);
+
+			if (!$result) {
+				return null;
+			}
+
+			$data['Keywords'] = $result->fetchAll(PDO::FETCH_COLUMN, 0);
+		}
+
 		return $data;
 	}
 
@@ -300,7 +314,7 @@ class AurJSON {
 				}
 
 				if ($this->version >= 2 && ($type == 'info' || $type == 'multiinfo')) {
-					$row = array_merge($row, $this->get_extended_fields($row['ID']));
+					$row = array_merge($row, $this->get_extended_fields($row['ID'], $row['PackageBaseID']));
 				}
 
 				if ($this->version < 3) {
-- 
2.7.1


More information about the aur-dev mailing list