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>
This commit is contained in:
tardo 2007-09-22 17:09:26 -04:00
parent 6a39da70fb
commit 61ddbc18e7
2 changed files with 48 additions and 1 deletions

View file

@ -151,4 +151,6 @@ $_t["en"]["License"] = "License";
$_t["en"]["unknown"] = "unknown"; $_t["en"]["unknown"] = "unknown";
$_t["en"]["Required by"] = "Required by";
?> ?>

View file

@ -152,6 +152,25 @@ function package_dependencies($pkgid=0) {
return $deps; 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, # create a dummy package and return it's Packages.ID if it already exists,
# return the existing ID # return the existing ID
# #
@ -402,6 +421,32 @@ function package_details($id=0, $SID="") {
} }
reset($pkgsearch_vars); 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>";
# 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 // $darr[3] is the DepCondition
if ($darr[2] == 0) print $url."'>".$darr[1].$darr[3]."</a><br />\n"; if ($darr[2] == 0) print $url."'>".$darr[1].$darr[3]."</a><br />\n";