X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fplmailer.php;h=6b6fd0d8904e7271ebc816c6c321f383b131b5bf;hb=ff95a30266c7194bdff34f749121d43130f08b65;hp=317dd64f05749e93ccf3561b8c0926ef123bdc5a;hpb=a14159bffdc1ea08c97e6634dc1480619bdc478a;p=platal.git diff --git a/classes/plmailer.php b/classes/plmailer.php index 317dd64..6b6fd0d 100644 --- a/classes/plmailer.php +++ b/classes/plmailer.php @@ -1,6 +1,6 @@ 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) @@ -59,17 +60,20 @@ class PlMail extends Smarty return $plmail; } - public function run($html) + public function run($version) { - $this->assign('html_version', $html); + $this->assign('mail_part', $version); $text = $this->fetch($this->tpl); + if ($version == 'text') { + return wordwrap($text, 78); + } return $text; } /** used to remove the empty lines due to {from ...}, {to ...} ... functions */ static public function mail_format($output, &$smarty) { - return wordwrap("\n".trim($output)."\n",75); + return "\n".trim($output)."\n"; } static protected function format_addr(&$params) @@ -120,7 +124,7 @@ class PlMail extends Smarty } /** template function : subject. - * {subject text=...} + * {subject text=...} */ public function setSubject($params, &$smarty) { @@ -147,6 +151,7 @@ class PlMailer extends Mail_Mime { private $mail; private $page = null; private $charset; + private $wiki = null; function __construct($tpl = null, $charset = "UTF-8") { @@ -218,13 +223,19 @@ class PlMailer extends Mail_Mime { } } + public function addUploadAttachment(PlUpload &$upload, $name) + { + $encoding = $upload->isType('text') ? 'quoted-printable' : 'base64'; + $this->addAttachment($upload->getContents(), $upload->contentType(), $name, false, $encoding); + } + public function assign($var, $value) { if (!is_null($this->page)) { $this->page->assign($var, $value); } } - + public function assign_by_ref($var, &$value) { if (!is_null($this->page)) { @@ -238,27 +249,42 @@ class PlMailer extends Mail_Mime { $this->page->register_modifier($var, $callback); } } - + public function register_function($var, $callback) { if (!is_null($this->page)) { $this->page->register_function($var, $callback); } } - + + public function setWikiBody($wiki) + { + $this->wiki = $wiki; + } + private function processPage($with_html = true) { - $level = error_reporting(0); if (!is_null($this->page)) { - $this->setTxtBody($this->page->run(false)); - if ($with_html) { - $html = trim($this->page->run(true)); - if (!empty($html)) { - $this->setHtmlBody($html); + $level = error_reporting(0); + $this->page->run('head'); // process page headers + $this->wiki = trim($this->page->run('wiki')); // get wiki + if (!$this->wiki) { + $this->setTxtBody($this->page->run('text')); + if ($with_html) { + $html = trim($this->page->run('html')); + if (!empty($html)) { + $this->setHtmlBody($html); + } } } + error_reporting($level); + } + if ($this->wiki) { + $this->setTxtBody(MiniWiki::WikiToText($this->wiki, false, 0, 78)); + if ($with_html) { + $this->setHtmlBody('' . MiniWiki::WikiToHtml($this->wiki, true) . ''); + } } - error_reporting($level); } public function send($with_html = true) @@ -281,14 +307,15 @@ class PlMailer extends Mail_Mime { if(empty($addrs)) { return false; } - + $dests = Array(); foreach($addrs as $a) { $dests[] = "{$a->mailbox}@{$a->host}"; } - + // very important to do it in THIS order very precisely. $body = $this->get(array('text_charset' => $this->charset, + 'text_encoding' => '8bit', 'html_charset' => $this->charset, 'head_charset' => $this->charset)); $hdrs = $this->headers();