send mail when @-replies are received

This commit is contained in:
Evan Prodromou 2009-02-16 18:26:15 -05:00
parent affb2f9359
commit 175c4665cc
2 changed files with 71 additions and 11 deletions

View File

@ -48,8 +48,9 @@ class Notice extends Memcached_DataObject
public $source; // varchar(32)
/* Static get */
function staticGet($k,$v=null)
{ return Memcached_DataObject::staticGet('Notice',$k,$v); }
function staticGet($k,$v=NULL) {
return Memcached_DataObject::staticGet('Notice',$k,$v);
}
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
@ -746,10 +747,19 @@ class Notice extends Memcached_DataObject
if (!$id) {
common_log_db_error($reply, 'INSERT', __FILE__);
return;
} else {
$replied[$recipient->id] = 1;
}
}
}
}
}
foreach (array_keys($replied) as $recipient) {
$user = User::staticGet('id', $recipient);
if ($user) {
mail_attn_notify($user, $notice);
}
}
}
}

View File

@ -573,3 +573,53 @@ function mail_notify_fave($other, $user, $notice)
common_init_locale();
mail_to_user($other, $subject, $body);
}
/**
* notify a user that they have received an "attn:" message AKA "@-reply"
*
* @param User $user The user who recevied the notice
* @param Notice $notice The notice that was sent
*
* @return void
*/
function mail_notify_attn($user, $notice)
{
if (!$user->email || !$user->emailnotifyattn) {
return;
}
$sender = $notice->getProfile();
$bestname = $sender->getBestName();
common_init_locale($user->language);
$subject = sprintf(_('%s sent a notice to your attention'), $bestname);
$body = sprintf(_("%1\$s just sent a notice to your attention (an '@-reply') on %2\$s.\n\n".
"The notice is here:\n\n".
"\t%3\$s\n\n" .
"It reads:\n\n".
"\t%4\$s\n\n" .
"You can reply back here:\n\n".
"\t%5\$s\n\n" .
"The list of all @-replies for you here:\n\n" .
"%6\$s\n\n" .
"Faithfully yours,\n" .
"%2\$s\n\n" .
"P.S. You can turn off these email notifications here: %7\$s\n"),
$bestname,
common_config('site', 'name'),
common_local_url('shownotice',
array('notice' => $notice->id)),
$notice->content,
common_local_url('newnotice',
array('replyto' => $sender->nickname)),
common_local_url('replies',
array('nickname' => $user->nickname)),
common_local_url('emailsettings'));
common_init_locale();
mail_to_user($user, $subject, $body);
}