summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortardo <tardo@nagi-fanboi.net>2007-09-22 17:09:26 -0400
committertardo <tardo@nagi-fanboi.net>2007-09-22 17:09:26 -0400
commit61ddbc18e7836a3b2e334b23ea637a2a0eea9006 (patch)
tree9dcfd76c3b0e85958f97539c8cf560ab2162df31
parent6a39da70fb9cfd6050deb1016fe0183157d8fb46 (diff)
Reverse dependency lookup. FS 4556, 5269.
Ugly hack, could use beautification. Also includes english translation addition. If url sources are too long, page could ugly... Signed-off-by: tardo <tardo@nagi-fanboi.net>
-rw-r--r--web/lang/en/pkgfuncs_po.inc4
-rw-r--r--web/lib/pkgfuncs.inc45
2 files changed, 48 insertions, 1 deletions
diff --git a/web/lang/en/pkgfuncs_po.inc b/web/lang/en/pkgfuncs_po.inc
index 220cdb3..b6a704b 100644
--- a/web/lang/en/pkgfuncs_po.inc
+++ b/web/lang/en/pkgfuncs_po.inc
@@ -151,4 +151,6 @@ $_t["en"]["License"] = "License";
$_t["en"]["unknown"] = "unknown";
-?> \ No newline at end of file
+$_t["en"]["Required by"] = "Required by";
+
+?>
diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc
index cd339c1..395200b 100644
--- a/web/lib/pkgfuncs.inc
+++ b/web/lib/pkgfuncs.inc
@@ -152,6 +152,25 @@ function package_dependencies($pkgid=0) {
return $deps;
}
+# reverse deps by tardo
+#
+function package_required($pkgid=0) {
+ $deps = array();
+ if ($pkgid) {
+ $dbh = db_connect();
+ $q = "SELECT PackageID, Name, DummyPkg from PackageDepends, Packages ";
+ $q.= "WHERE PackageDepends.PackageID = Packages.ID ";
+ $q.= "AND PackageDepends.DepPkgID = ";
+ $q.= mysql_real_escape_string($pkgid);
+ $result = db_query($q, $dbh);
+ if (!$result) {return array();}
+ while ($row = mysql_fetch_row($result)) {
+ $deps[] = $row;
+ }
+ }
+ return $deps;
+}
+
# create a dummy package and return it's Packages.ID if it already exists,
# return the existing ID
#
@@ -410,6 +429,32 @@ function package_details($id=0, $SID="") {
print "</td></tr>\n";
print "</table></td>";
+ # reverse-deps by tardo - could use some beautification
+ print " <td valign='top'>";
+ print "<table class='boxSoft' style='width: 200px'>";
+ print "<tr><td class='boxSoftTitle'><span class='f3'>";
+ print __("Required by")."</span></td></tr>\n";
+ print "<tr><td class='boxSoft'>";
+ $deps = package_required($row["ID"]);
+ while (list($k, $darr) = each($deps)) {
+ $url = "<a href='/packages.php?do_Details=1&ID=".$darr[0];
+ while(list($k, $var) = each($pkgsearch_vars)) {
+ if (($var == "do_MyPackages" || $var == "do_Orphans") && $_REQUEST[$var]) {
+ $url .= "&".$var."=1";
+ } else {
+ $url .= "&".$var."=".rawurlencode(stripslashes($_REQUEST[$var]));
+ }
+ }
+ reset($pkgsearch_vars);
+
+ // $darr[3] is the DepCondition
+
+ if ($darr[2] == 0) print $url."'>".$darr[1].$darr[3]."</a><br />\n";
+ else print "<a href='#'>".$darr[1].$darr[3]."</a><br />\n";
+ }
+ print "</td></tr>\n";
+ print "</table></td>";
+
print " <td valign='top'>";
print "<table class='boxSoft' style='width: 200px'>";
print "<tr><td class='boxSoftTitle'><span class='f3'>";