From 9cae17ff7c4eeb7af66e06ba38de3b64d08dec2f Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 18 Sep 2015 08:02:33 +0200 Subject: Extract package name from details 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 --- 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 bf3daf88..38a2e296 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 d3cad12f..62bea652 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -479,42 +479,6 @@ function pkg_sources($pkgid) { return $sources; } -/** - * 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 * -- cgit v1.2.3-24-g4f1b