From 9e9820ff5877f6b0a9c3c2be5127517b9f05a327 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Thu, 1 Mar 2012 16:31:20 +0100 Subject: Extend pkgname_from_id() to arrays of IDs This allows for getting the package names of multiple packages at once, without having to iterate over them and making one DB query per package. pkgname_from_id() now accepts both integer arrays and single integers (backwards compatibility mode). Signed-off-by: Lukas Fleischer --- web/lib/pkgfuncs.inc.php | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'web') diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index ef9d461..2dcbec8 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -269,20 +269,37 @@ function pkgnotify_from_sid($sid="", $dbh=NULL) { # get name of package based on pkgid # -function pkgname_from_id($pkgid, $dbh=NULL) { - $pkgid = intval($pkgid); - $name = ""; - if ($pkgid > 0) { +function pkgname_from_id($pkgids, $dbh=NULL) { + if (is_array($pkgids)) { + $pkgids = sanitize_ids($pkgids); + $names = array(); if(!$dbh) { $dbh = db_connect(); } - $q = "SELECT Name FROM Packages WHERE ID = " . $pkgid; + $q = "SELECT Name FROM Packages WHERE ID IN (" . + implode(",", $pkgids) . ")"; + $result = db_query($q, $dbh); + if (mysql_num_rows($result) > 0) { + while ($row = mysql_fetch_assoc($result)) { + $names[] = $row['Name']; + } + } + return $names; + } + elseif ($pkgids > 0) { + if(!$dbh) { + $dbh = db_connect(); + } + $q = "SELECT Name FROM Packages WHERE ID = " . $pkgids; $result = db_query($q, $dbh); if (mysql_num_rows($result) > 0) { $name = mysql_result($result, 0); } + return $name; + } + else { + return NULL; } - return $name; } # Check if a package name is blacklisted. -- cgit v1.2.3-54-g00ecf