From 34e7f7084ae30cd2cb50edfef5ff14f3a311e11a Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 13 Sep 2015 14:45:15 +0200 Subject: Transfer notifications when merging packages 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 --- 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 "; -- cgit v1.2.3-70-g09d2