diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 153e2a83..5c30a95a 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -116,8 +116,9 @@ function pkg_dependencies($pkgid) { $pkgid = intval($pkgid); if ($pkgid > 0) { $dbh = DB::connect(); - $q = "SELECT pd.DepName, pd.DepCondition, p.ID FROM PackageDepends pd "; + $q = "SELECT pd.DepName, dt.Name, pd.DepCondition, p.ID FROM PackageDepends pd "; $q.= "LEFT JOIN Packages p ON pd.DepName = p.Name "; + $q.= "LEFT JOIN DependencyTypes dt ON dt.ID = pd.DepTypeID "; $q.= "WHERE pd.PackageID = ". $pkgid . " "; $q.= "ORDER BY pd.DepName"; $result = $dbh->query($q); @@ -146,6 +147,46 @@ function pkg_dependency_type_id_from_name($name) { return $result->fetch(PDO::FETCH_COLUMN, 0); } +/** + * Get the HTML code to display a package dependency link + * + * @param string $name The name of the dependency + * @param string $type The name of the dependency type + * @param string $cond The package dependency condition string + * @param int $pkg_id The package of the package to display the dependency for + * + * @return string The HTML code of the label to display + */ +function pkg_depend_link($name, $type, $cond, $pkg_id) { + if ($type == 'optdepends' && strpos($name, ':') !== false) { + $tokens = explode(':', $name, 2); + $name = $tokens[0]; + $desc = $tokens[1]; + } else { + $desc = '(unknown)'; + } + + $link = ''; + $link .= htmlspecialchars($name) . ''; + $link .= htmlspecialchars($cond); + + if ($type == 'makedepends') { + $link .= ' (make)'; + } elseif ($type == 'checkdepends') { + $link .= ' (check)'; + } elseif ($type == 'optdepends') { + $link .= ' (optional) – ' . htmlspecialchars($desc) . ' '; + } + + return $link; +} + /** * Determine packages that depend on a package * diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php index 3eaeac79..ef40f1f6 100644 --- a/web/template/pkg_details.php +++ b/web/template/pkg_details.php @@ -219,16 +219,9 @@ if ($row["MaintainerUID"]):