[aur-dev] [PATCH] Transfer notifications when merging packages

Lukas Fleischer lfleischer at archlinux.org
Wed Sep 16 20:10:45 UTC 2015


When a package base is merged into another one, followers of the old
package base usually want to be notified about comments the new package
base as well.

Fixes FS#27687.

Signed-off-by: Lukas Fleischer <lfleischer at archlinux.org>
---
 scripts/notify.py            |  7 +++----
 web/lib/pkgbasefuncs.inc.php | 14 ++++++++++++++
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/scripts/notify.py b/scripts/notify.py
index 55b2911..f6bf6ff 100755
--- a/scripts/notify.py
+++ b/scripts/notify.py
@@ -167,10 +167,9 @@ def delete(cur, uid, old_pkgbase_id, new_pkgbase_id=None):
     if new_pkgbase_id:
         new_pkgbase_uri = aur_location + '/pkgbase/' + new_pkgbase + '/'
         body = '%s [1] merged %s [2] into %s [3].\n\n' \
-               'You will no longer receive notifications about this ' \
-               'package, please go to [3] and click "%s" if you wish to ' \
-               'receive them again.' % \
-               (user, old_pkgbase, new_pkgbase, 'Notify of new comments')
+               'If you no longer wish receive notifications about the new ' \
+               'package, please go to [3] and click "%s".' %\
+               (user, old_pkgbase, new_pkgbase, 'Disable notifications')
         body += '\n\n'
         body += '[1] ' + user_uri + '\n'
         body += '[2] ' + pkgbase_uri + '\n'
diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php
index 799f1da..cb756f6 100644
--- a/web/lib/pkgbasefuncs.inc.php
+++ b/web/lib/pkgbasefuncs.inc.php
@@ -448,6 +448,20 @@ function pkgbase_delete ($base_ids, $merge_base_id, $via, $grant=false) {
 		$q.= "WHERE PackageBaseID IN (" . implode(",", $base_ids) . ")";
 		$dbh->exec($q);
 
+		/* Merge notifications */
+		$q = "SELECT DISTINCT UserID FROM CommentNotify cn ";
+		$q.= "WHERE PackageBaseID IN (" . implode(",", $base_ids) . ") ";
+		$q.= "AND NOT EXISTS (SELECT * FROM CommentNotify cn2 ";
+		$q.= "WHERE cn2.PackageBaseID = " . intval($merge_base_id) . " ";
+		$q.= "AND cn2.UserID = cn.UserID)";
+		$result = $dbh->query($q);
+
+		while ($notify_uid = $result->fetch(PDO::FETCH_COLUMN, 0)) {
+			$q = "INSERT INTO CommentNotify (UserID, PackageBaseID) ";
+			$q.= "VALUES (" . intval($notify_uid) . ", " . intval($merge_base_id) . ")";
+			$dbh->exec($q);
+		}
+
 		/* Merge votes */
 		foreach ($base_ids as $base_id) {
 			$q = "UPDATE PackageVotes ";
-- 
2.5.2


More information about the aur-dev mailing list