X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fmail.php;h=d967cfd796e546f91c50254dc8e2467529cff633;hb=1056348029f18507581921e0bfa9b4473964d97c;hp=708e5349b16ae2bd9b544987566ba91d1d041434;hpb=d36f0707a488b6e2513193a0a2f72811435553ec;p=quix0rs-gnu-social.git diff --git a/lib/mail.php b/lib/mail.php index 708e5349b1..d967cfd796 100644 --- a/lib/mail.php +++ b/lib/mail.php @@ -50,9 +50,7 @@ function mail_backend() 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); } @@ -71,18 +69,25 @@ function mail_backend() */ 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; } /** @@ -240,14 +245,13 @@ function mail_subscribe_notify_profile($listenee, $other) $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) . @@ -259,6 +263,49 @@ function mail_subscribe_notify_profile($listenee, $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. @@ -405,7 +452,8 @@ function mail_broadcast_notice_sms($notice) __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, @@ -438,7 +486,8 @@ function mail_send_sms_notice($notice, $user) { return mail_send_sms_notice_address($notice, $user->smsemail, - $user->incomingemail); + $user->incomingemail, + $user->nickname); } /** @@ -450,10 +499,11 @@ function mail_send_sms_notice($notice, $user) * @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 . '>'; @@ -557,11 +607,11 @@ function mail_notify_nudge($from, $to) 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) { @@ -598,7 +648,7 @@ function mail_notify_message($message, $from=null, $to=null) } /** - * 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 @@ -661,7 +711,7 @@ function mail_notify_fave($other, $user, $notice) } /** - * 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 @@ -684,6 +734,11 @@ function mail_notify_attn($user, $notice) 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); @@ -705,7 +760,7 @@ function mail_notify_attn($user, $notice) // 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". @@ -767,7 +822,7 @@ function mail_notify_group_join($group, $joiner) $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 @@ -779,7 +834,7 @@ function mail_notify_group_join($group, $joiner) // 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')); @@ -814,7 +869,7 @@ function mail_notify_group_join_pending($group, $joiner) $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