From bfb253ef72cd9d87625d5e51a90dd0501c539615 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 16 Jul 2014 10:47:14 +0200 Subject: Bcc notification emails to the request creator Add both the request creator and the current package maintainer to the Bcc list of notification emails for package requests. Signed-off-by: Lukas Fleischer --- web/lib/pkgreqfuncs.inc.php | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) (limited to 'web/lib') diff --git a/web/lib/pkgreqfuncs.inc.php b/web/lib/pkgreqfuncs.inc.php index 09047eb..61d619b 100644 --- a/web/lib/pkgreqfuncs.inc.php +++ b/web/lib/pkgreqfuncs.inc.php @@ -56,6 +56,23 @@ function pkgreq_get_pkgbase_name($id) { return $result->fetch(PDO::FETCH_COLUMN, 0); } +/** + * Obtain the email address of the creator of a package request + * + * @param int $id Package request ID to retrieve the creator for + * + * @return int The email address of the creator + */ +function pkgreq_get_creator_email($id) { + $dbh = DB::connect(); + + $q = "SELECT Email FROM Users INNER JOIN PackageRequests "; + $q.= "ON Users.ID = PackageRequests.UsersID "; + $q.= "WHERE PackageRequests.ID = " . intval($id); + $result = $dbh->query($q); + return $result->fetch(PDO::FETCH_COLUMN, 0); +} + /** * File a deletion/orphan request against a package base * @@ -108,15 +125,15 @@ function pkgreq_file($ids, $type, $merge_into, $comments) { * Send e-mail notifications. * TODO: Move notification logic to separate function where it belongs. */ + $bcc = array(pkgreq_get_creator_email($request_id)); + $q = "SELECT Users.Email "; $q.= "FROM Users INNER JOIN PackageBases "; $q.= "ON PackageBases.MaintainerUID = Users.ID "; $q.= "WHERE PackageBases.ID = " . intval($base_id); $result = $dbh->query($q); if ($row = $result->fetch(PDO::FETCH_ASSOC)) { - $bcc = $row['Email']; - } else { - unset($bcc); + $bcc[] = $row['Email']; } $q = "SELECT Name FROM PackageBases WHERE ID = "; @@ -138,10 +155,8 @@ function pkgreq_file($ids, $type, $merge_into, $comments) { "[2] " . $AUR_LOCATION . get_pkgbase_uri($row['Name']) . "\n"; $body = wordwrap($body, 70); $headers = "MIME-Version: 1.0\r\n" . - "Content-type: text/plain; charset=UTF-8\r\n"; - if (!empty($bcc)) { - $headers .= "Bcc: $bcc\r\n"; - } + "Content-type: text/plain; charset=UTF-8\r\n" . + "Bcc: " . implode(', ', $bcc) . "\r\n"; $thread_id = ""; $headers .= "From: notify@aur.archlinux.org\r\n" . "Message-ID: $thread_id\r\n" . @@ -194,6 +209,8 @@ function pkgreq_close($id, $reason, $comments) { * Send e-mail notifications. * TODO: Move notification logic to separate function where it belongs. */ + $bcc = array(pkgreq_get_creator_email($id)); + $q = "SELECT Users.Email "; $q.= "FROM Users INNER JOIN PackageBases "; $q.= "ON PackageBases.MaintainerUID = Users.ID "; @@ -202,9 +219,7 @@ function pkgreq_close($id, $reason, $comments) { $q.= "WHERE PackageRequests.ID = " . $id; $result = $dbh->query($q); if ($row = $result->fetch(PDO::FETCH_ASSOC)) { - $bcc = $row['Email']; - } else { - unset($bcc); + $bcc[] = $row['Email']; } /* @@ -224,10 +239,8 @@ function pkgreq_close($id, $reason, $comments) { $body .= "[1] " . $AUR_LOCATION . get_user_uri($username) . "\n"; $body = wordwrap($body, 70); $headers = "MIME-Version: 1.0\r\n" . - "Content-type: text/plain; charset=UTF-8\r\n"; - if (!empty($bcc)) { - $headers .= "Bcc: $bcc\r\n"; - } + "Content-type: text/plain; charset=UTF-8\r\n" . + "Bcc: " . implode(', ', $bcc) . "\r\n"; $thread_id = ""; $headers .= "From: notify@aur.archlinux.org\r\n" . "In-Reply-To: $thread_id\r\n" . -- cgit v1.2.3-54-g00ecf