From c744eba74d2f24f193f718e19203fc9d8256999d Mon Sep 17 00:00:00 2001
From: Callan Barrett <wizzomafizzo@gmail.com>
Date: Sat, 4 Oct 2008 03:42:34 +0800
Subject: [PATCH] Convert package deletion to a function

Signed-off-by: Callan Barrett <wizzomafizzo@gmail.com>
---
 web/html/packages.php |   90 ++----------------------------------------------
 web/lib/pkgfuncs.inc  |   73 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 77 insertions(+), 86 deletions(-)

diff --git a/web/html/packages.php b/web/html/packages.php
index 317583f..bc3ed18 100644
--- a/web/html/packages.php
+++ b/web/html/packages.php
@@ -22,7 +22,7 @@ if (isset($_GET['ID'])) {
 	$title = __("Packages");
 }
 
-html_header($title);              # print out the HTML header
+html_header($title);
 
 # get login privileges
 #
@@ -95,91 +95,9 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
 
 
 } elseif ($_POST['action'] == "do_Delete" || isset($_POST['do_Delete'])) {
-	if (!$atype) {
-		print __("You must be logged in before you can disown packages.");
-		print "<br />\n";
-	} else {
-		# Delete the packages in $ids array (but only if they are Unsupported)
-		#
-		if (!empty($ids)) {
-			$dbh = db_connect();
-
-			# Delete the packages in $ids array
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if ($first) {
-					$first = 0;
-					$delete = $pid;
-				} else {
-					$delete .= ", ".$pid;
-				}
-			}
-
-			$field = "MaintainerUID";
-
-			# Only grab Unsupported packages that "we" own or are not owned at all
-			#
-			$ids_to_delete = array();
-			$q = "SELECT Packages.ID FROM Packages, PackageLocations ";
-			$q.= "WHERE Packages.ID IN (" . $delete . ") ";
-			$q.= "AND Packages.LocationID = PackageLocations.ID ";
-			$q.= "AND PackageLocations.Location = 'unsupported' ";
-			# If they're a TU or dev, can always delete, otherwise check ownership
-			#
-			if ($atype == "Trusted User" || $atype == "Developer") {
-				$result = db_query($q, $dbh);
-			}
-			if ($result != Null && mysql_num_rows($result) > 0) {
-				while ($row = mysql_fetch_assoc($result)) {
-					$ids_to_delete[] = $row['ID'];
-				}
-			}
-			if (!empty($ids_to_delete)) {
-				# These are the packages that are safe to delete
-				#
-			  foreach ($ids_to_delete as $id) {
-					# delete from PackageVotes
-					$q = "DELETE FROM PackageVotes WHERE PackageID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from PackageDepends
-					$q = "DELETE FROM PackageDepends WHERE PackageID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from PackageSources
-					$q = "DELETE FROM PackageSources WHERE PackageID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from PackageComments
-					$q = "DELETE FROM PackageComments WHERE PackageID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from Packages
-					$q = "DELETE FROM Packages WHERE ID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# delete from CommentNotify
-					$q = "DELETE FROM CommentNotify WHERE PkgID = " . $id;
-					$result = db_query($q, $dbh);
-
-					# Print the success message
-					print "<p>\n";
-		      print __("The selected packages have been deleted.");
-		      print "</p>\n";
-				}
-			} else {
-				print "<p>\n";
-				print __("None of the selected packages could be deleted.");
-				print "</p>\n";
-			} # end if (!empty($ids_to_delete))
-		} else {
-			print "<p>\n";
-			print __("You did not select any packages to delete.");
-			print "</p>\n";
-		} # end if (!empty($ids))
-	} # end if (!atype)
-
+	print "<p>";
+	print pkg_delete($atype, $ids, False);
+	print "</p>";
 } elseif ($_POST['action'] == "do_Adopt" || isset($_POST['do_Adopt'])) {
 	if (!$atype) {
 		print __("You must be logged in before you can adopt packages.");
diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc
index 0f3defc..c7e31f6 100644
--- a/web/lib/pkgfuncs.inc
+++ b/web/lib/pkgfuncs.inc
@@ -1058,3 +1058,76 @@ function pkg_flag ($atype, $ids, $action = True) {
 		return __("The selected packages have been unflagged.");
 	}
 }
+
+function pkg_delete ($atype, $ids) {
+	if (!$atype) {
+		return __("You must be logged in before you can disown packages.");
+	}
+	
+	if (empty($ids)) {
+		return __("You did not select any packages to delete.");
+	}
+	
+	# Delete the packages in $ids array (but only if they are Unsupported)
+	#
+	$dbh = db_connect();
+
+	# Delete the packages in $ids array
+	#
+	$first = 1;
+	foreach ($ids as $pid => $v) {
+		if ($first) {
+			$first = 0;
+			$delete = $pid;
+		} else {
+			$delete .= ", ".$pid;
+		}
+	}
+
+	$field = "MaintainerUID";
+
+	# Only grab Unsupported packages that "we" own or are not owned at all
+	$ids_to_delete = array();
+	$q = "SELECT Packages.ID FROM Packages, PackageLocations ";
+	$q.= "WHERE Packages.ID IN (" . $delete . ") ";
+	$q.= "AND Packages.LocationID = PackageLocations.ID ";
+	$q.= "AND PackageLocations.Location = 'unsupported' ";
+	
+	# If they're a TU or dev, can delete
+	if ($atype == "Trusted User" || $atype == "Developer") {
+		$result = db_query($q, $dbh);
+	}
+	
+	if ($result != Null && mysql_num_rows($result) > 0) {
+		while ($row = mysql_fetch_assoc($result)) {
+			$ids_to_delete[] = $row['ID'];
+		}
+	}
+	
+	if (empty($ids_to_delete)) {
+		return __("None of the selected packages could be deleted.");
+	}
+
+	# These are the packages that are safe to delete
+	foreach ($ids_to_delete as $id) {
+		$q = "DELETE FROM PackageVotes WHERE PackageID = " . $id;
+		$result = db_query($q, $dbh);
+
+		$q = "DELETE FROM PackageDepends WHERE PackageID = " . $id;
+		$result = db_query($q, $dbh);
+
+		$q = "DELETE FROM PackageSources WHERE PackageID = " . $id;
+		$result = db_query($q, $dbh);
+
+		$q = "DELETE FROM PackageComments WHERE PackageID = " . $id;
+		$result = db_query($q, $dbh);
+
+		$q = "DELETE FROM Packages WHERE ID = " . $id;
+		$result = db_query($q, $dbh);
+
+		$q = "DELETE FROM CommentNotify WHERE PkgID = " . $id;
+		$result = db_query($q, $dbh);
+	}
+
+	return __("The selected packages have been deleted.");
+}
-- 
1.6.0.2

