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);
}
*/
function mail_send($recipients, $headers, $body)
{
- // XXX: use Mail_Queue... maybe
- $backend = mail_backend();
- if (!isset($headers['Content-Type'])) {
- $headers['Content-Type'] = 'text/plain; charset=UTF-8';
- }
- assert($backend); // throws an error if it's bad
- $sent = $backend->send($recipients, $headers, $body);
- if (PEAR::isError($sent)) {
- common_log(LOG_ERR, 'Email error: ' . $sent->getMessage());
+ try {
+ // XXX: use Mail_Queue... maybe
+ $backend = mail_backend();
+
+ if (!isset($headers['Content-Type'])) {
+ $headers['Content-Type'] = 'text/plain; charset=UTF-8';
+ }
+
+ assert($backend); // throws an error if it's bad
+ $sent = $backend->send($recipients, $headers, $body);
+ return true;
+ } catch (PEAR_Exception $e) {
+ common_log(
+ LOG_ERR,
+ "Unable to send email - '{$e->getMessage()}'. "
+ . 'Is your mail subsystem set up correctly?'
+ );
return false;
}
- return true;
}
/**
$headers['To'] = $name . ' <' . $listenee->email . '>';
// TRANS: Subject of new-subscriber notification e-mail.
// TRANS: %1$s is the subscribing user's nickname, %2$s is the StatusNet sitename.
- $headers['Subject'] = sprintf(_('%1$s is now listening to '.
- 'your notices on %2$s.'),
+ $headers['Subject'] = sprintf(_('%1$s is now following you on %2$s.'),
$other->getBestName(),
common_config('site', 'name'));
// TRANS: Main body of new-subscriber notification e-mail.
// TRANS: %1$s is the subscriber's long name, %2$s is the StatusNet sitename.
- $body = sprintf(_('%1$s is now listening to your notices on %2$s.'),
+ $body = sprintf(_('%1$s is now following you on %2$s.'),
$long_name,
common_config('site', 'name')) .
mail_profile_block($other) .
}
}
+function mail_subscribe_pending_notify_profile($listenee, $other)
+{
+ if ($other->hasRight(Right::EMAILONSUBSCRIBE) &&
+ $listenee->email && $listenee->emailnotifysub) {
+
+ $profile = $listenee->getProfile();
+
+ $name = $profile->getBestName();
+
+ $long_name = ($other->fullname) ?
+ ($other->fullname . ' (' . $other->nickname . ')') : $other->nickname;
+
+ $recipients = $listenee->email;
+
+ // use the recipient's localization
+ common_switch_locale($listenee->language);
+
+ $headers = _mail_prepare_headers('subscribe', $listenee->nickname, $other->nickname);
+ $headers['From'] = mail_notify_from();
+ $headers['To'] = $name . ' <' . $listenee->email . '>';
+ // TRANS: Subject of pending new-subscriber notification e-mail.
+ // TRANS: %1$s is the subscribing user's nickname, %2$s is the StatusNet sitename.
+ $headers['Subject'] = sprintf(_('%1$s would like to listen to '.
+ 'your notices on %2$s.'),
+ $other->getBestName(),
+ common_config('site', 'name'));
+
+ // TRANS: Main body of pending new-subscriber notification e-mail.
+ // TRANS: %1$s is the subscriber's long name, %2$s is the StatusNet sitename.
+ $body = sprintf(_('%1$s would like to listen to your notices on %2$s. ' .
+ 'You may approve or reject their subscription at %3$s'),
+ $long_name,
+ common_config('site', 'name'),
+ common_local_url('subqueue', array('nickname' => $listenee->nickname))) .
+ mail_profile_block($other) .
+ mail_footer_block();
+
+ // reset localization
+ common_switch_locale();
+ mail_send($recipients, $headers, $body);
+ }
+}
+
function mail_footer_block()
{
// TRANS: Common footer block for StatusNet notification emails.
__FILE__);
$success = mail_send_sms_notice_address($notice,
$user->smsemail,
- $user->incomingemail);
+ $user->incomingemail,
+ $user->nickname);
if (!$success) {
// XXX: Not sure, but I think that's the right thing to do
common_log(LOG_WARNING,
{
return mail_send_sms_notice_address($notice,
$user->smsemail,
- $user->incomingemail);
+ $user->incomingemail,
+ $user->nickname);
}
/**
* @param Notice $notice notice to send
* @param string $smsemail email address to send to
* @param string $incomingemail email address to set as 'from'
+ * @param string $nickname nickname to add to beginning
*
* @return boolean success flag
*/
-function mail_send_sms_notice_address($notice, $smsemail, $incomingemail)
+function mail_send_sms_notice_address($notice, $smsemail, $incomingemail, $nickname)
{
$to = $nickname . ' <' . $smsemail . '>';
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) {
}
/**
- * notify a user that one of their notices has been chosen as a 'fave'
+ * Notify a user that one of their notices has been chosen as a 'fave'
*
* Doesn't check that the user has an email address nor if they
* want to receive notification of faves. Maybe this happens higher
}
/**
- * notify a user that they have received an "attn:" message AKA "@-reply"
+ * 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;
}
+ if ($user->hasBlocked($sender)) {
+ // If the author has blocked us, don't spam them with a notification.
+ return;
+ }
+
$bestname = $sender->getBestName();
common_switch_locale($user->language);
// TRANS: Body of @-reply notification e-mail.
// TRANS: %1$s is the sending user's name, $2$s is the StatusNet sitename,
// TRANS: %3$s is a URL to the notice, %4$s is the notice text,
- // TRANS: %5$s is a URL to the full conversion if it exists (otherwise empty),
+ // TRANS: %5$s is the text "The full conversation can be read here:" and a URL to the full conversion if it exists (otherwise empty),
// TRANS: %6$s is a URL to reply to the notice, %7$s is a URL to all @-replies for the addressed user,
$body = sprintf(_("%1\$s just sent a notice to your attention (an '@-reply') on %2\$s.\n\n".
"The notice is here:\n\n".
$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
// TRANS: Subject of group join notification e-mail.
// TRANS: %1$s is the joining user's nickname, %2$s is the group name, and %3$s is the StatusNet sitename.
$headers['Subject'] = sprintf(_('%1$s has joined '.
- 'your group %2$s on %3$s.'),
+ 'your group %2$s on %3$s'),
$joiner->getBestName(),
$group->getBestName(),
common_config('site', 'name'));
$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