X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fmail.php;h=da22eb6715a1b2c333ae0cf60f6271f513e373f5;hb=57163e6fd69d560b462a1b9eaee054126e029703;hp=15b2351b4356d256b3550f310d069e6882fad887;hpb=0a20abf1d8a9a068df9310d6903cc303f39b25ed;p=quix0rs-gnu-social.git diff --git a/lib/mail.php b/lib/mail.php index 15b2351b43..da22eb6715 100644 --- a/lib/mail.php +++ b/lib/mail.php @@ -30,9 +30,7 @@ * @link http://status.net/ */ -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} +if (!defined('GNUSOCIAL')) { exit(1); } require_once 'Mail.php'; @@ -47,12 +45,14 @@ require_once 'Mail.php'; function mail_backend() { static $backend = null; + global $_PEAR; if (!$backend) { - $backend = Mail::factory(common_config('mail', 'backend'), + $mail = new Mail(); + $backend = $mail->factory(common_config('mail', 'backend'), common_config('mail', 'params') ?: array()); - if (PEAR::isError($backend)) { - common_server_error($backend->getMessage(), 500); + if ($_PEAR->isError($backend)) { + throw new EmailException($backend->getMessage(), $backend->getCode()); } } return $backend; @@ -69,6 +69,8 @@ function mail_backend() */ function mail_send($recipients, $headers, $body) { + global $_PEAR; + try { // XXX: use Mail_Queue... maybe $backend = mail_backend(); @@ -79,6 +81,9 @@ function mail_send($recipients, $headers, $body) assert($backend); // throws an error if it's bad $sent = $backend->send($recipients, $headers, $body); + if ($_PEAR->isError($sent)) { + throw new EmailException($sent->getMessage(), $sent->getCode()); + } return true; } catch (PEAR_Exception $e) { common_log( @@ -148,6 +153,7 @@ function mail_to_user(&$user, $subject, $body, $headers=array(), $address=null) $recipients = $address; $profile = $user->getProfile(); + $headers['Date'] = date("r", time()); $headers['From'] = mail_notify_from(); $headers['To'] = $profile->getBestName() . ' <' . $address . '>'; $headers['Subject'] = $subject; @@ -659,72 +665,6 @@ function mail_notify_message($message, $from=null, $to=null) return mail_to_user($to, $subject, $body, $headers); } -/** - * 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 - * up the stack...? - * - * @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(User $rcpt, Profile $sender, Notice $notice) -{ - if (!$sender->hasRight(Right::EMAILONFAVE)) { - return; - } - - if ($rcpt->hasBlocked($sender)) { - // If the author has blocked us, don't spam them with a notification. - return; - } - - if (!$rcpt->getPref('notify', 'email_fave', 1)) { - return; - } - - $bestname = $profile->getBestName(); - - 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, $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, - // TRANS: %3$s is a URL to the faved notice, %4$s is the faved notice text, - // TRANS: %5$s is a URL to all faves of the adding user, %6$s is the StatusNet sitename, - // TRANS: %7$s is the adding user's nickname. - $body = sprintf(_("%1\$s (@%7\$s) just added your notice from %2\$s". - " as one of their favorites.\n\n" . - "The URL of your notice is:\n\n" . - "%3\$s\n\n" . - "The text of your notice is:\n\n" . - "%4\$s\n\n" . - "You can see the list of %1\$s's favorites here:\n\n" . - "%5\$s"), - $bestname, - common_exact_date($notice->created), - common_local_url('shownotice', - array('notice' => $notice->id)), - $notice->content, - common_local_url('showfavorites', - array('nickname' => $sender->getNickname())), - common_config('site', 'name'), - $sender->getNickname()) . - mail_footer_block(); - - $headers = _mail_prepare_headers('fave', $rcpt->getNickname(), $sender->getNickname()); - - common_switch_locale(); - mail_to_user($rcpt, $subject, $body, $headers); -} - /** * Notify a user that they have received an "attn:" message AKA "@-reply" * @@ -735,7 +675,7 @@ function mail_notify_fave(User $rcpt, Profile $sender, Notice $notice) */ function mail_notify_attn($user, $notice) { - if (!$user->email || !$user->emailnotifyattn) { + if (!$user->receivesEmailNotifications()) { return; } @@ -745,12 +685,13 @@ function mail_notify_attn($user, $notice) return; } + // See if the notice's author who mentions this user is sandboxed if (!$sender->hasRight(Right::EMAILONREPLY)) { return; } + // If the author has blocked the author, don't spam them with a notification. if ($user->hasBlocked($sender)) { - // If the author has blocked us, don't spam them with a notification. return; }