include_once("pkgfuncs_po.inc");
# define variables used during pkgsearch
#
$pkgsearch_vars = array("O", "L", "C", "K", "SB", "PP", "do_MyPackages");
# print out the 'return to search results' link
#
function pkgsearch_results_link() {
global $_REQUEST;
global $pkgsearch_vars;
$url_data = "";
print __("Go back to %hsearch results%h.",
array($url_data, ""));
print "\n
\n";
return;
}
# see if this Users.ID can manage the package
#
function canManagePackage($uid=0,$AURMUID=0, $MUID=0, $SUID=0, $managed=0) {
if (!$uid) {return 0;}
# The uid of the TU/Dev that manages the package
#
if ($uid == $AURMUID) {return 1;}
# If the package isn't maintained by a TU/Dev, is this the user-maintainer?
#
if ($uid == $MUID && !$managed) {return 1;}
# If the package isn't maintained by a TU/Dev, is this the user-submitter?
#
if ($uid == $SUID && !$managed) {return 1;}
# otherwise, no right to manage this package
#
return 0;
}
# grab the current list of PackageCategories
#
function pkgCategories() {
$cats = array();
$dbh = db_connect();
$q = "SELECT * FROM PackageCategories ";
$q.= "ORDER BY Category ASC";
$result = db_query($q, $dbh);
if ($result) {
while ($row = mysql_fetch_row($result)) {
$cats[$row[0]] = $row[1];
}
}
return $cats;
}
# grab the current list of PackageLocations
#
function pkgLocations() {
$locs = array();
$dbh = db_connect();
$q = "SELECT * FROM PackageLocations ";
$q.= "ORDER BY Location ASC";
$result = db_query($q, $dbh);
if ($result) {
while ($row = mysql_fetch_row($result)) {
$locs[$row[0]] = $row[1];
}
}
return $locs;
}
# check to see if the package name exists
#
function package_exists($name="") {
if (!$name) {return NULL;}
$dbh = db_connect();
$q = "SELECT ID FROM Packages ";
$q.= "WHERE Name = '".mysql_escape_string($name)."' ";
$q.= "AND DummyPkg = 0";
$result = db_query($q, $dbh);
if (!$result) {return NULL;}
$row = mysql_fetch_row($result);
return $row[0];
}
# grab package dependencies
#
function package_dependencies($pkgid=0) {
$deps = array();
if ($pkgid) {
$dbh = db_connect();
$q = "SELECT DepPkgID, Name FROM PackageDepends, Packages ";
$q.= "WHERE PackageDepends.DepPkgID = Packages.ID ";
$q.= "AND PackageDepends.PackageID = ".mysql_escape_string($pkgid);
$q.= " ORDER BY Name";
$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
#
function create_dummy($pname="", $sid="") {
if ($pname && $sid) {
$uid = uid_from_sid($sid);
if (!$uid) {return NULL};
$dbh = db_connect();
$q = "SELECT ID FROM Packages WHERE Name = '";
$q.= mysql_escape_string($pname)."'";
$result = db_query($q, $dbh);
if (!$result) {
# Insert the dummy
#
$q = "INSERT INTO Packages (Name, CategoryID, Description, ";
$q.= "URL, LocationID, SubmittedTS, SubmitterUID) VALUES ('";
$q.= mysql_escape_string($pname)."', 0, ";
$q.= "'A dummy package', '/#', 0, UNIX_TIMESTAMP(), ";
$q.= $uid.")";
$result = db_query($q, $dbh);
if (!$result) {
return NULL;
}
return mysql_insert_id($result);
} else {
$data = mysql_fetch_row($result);
return $data['ID'];
}
}
return NULL;
}
# grab package sources
#
function package_sources($pkgid=0) {
$sources = array();
if ($pkgid) {
$dbh = db_connect();
$q = "SELECT Source FROM PackageSources ";
$q.= "WHERE PackageID = ".mysql_escape_string($pkgid);
$q.= " ORDER BY Source";
$result = db_query($q, $dbh);
if (!$result) {return array();}
while ($row = mysql_fetch_row($result)) {
$sources[] = $row[0];
}
}
return $sources;
}
# grab array of Package.IDs that I've voted for: $pkgs[1234] = 1, ...
#
function pkgvotes_from_sid($sid="") {
$pkgs = array();
if (!$sid) {return $pkgs;}
$dbh = db_connect();
$q = "SELECT PackageID ";
$q.= "FROM PackageVotes, Users, Sessions ";
$q.= "WHERE Users.ID = Sessions.UsersID ";
$q.= "AND Users.ID = PackageVotes.UsersID ";
$q.= "AND Sessions.SessionID = '".mysql_escape_string($sid)."'";
$result = db_query($q, $dbh);
if ($result) {
while ($row = mysql_fetch_row($result)) {
$pkgs[$row[0]] = 1;
}
}
return $pkgs;
}
# display package details
#
function package_details($id=0) {
global $_REQUEST;
global $pkgsearch_vars;
$q = "SELECT *,Location,Category ";
$q.= "FROM Packages,PackageLocations,PackageCategories ";
$q.= "WHERE Packages.LocationID = PackageLocations.ID ";
$q.= "AND Packages.CategoryID = PackageCategories.ID ";
$q.= "ANd Packages.ID = ".intval($_REQUEST["ID"]);
$dbh = db_connect();
$results = db_query($q, $dbh);
if (!$results) {
print __("Error retrieving package details.")."
\n";
} else {
$row = mysql_fetch_assoc($results);
if (empty($row)) {
print __("Package details could not be found.")."
\n";
} else {
# print out package details
#
print "
\n";
print "
\n";
print "\n";
print "\n";
print " ";
print "Package Details | \n";
print "
\n";
print "\n";
print " \n";
print "\n";
print "\n";
print "\n";
print " ";
print $row["Name"] . "-" . $row["Version"]." | \n";
print " \n";
print "\n";
print " ";
print "".$row["URL"]." | \n";
print " \n";
print "\n";
print " ".$row["Description"];
print " | \n";
print " \n";
print "\n";
print " | ";
print " \n";
print "\n";
print " ";
print $row["Location"]." :: ".$row["Category"]." | ";
print " \n";
print "\n";
print " ".__("Maintainer").": ";
if ($row["AURMaintainerUID"]) {
$maintainer = username_from_id($row["AURMaintainerUID"]);
} elseif ($row["MaintainerUID"]) {
$maintainer = username_from_id($row["MaintainerUID"]);
} else {
$maintainer = "None";
}
print $maintainer . " | ";
print " \n";
print "\n";
print " | ";
print " \n";
print "\n";
print " ";
print "";
print "";
print "Dependencies | \n";
print "";
$deps = package_dependencies($row["ID"]); # $deps[0] = array('id','name');
while (list($k, $darr) = each($deps)) {
$url = "".$darr[1]." \n";
}
print " | \n";
print " | ";
print " ";
print "";
print "";
print "Sources | \n";
print "";
$sources = package_sources($row["ID"]); # $sources[0] = 'src';
while (list($k, $src) = each($sources)) {
print "".$src." \n";
}
print " | \n";
print " | ";
print " \n";
print " \n";
print "\n";
print " | \n";
print "
\n";
print "
\n";
}
}
return;
}
# display the search form in a boxSoft style
#
function pkg_search_page($SID="") {
global $_REQUEST;
global $pkgsearch_vars;
# SID: session id cookie
$locs = pkgLocations();
$cats = pkgCategories();
$devs = getDevelopers();
$tus = getTrustedUsers();
$dbh = db_connect();
# determine paging variables
#
$_REQUEST["PP"] ? $PP = intval($_REQUEST["PP"]) : $PP = 25;
if ($PP < 25) {$PP = 25;}
if ($PP > 100) {$PP = 100;}
$_REQUEST["O"] ? $O = intval($_REQUEST["O"]) : $O = 0;
if ($_REQUEST["do_More"]) {
$O += $PP;
} elseif ($_REQUEST["do_Less"]) {
$O -= $PP;
}
if ($O < 0) {
$O = 0;
}
if ($_REQUEST["do_Search"] && $_REQUEST["do_Search"] != 1) {
# reset the offset to zero if they hit Go
#
$_REQUEST["do_MyPackages"] = 0;
$O = 0;
}
$_REQUEST["O"] = $O; # so that pkg_search_results() works
# grab info for user if they're logged in
#
if ($SID) {
$myuid = uid_from_sid($SID);
$acct = account_from_sid($SID);
$my_votes = pkgvotes_from_sid($SID);
}
# The search form
#
print "\n";
return;
}
# vim: ts=2 sw=2 noet ft=php
?>