[aur-dev] [PATCH 2/2] Extract package name from details

Lukas Fleischer lfleischer at archlinux.org
Sat Sep 19 13:16:55 UTC 2015


When requesting package details, instead of performing another SQL query
to obtain the package name, extract the name from the result of the
package details query.

Also, drop pkg_name_from_id() which is no longer needed after this
optimization.

Signed-off-by: Lukas Fleischer <lfleischer at archlinux.org>
---
 web/html/packages.php    | 27 ++++++++++++++-------------
 web/lib/pkgfuncs.inc.php | 36 ------------------------------------
 2 files changed, 14 insertions(+), 49 deletions(-)

diff --git a/web/html/packages.php b/web/html/packages.php
index bf3daf8..38a2e29 100644
--- a/web/html/packages.php
+++ b/web/html/packages.php
@@ -11,19 +11,25 @@ check_sid();                      # see if they're still logged in
 if (!isset($pkgid) || !isset($pkgname)) {
 	if (isset($_GET['ID'])) {
 		$pkgid = intval($_GET['ID']);
-		$pkgname = pkg_name_from_id($_GET['ID']);
 	} else if (isset($_GET['N'])) {
 		$pkgid = pkg_from_name($_GET['N']);
-		$pkgname = $_GET['N'];
 	} else {
-		unset($pkgid, $pkgname);
+		unset($pkgid);
 	}
+}
 
-	if (isset($pkgid) && ($pkgid == 0 || $pkgid == NULL || $pkgname == NULL)) {
-		header("HTTP/1.0 404 Not Found");
-		include "./404.php";
-		return;
-	}
+$details = array();
+if (isset($pkgid)) {
+	$details = pkg_get_details($pkgid);
+	$pkgname = $details['Name'];
+} else {
+	unset($pkgname);
+}
+
+if (isset($pkgid) && ($pkgid == 0 || $pkgid == NULL || $pkgname == NULL)) {
+	header("HTTP/1.0 404 Not Found");
+	include "./404.php";
+	return;
 }
 
 # Set the title to the current query or package name
@@ -35,11 +41,6 @@ if (isset($pkgname)) {
 	$title = __("Packages");
 }
 
-$details = array();
-if (isset($pkgname)) {
-	$details = pkg_get_details($pkgid);
-}
-
 html_header($title, $details);
 ?>
 
diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
index d3cad12..62bea65 100644
--- a/web/lib/pkgfuncs.inc.php
+++ b/web/lib/pkgfuncs.inc.php
@@ -480,42 +480,6 @@ function pkg_sources($pkgid) {
 }
 
 /**
- * Determine package names from package IDs
- *
- * @param string|array $pkgids The package IDs to get names for
- *
- * @return array|string All names if multiple package IDs, otherwise package name
- */
-function pkg_name_from_id($pkgids) {
-	if (is_array($pkgids)) {
-		$pkgids = sanitize_ids($pkgids);
-		$names = array();
-		$dbh = DB::connect();
-		$q = "SELECT Name FROM Packages WHERE ID IN (";
-		$q.= implode(",", $pkgids) . ")";
-		$result = $dbh->query($q);
-		if ($result) {
-			while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
-				$names[] = $row['Name'];
-			}
-		}
-		return $names;
-	}
-	elseif ($pkgids > 0) {
-		$dbh = DB::connect();
-		$q = "SELECT Name FROM Packages WHERE ID = " . $pkgids;
-		$result = $dbh->query($q);
-		if ($result) {
-			$name = $result->fetch(PDO::FETCH_NUM);
-		}
-		return $name[0];
-	}
-	else {
-		return NULL;
-	}
-}
-
-/**
  * Get the package details
  *
  * @param string $id The package ID to get description for
-- 
2.5.2


More information about the aur-dev mailing list