summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <archlinux@cryptocrack.de>2014-04-26 13:17:28 +0200
committerLukas Fleischer <archlinux@cryptocrack.de>2014-04-26 13:34:17 +0200
commit3720bdf6b264cb4bb603e4199f2758598c260ed4 (patch)
tree9dee586a6aace9e5f1b4e02838aee91a7e1f14f9
parent92812050a059a651357f772b58e967154ea8428c (diff)
downloadaur-3720bdf6b264cb4bb603e4199f2758598c260ed4.tar.gz
aur-3720bdf6b264cb4bb603e4199f2758598c260ed4.tar.xz
Display package relations on the details page
This adds information from the following three fields to the package details page: * conflicts * provides * replaces If either of these fields is empty, it is not displayed. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r--web/lib/pkgfuncs.inc.php28
-rw-r--r--web/template/pkg_details.php64
2 files changed, 92 insertions, 0 deletions
diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
index 2eb0be46..a04f5259 100644
--- a/web/lib/pkgfuncs.inc.php
+++ b/web/lib/pkgfuncs.inc.php
@@ -133,6 +133,34 @@ function pkg_dependencies($pkgid) {
}
/**
+ * Get package relations for a specific package
+ *
+ * @param int $pkgid The package to get relations for
+ *
+ * @return array All package relations for the package
+ */
+function pkg_relations($pkgid) {
+ $rels = array();
+ $pkgid = intval($pkgid);
+ if ($pkgid > 0) {
+ $dbh = DB::connect();
+ $q = "SELECT pr.RelName, rt.Name, pr.RelCondition, p.ID FROM PackageRelations pr ";
+ $q.= "LEFT JOIN Packages p ON pr.RelName = p.Name ";
+ $q.= "LEFT JOIN RelationTypes rt ON rt.ID = pr.RelTypeID ";
+ $q.= "WHERE pr.PackageID = ". $pkgid . " ";
+ $q.= "ORDER BY pr.RelName";
+ $result = $dbh->query($q);
+ if (!$result) {
+ return array();
+ }
+ while ($row = $result->fetch(PDO::FETCH_NUM)) {
+ $rels[] = $row;
+ }
+ }
+ return $rels;
+}
+
+/**
* Get the ID of a dependency type given its name
*
* @param string $name The name of the dependency type
diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php
index f0bfa0b8..da90c9d7 100644
--- a/web/template/pkg_details.php
+++ b/web/template/pkg_details.php
@@ -25,6 +25,22 @@ $urlpath = URL_DIR . substr($row['BaseName'], 0, 2) . "/" . $row['BaseName'];
$deps = pkg_dependencies($row["ID"]);
$requiredby = pkg_required($row["Name"]);
+$rels = pkg_relations($row["ID"]);
+$rels_c = $rels_p = $rels_r = array();
+foreach ($rels as $rel) {
+ switch ($rel[1]) {
+ case "conflicts":
+ $rels_c[] = $rel;
+ break;
+ case "provides":
+ $rels_p[] = $rel;
+ break;
+ case "replaces":
+ $rels_r[] = $rel;
+ break;
+ }
+}
+
# $sources[0] = 'src';
$sources = pkg_sources($row["ID"]);
?>
@@ -156,6 +172,54 @@ if ($SID && ($uid == $row["MaintainerUID"] ||
<th><?= __('License') . ': ' ?></th>
<td><?= htmlspecialchars($license) ?></td>
</tr>
+ <?php if (count($rels_c) > 0): ?>
+ <tr>
+ <th><?= __('Conflicts') . ': ' ?></th>
+ <td class="wrap relatedto">
+ <?php foreach($rels_c as $rarr): ?>
+ <span class="related">
+ <?php if ($rarr !== end($rels_c)): ?>
+ <?= htmlspecialchars($rarr[0]) ?>,
+ <?php else: ?>
+ <?= htmlspecialchars($rarr[0]) ?>
+ <?php endif; ?>
+ </span>
+ <?php endforeach; ?>
+ </td>
+ </tr>
+ <?php endif; ?>
+ <?php if (count($rels_p) > 0): ?>
+ <tr>
+ <th><?= __('Provides') . ': ' ?></th>
+ <td class="wrap relatedto">
+ <?php foreach($rels_p as $rarr): ?>
+ <span class="related">
+ <?php if ($rarr !== end($rels_p)): ?>
+ <?= htmlspecialchars($rarr[0]) ?>,
+ <?php else: ?>
+ <?= htmlspecialchars($rarr[0]) ?>
+ <?php endif; ?>
+ </span>
+ <?php endforeach; ?>
+ </td>
+ </tr>
+ <?php endif; ?>
+ <?php if (count($rels_r) > 0): ?>
+ <tr>
+ <th><?= __('Replaces') . ': ' ?></th>
+ <td class="wrap relatedto">
+ <?php foreach($rels_r as $rarr): ?>
+ <span class="related">
+ <?php if ($rarr !== end($rels_r)): ?>
+ <?= htmlspecialchars($rarr[0]) ?>,
+ <?php else: ?>
+ <?= htmlspecialchars($rarr[0]) ?>
+ <?php endif; ?>
+ </span>
+ <?php endforeach; ?>
+ </td>
+ </tr>
+ <?php endif; ?>
<tr>
<th><?= __('Submitter') .': ' ?></th>
<?php