]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/mail.php
Report if the email was not sent!
[quix0rs-gnu-social.git] / lib / mail.php
index 39714c5fc03cc6400094d361b2a1a09244a286e2..a5e9efded1aba97c299f896ca1da959613b30954 100644 (file)
@@ -47,12 +47,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 ServerException($backend->getMessage());
         }
     }
     return $backend;
@@ -69,6 +71,8 @@ function mail_backend()
  */
 function mail_send($recipients, $headers, $body)
 {
+    global $_PEAR;
+
     try {
         // XXX: use Mail_Queue... maybe
         $backend = mail_backend();
@@ -79,6 +83,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 ServerException($sent->getMessage());
+        }
         return true;
     } catch (PEAR_Exception $e) {
         common_log(
@@ -148,6 +155,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 +667,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 = $sender->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 +677,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 +687,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;
     }