[aur-dev] [PATCH 2/3] Add "mergepkgid" argument to pkg_delete()

Lukas Fleischer archlinux at cryptocrack.de
Sun Jul 31 13:05:00 EDT 2011


This allows for merging comments and votes of deleted packages into
another one which is useful if a package needs to be renamed.

Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
---
 web/lib/pkgfuncs.inc.php |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
index bb5a592..a81ee01 100644
--- a/web/lib/pkgfuncs.inc.php
+++ b/web/lib/pkgfuncs.inc.php
@@ -659,10 +659,11 @@ function pkg_flag ($atype, $ids, $action = True) {
  *
  * @param string $atype Account type, output of account_from_sid
  * @param array $ids Array of package IDs to delete
+ * @param int $mergepkgid Package to merge the deleted ones into
  *
  * @return string Translated error or success message
  */
-function pkg_delete ($atype, $ids) {
+function pkg_delete ($atype, $ids, $mergepkgid) {
 	if (!$atype) {
 		return __("You must be logged in before you can delete packages.");
 	}
@@ -678,6 +679,27 @@ function pkg_delete ($atype, $ids) {
 	}
 
 	$dbh = db_connect();
+
+	if ($mergepkgid) {
+		/* Merge comments */
+		$q = "UPDATE IGNORE PackageComments ";
+		$q.= "SET PackageID = " . intval($mergepkgid) . " ";
+		$q.= "WHERE PackageID IN (" . implode(",", $ids) . ")";
+		db_query($q, $dbh);
+
+		/* Merge votes */
+		$q = "UPDATE IGNORE PackageVotes ";
+		$q.= "SET PackageID = " . intval($mergepkgid) . " ";
+		$q.= "WHERE PackageID IN (" . implode(",", $ids) . ")";
+		db_query($q, $dbh);
+
+		$q = "UPDATE Packages ";
+		$q.= "SET NumVotes = (SELECT COUNT(*) FROM PackageVotes ";
+		$q.= "WHERE PackageID = " . intval($mergepkgid) . ") ";
+		$q.= "WHERE ID = " . intval($mergepkgid);
+		db_query($q, $dbh);
+	}
+
 	$q = "DELETE FROM Packages WHERE ID IN (" . implode(",", $ids) . ")";
 	$result = db_query($q, $dbh);
 
-- 
1.7.6



More information about the aur-dev mailing list