summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/lib/pkgfuncs.inc.php43
-rw-r--r--web/template/pkg_details.php13
2 files changed, 45 insertions, 11 deletions
diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
index 153e2a8..5c30a95 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);
@@ -147,6 +148,46 @@ function pkg_dependency_type_id_from_name($name) {
}
/**
+ * 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 = '<a href="';
+ if (is_null($pkg_id)) {
+ $link .= 'https://www.archlinux.org/packages/?q=' . urlencode($name);
+ } else {
+ $link .= htmlspecialchars(get_pkg_uri($name), ENT_QUOTES);
+ }
+ $link .= '" title="' . __('View packages details for') .' ' . htmlspecialchars($name) . '">';
+ $link .= htmlspecialchars($name) . '</a>';
+ $link .= htmlspecialchars($cond);
+
+ if ($type == 'makedepends') {
+ $link .= ' <em>(make)</em>';
+ } elseif ($type == 'checkdepends') {
+ $link .= ' <em>(check)</em>';
+ } elseif ($type == 'optdepends') {
+ $link .= ' <em>(optional) &ndash; ' . htmlspecialchars($desc) . ' </em>';
+ }
+
+ return $link;
+}
+
+/**
* Determine packages that depend on a package
*
* @param string $name The package name for the dependency search
diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php
index 3eaeac7..ef40f1f 100644
--- a/web/template/pkg_details.php
+++ b/web/template/pkg_details.php
@@ -219,16 +219,9 @@ if ($row["MaintainerUID"]):
<h3><?= __('Dependencies') . " (" . count($deps) . ")"?></h3>
<?php if (count($deps) > 0): ?>
<ul>
-<?php
- while (list($k, $darr) = each($deps)):
- # darr: (DepName, DepCondition, PackageID), where ID is NULL if it didn't exist
- if (!is_null($darr[2])):
-?>
- <li><a href="<?= htmlspecialchars(get_pkg_uri($darr[0]), ENT_QUOTES); ?>" title="<?= __('View packages details for').' '. htmlspecialchars($darr[0]) ?>"><?= htmlspecialchars($darr[0]) ?></a><?= htmlspecialchars($darr[1]) ?></li>
- <?php else: ?>
- <li><a href="https://www.archlinux.org/packages/?q=<?= urlencode($darr[0])?>" title="<?= __('View packages details for').' ' . htmlspecialchars($darr[0]) ?>"><?= htmlspecialchars($darr[0]) ?></a><?= htmlspecialchars($darr[1]) ?></li>
- <?php endif; ?>
- <?php endwhile; ?>
+<?php while (list($k, $darr) = each($deps)): ?>
+ <li><?= pkg_depend_link($darr[0], $darr[1], $darr[2], $darr[3]); ?></li>
+<?php endwhile; ?>
</ul>
<?php endif; ?>
</div>