From a105f588e354b59ff3bf2095e8e977533cd46220 Mon Sep 17 00:00:00 2001 From: Vincent Zanotti Date: Wed, 27 May 2009 16:31:31 +0200 Subject: [PATCH] Updates the "catch-all mode" to allow the owner to specify the catch-all address. Also prevents this mode from being used in a production environment. Signed-off-by: Vincent Zanotti --- classes/plglobals.php | 11 ++++++----- classes/plmailer.php | 21 ++++++++++----------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/classes/plglobals.php b/classes/plglobals.php index 0fe88f1..a3e62b2 100644 --- a/classes/plglobals.php +++ b/classes/plglobals.php @@ -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 diff --git a/classes/plmailer.php b/classes/plmailer.php index e3e348d..02ed8af 100644 --- a/classes/plmailer.php +++ b/classes/plmailer.php @@ -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); } } -- 2.1.4