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

@ -34,22 +34,23 @@ class Notice extends Memcached_DataObject
###START_AUTOCODE ###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */ /* the code below is auto generated do not remove the above tag */
public $__table = 'notice'; // table name public $__table = 'notice'; // table name
public $id; // int(4) primary_key not_null public $id; // int(4) primary_key not_null
public $profile_id; // int(4) not_null public $profile_id; // int(4) not_null
public $uri; // varchar(255) unique_key public $uri; // varchar(255) unique_key
public $content; // varchar(140) public $content; // varchar(140)
public $rendered; // text() public $rendered; // text()
public $url; // varchar(255) public $url; // varchar(255)
public $created; // datetime() not_null public $created; // datetime() not_null
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
public $reply_to; // int(4) public $reply_to; // int(4)
public $is_local; // tinyint(1) public $is_local; // tinyint(1)
public $source; // varchar(32) public $source; // varchar(32)
/* Static get */ /* Static get */
function staticGet($k,$v=null) function staticGet($k,$v=NULL) {
{ return Memcached_DataObject::staticGet('Notice',$k,$v); } return Memcached_DataObject::staticGet('Notice',$k,$v);
}
/* the code above is auto generated do not remove the tag below */ /* the code above is auto generated do not remove the tag below */
###END_AUTOCODE ###END_AUTOCODE
@ -746,10 +747,19 @@ class Notice extends Memcached_DataObject
if (!$id) { if (!$id) {
common_log_db_error($reply, 'INSERT', __FILE__); common_log_db_error($reply, 'INSERT', __FILE__);
return; 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(); common_init_locale();
mail_to_user($other, $subject, $body); 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);
}