diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
index d760429e..d83a01ff 100644
--- a/web/lib/pkgfuncs.inc.php
+++ b/web/lib/pkgfuncs.inc.php
@@ -154,6 +154,33 @@ function pkg_groups($pkgid) {
return $grps;
}
+/**
+ * Get providers for a specific package
+ *
+ * @param string $name The name of the "package" to get providers for
+ *
+ * @return array The IDs and names of all providers of the package
+ */
+function pkg_providers($name) {
+ $dbh = DB::connect();
+ $q = "SELECT p.ID, p.Name FROM Packages p ";
+ $q.= "INNER JOIN PackageRelations pr ON pr.PackageID = p.ID ";
+ $q.= "INNER JOIN RelationTypes rt ON rt.ID = pr.RelTypeID ";
+ $q.= "WHERE rt.Name = 'provides' ";
+ $q.= "AND pr.RelName = " . $dbh->quote($name);
+ $result = $dbh->query($q);
+
+ if (!$result) {
+ return array();
+ }
+
+ $providers = array();
+ while ($row = $result->fetch(PDO::FETCH_NUM)) {
+ $providers[] = $row;
+ }
+ return $providers;
+}
+
/**
* Get package dependencies for a specific package
*
@@ -232,15 +259,41 @@ function pkg_depend_link($name, $type, $cond, $arch, $pkg_id, $show_desc=true) {
$desc = '(unknown)';
}
- $link = ' 0) {
+ $link = htmlspecialchars($name) . ' ';
+ $link .= '(';
+ foreach ($providers as $provider) {
+ $name = $provider[1];
+ $link .= '';
+ $link .= htmlspecialchars($name) . ', ';
+ }
+ $link = substr($link, 0, -2);
+ $link .= ')';
+ } else {
+ $link = '';
+ $link .= htmlspecialchars($name) . '';
+ $link .= htmlspecialchars($cond);
}
- $link .= '" title="' . __('View packages details for') .' ' . htmlspecialchars($name) . '">';
- $link .= htmlspecialchars($name) . '';
- $link .= htmlspecialchars($cond);
if ($type != 'depends' || $arch) {
$link .= ' (';