From 40416c2c69513307372401a71e912bfed7fe0c1f Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Tue, 3 Feb 2015 11:41:20 +0100 Subject: [PATCH] Don't email users who are sandboxed If sandboxed or silenced, don't email the user any notifications. --- classes/User.php | 15 +++++++++++++++ lib/mail.php | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/classes/User.php b/classes/User.php index 060a67411d..2c64c50e04 100644 --- a/classes/User.php +++ b/classes/User.php @@ -658,6 +658,21 @@ class User extends Managed_DataObject return $this->getProfile()->isSilenced(); } + function receivesEmailNotifications() + { + // We could do this in one large if statement, but that's not as easy to read + // Don't send notifications if we don't know the user's email address or it is + // explicitly undesired by the user's own settings. + if (empty($this->email) || !$this->emailnotifyattn) { + return false; + } + // Don't send notifications to a user who is sandboxed or silenced + if ($this->isSandboxed() || $this->isSilenced()) { + return false; + } + return true; + } + function repeatedByMe($offset=0, $limit=20, $since_id=null, $max_id=null) { $stream = new RepeatedByMeNoticeStream($this); diff --git a/lib/mail.php b/lib/mail.php index 8b30eba609..68ac8a74cd 100644 --- a/lib/mail.php +++ b/lib/mail.php @@ -737,7 +737,7 @@ function mail_notify_fave(User $rcpt, Profile $sender, Notice $notice) */ function mail_notify_attn($user, $notice) { - if (!$user->email || !$user->emailnotifyattn) { + if (!$user->receivesEmailNotifications()) { return; } @@ -747,12 +747,13 @@ function mail_notify_attn($user, $notice) return; } + // See if the notice's author who mentions this user is sandboxed if (!$sender->hasRight(Right::EMAILONREPLY)) { return; } + // If the author has blocked the author, don't spam them with a notification. if ($user->hasBlocked($sender)) { - // If the author has blocked us, don't spam them with a notification. return; } -- 2.39.5