Load XDB to workaround a segfault in PHP.
[platal.git] / classes / plmailer.php
index 2106f02..8c3c8dd 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2009 Polytechnique.org                              *
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -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,15 +338,26 @@ 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 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->email_catchall && $globals->core->restricted_platal) {
+            require_once 'Mail/RFC822.php';
+            if (@Mail_RFC822::isValidInetAddress($globals->email_catchall)) {
+                $dests = array($globals->email_catchall);
+            }
+        }
+
         // very important to do it in THIS order very precisely.
         $body = $this->get(array('text_charset' => $this->charset,
                                  'text_encoding' => '8bit',