Updates the "catch-all mode" to allow the owner to specify the catch-all address.
authorVincent Zanotti <vincent.zanotti@m4x.org>
Wed, 27 May 2009 14:31:31 +0000 (16:31 +0200)
committerVincent Zanotti <vincent.zanotti@m4x.org>
Wed, 27 May 2009 14:31:31 +0000 (16:31 +0200)
Also prevents this mode from being used in a production environment.

Signed-off-by: Vincent Zanotti <vincent.zanotti@m4x.org>
classes/plglobals.php
classes/plmailer.php

index 0fe88f1..a3e62b2 100644 (file)
@@ -64,12 +64,13 @@ class PlGlobals
                                // 'r'  => read/only
                                // ''   => site down
 
-    /** Catch-all mode for mails
-     * If set to 1, all emails are sent to admin_email (defined in [Core])
-     * instead of their actual destination (but apparent from and to aren't
-     * modified)
+    /** Catch-all mode for emails.
+     * If set to a valid email address, all emails from plat/al are sent to
+     * that email address, instead of their normal destination (From:, To:,
+     * and CC: headers are not actually modified).
+     * Note: only valid if restricted_platal is set to true.
      */
-    public $catchmail = false;
+    public $email_catchall = false;
 
     /** Tell smarty to check the timestamps of the templates to decide
      * whether recompile the template or not. If this option is false and
index e3e348d..02ed8af 100644 (file)
@@ -329,8 +329,8 @@ class PlMailer extends Mail_Mime {
             $this->addHeader('X-Org-Mail', S::user()->forlifeEmail());
         }
         $addrs = Array();
-        foreach(Array('To', 'Cc', 'Bcc') as $hdr) {
-            if(isset($this->_headers[$hdr])) {
+        foreach (Array('To', 'Cc', 'Bcc') as $hdr) {
+            if (isset($this->_headers[$hdr])) {
                 require_once 'Mail/RFC822.php';
                 $parsed = @Mail_RFC822::parseAddressList($this->_headers[$hdr]);
                 if (is_array($parsed)) {
@@ -338,24 +338,23 @@ class PlMailer extends Mail_Mime {
                 }
             }
         }
-        if(empty($addrs)) {
+        if (empty($addrs)) {
             return false;
         }
 
         $dests = Array();
-        foreach($addrs as $a) {
+        foreach ($addrs as $a) {
             $dests[] = "{$a->mailbox}@{$a->host}";
         }
 
-        // Support for "catch-all" mail address : all emails are sent to
-        // admin_email instead of actual recipients
+        // Support for a "catch-all" email address, to be used by developers.
+        // This mode can only be activated when the working copy is in restricted
+        // mode, to ensure that production plat/al copies are never affected.
         global $globals;
-        if($globals->catchmail) {
+        if ($globals->email_catchall && $globals->core->restricted_platal) {
             require_once 'Mail/RFC822.php';
-            if(@Mail_RFC822::isValidInetAddress($globals->admin_email)){
-                $dests = array($globals->admin_email);
-            }else if(@Mail_RFC822::isValidInetAddress($globals->core->admin_email)){
-                $dests = array($globals->core->admin_email);
+            if (@Mail_RFC822::isValidInetAddress($globals->email_catchall)) {
+                $dests = array($globals->email_catchall);
             }
         }