Removes compatibility with non-hruid code (please use core-1.0.0 for non-hruid-compat...
[platal.git] / classes / plmailer.php
index eb26208..08e71f8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2008 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -38,7 +38,7 @@ class PlMail extends Smarty
         $this->template_dir  = $globals->spoolroot . "/templates/";
         $this->compile_dir   = $globals->spoolroot . "/spool/mails_c/";
         $this->config_dir    = $globals->spoolroot . "/configs/";
-
+        array_unshift($this->plugins_dir, $globals->spoolroot."/plugins/");
 
         $this->register_outputfilter(Array($this, 'mail_format'));
         $this->register_function('from',    Array($this, 'setFrom'));
@@ -47,6 +47,7 @@ class PlMail extends Smarty
         $this->register_function('bcc',     Array($this, 'addBcc'));
         $this->register_function('subject', Array($this, 'setSubject'));
         $this->register_function('add_header', Array($this, 'addHeader'));
+        $this->assign_by_ref('globals', $globals);
     }
 
     public static function &get(&$mailer, $tpl)
@@ -195,6 +196,20 @@ class PlMailer extends Mail_Mime {
         return parent::setFrom($this->correct_emails($email));
     }
 
+    static function encodeQP($char)
+    {
+        return sprintf('=%02X', ord($char));
+    }
+
+    public function setSubject($subject)
+    {
+        if (!preg_match('/^[\x20-\x7e]*$/', $subject)) {
+            $subject = '=?UTF-8?Q?' . preg_replace('/[^\x21-\x3C\x3e-\x7e]/e', 'PlMailer::encodeQP("\0")', $subject)
+                     . '?=';
+        }
+        return parent::setSubject($subject);
+    }
+
     public function addHeader($hdr,$val)
     {
         switch($hdr) {
@@ -264,7 +279,11 @@ class PlMailer extends Mail_Mime {
     private function processPage($with_html = true)
     {
         if (!is_null($this->page)) {
-            $level = error_reporting(0);
+            global $globals;
+            if (!($globals->debug & DEBUG_SMARTY)) {
+                $level = error_reporting(0);
+            }
+            $this->page->assign_by_ref('globals', $globals);
             $this->page->run('head'); // process page headers
             $this->wiki = trim($this->page->run('wiki')); // get wiki
             if (!$this->wiki) {
@@ -276,12 +295,14 @@ class PlMailer extends Mail_Mime {
                     }
                 }
             }
-            error_reporting($level);
+            if (!($globals->debug & DEBUG_SMARTY)) {
+                error_reporting($level);
+            }
         }
         if ($this->wiki) {
-            $this->setTxtBody(MiniWiki::WikiToText($this->wiki, true, 0, 78));
+            $this->setTxtBody(MiniWiki::WikiToText($this->wiki, false, 0, 78));
             if ($with_html) {
-                $this->setHtmlBody(MiniWiki::WikiToHtml($this->wiki, true));
+                $this->setHtmlBody('<html><body>' . MiniWiki::WikiToHtml($this->wiki, true) . '</body></html>');
             }
         }
     }
@@ -289,9 +310,8 @@ class PlMailer extends Mail_Mime {
     public function send($with_html = true)
     {
         $this->processPage($with_html);
-        if (S::v('forlife')) {
-            global $globals;
-            $this->addHeader('X-Org-Mail', S::v('forlife') . '@' . $globals->mail->domain);
+        if (S::user()) {
+            $this->addHeader('X-Org-Mail', S::user()->forlifeEmail());
         }
         $addrs = Array();
         foreach(Array('To', 'Cc', 'Bcc') as $hdr) {