if (!$backend) {
$backend = Mail::factory(common_config('mail', 'backend'),
- (common_config('mail', 'params')) ?
- common_config('mail', 'params') :
- array());
+ common_config('mail', 'params') ?: array());
if (PEAR::isError($backend)) {
common_server_error($backend->getMessage(), 500);
}
$user = new User();
$UT = common_config('db','type')=='pgsql'?'"user"':'user';
+ $replies = $notice->getReplies();
$user->query('SELECT nickname, smsemail, incomingemail ' .
- "FROM $UT JOIN subscription " .
+ "FROM $UT LEFT OUTER JOIN subscription " .
"ON $UT.id = subscription.subscriber " .
- 'WHERE subscription.subscribed = ' . $notice->profile_id . ' ' .
+ 'AND subscription.subscribed = ' . $notice->profile_id . ' ' .
'AND subscription.subscribed != subscription.subscriber ' .
+ // Users (other than the sender) who `want SMS notices':
+ "WHERE $UT.id != " . $notice->profile_id . ' ' .
"AND $UT.smsemail IS NOT null " .
"AND $UT.smsnotify = 1 " .
- 'AND subscription.sms = 1 ');
+ // ... where either the user _is_ subscribed to the sender
+ // (any of the "subscription" fields IS NOT null)
+ // and wants to get SMS for all of this scribe's notices...
+ 'AND (subscription.sms = 1 ' .
+ // ... or where the user was mentioned in
+ // or replied-to with the notice:
+ ($replies ? sprintf("OR $UT.id in (%s)",
+ implode(',', $replies))
+ : '') .
+ ')');
while ($user->fetch()) {
common_log(LOG_INFO,
function mail_notify_message($message, $from=null, $to=null)
{
if (is_null($from)) {
- $from = User::staticGet('id', $message->from_profile);
+ $from = User::getKV('id', $message->from_profile);
}
if (is_null($to)) {
- $to = User::staticGet('id', $message->to_profile);
+ $to = User::getKV('id', $message->to_profile);
}
if (is_null($to->email) || !$to->emailnotifymsg) {
* want to receive notification of faves. Maybe this happens higher
* up the stack...?
*
- * @param User $other The user whose notice was faved
- * @param User $user The user who faved the notice
- * @param Notice $notice The notice that was faved
+ * @param User $rcpt The user whose notice was faved
+ * @param Profile $sender The user who faved the notice
+ * @param Notice $notice The notice that was faved
*
* @return void
*/
-function mail_notify_fave($other, $user, $notice)
+function mail_notify_fave(User $rcpt, Profile $sender, Notice $notice)
{
- if (!$user->hasRight(Right::EMAILONFAVE)) {
+ if (!$sender->hasRight(Right::EMAILONFAVE)) {
return;
}
- $profile = $user->getProfile();
- if ($other->hasBlocked($profile)) {
+ if ($rcpt->hasBlocked($sender)) {
// If the author has blocked us, don't spam them with a notification.
return;
}
- $bestname = $profile->getBestName();
+ if (!$rcpt->getPref('notify', 'email_fave', 1)) {
+ return;
+ }
+
+ $bestname = $sender->getBestName();
- common_switch_locale($other->language);
+ common_switch_locale($rcpt->language);
// TRANS: Subject for favorite notification e-mail.
// TRANS: %1$s is the adding user's long name, %2$s is the adding user's nickname.
- $subject = sprintf(_('%1$s (@%2$s) added your notice as a favorite'), $bestname, $user->nickname);
+ $subject = sprintf(_('%1$s (@%2$s) added your notice as a favorite'), $bestname, $sender->getNickname());
// TRANS: Body for favorite notification e-mail.
// TRANS: %1$s is the adding user's long name, $2$s is the date the notice was created,
array('notice' => $notice->id)),
$notice->content,
common_local_url('showfavorites',
- array('nickname' => $user->nickname)),
+ array('nickname' => $sender->getNickname())),
common_config('site', 'name'),
- $user->nickname) .
+ $sender->getNickname()) .
mail_footer_block();
- $headers = _mail_prepare_headers('fave', $other->nickname, $user->nickname);
+ $headers = _mail_prepare_headers('fave', $rcpt->getNickname(), $sender->getNickname());
common_switch_locale();
- mail_to_user($other, $subject, $body, $headers);
+ mail_to_user($rcpt, $subject, $body, $headers);
}
/**
$admin = $group->getAdmins();
while ($admin->fetch()) {
// We need a local user for email notifications...
- $adminUser = User::staticGet('id', $admin->id);
+ $adminUser = User::getKV('id', $admin->id);
// @fixme check for email preference?
if ($adminUser && $adminUser->email) {
// use the recipient's localization
$admin = $group->getAdmins();
while ($admin->fetch()) {
// We need a local user for email notifications...
- $adminUser = User::staticGet('id', $admin->id);
+ $adminUser = User::getKV('id', $admin->id);
// @fixme check for email preference?
if ($adminUser && $adminUser->email) {
// use the recipient's localization