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 <[email protected]>
---
 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

Reply via email to