projects
/
platal.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
proposal quick fix for rebuilding search_table even if the
[platal.git]
/
classes
/
plmailer.php
diff --git
a/classes/plmailer.php
b/classes/plmailer.php
index
1bfe781
..
317dd64
100644
(file)
--- a/
classes/plmailer.php
+++ b/
classes/plmailer.php
@@
-1,6
+1,6
@@
<?php
/***************************************************************************
<?php
/***************************************************************************
- * Copyright (C) 2003-200
6
Polytechnique.org *
+ * Copyright (C) 2003-200
7
Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
@@
-21,8
+21,6
@@
require_once('smarty/libs/Smarty.class.php');
require_once('smarty/libs/Smarty.class.php');
-// {{{ class PlMail
-
/** Classe de mail avec corps en templates.
*/
class PlMail extends Smarty
/** Classe de mail avec corps en templates.
*/
class PlMail extends Smarty
@@
-30,19
+28,17
@@
class PlMail extends Smarty
private $tpl;
private $mailer = null;
private $tpl;
private $mailer = null;
- // {{{ constructor
-
- function PlMail($mailer, $tpl)
+ function __construct($tpl)
{
global $globals;
$this->tpl = $tpl;
{
global $globals;
$this->tpl = $tpl;
- $this->mailer = $mailer;
$this->caching = false;
$this->compile_check = true;
$this->template_dir = $globals->spoolroot . "/templates/";
$this->caching = false;
$this->compile_check = true;
$this->template_dir = $globals->spoolroot . "/templates/";
- $this->compile_dir = $globals->spoolroot . "/spool/
template
s_c/";
+ $this->compile_dir = $globals->spoolroot . "/spool/
mail
s_c/";
$this->config_dir = $globals->spoolroot . "/configs/";
$this->config_dir = $globals->spoolroot . "/configs/";
+
$this->register_outputfilter(Array($this, 'mail_format'));
$this->register_function('from', Array($this, 'setFrom'));
$this->register_outputfilter(Array($this, 'mail_format'));
$this->register_function('from', Array($this, 'setFrom'));
@@
-53,28
+49,30
@@
class PlMail extends Smarty
$this->register_function('add_header', Array($this, 'addHeader'));
}
$this->register_function('add_header', Array($this, 'addHeader'));
}
- // }}}
- // {{{ function run()
+ public static function &get(&$mailer, $tpl)
+ {
+ static $plmail;
+ if (!isset($plmail) || $plmail->tpl != $tpl) {
+ $plmail = new PlMail($tpl);
+ }
+ $plmail->mailer =& $mailer;
+ return $plmail;
+ }
- function run($html)
+
public
function run($html)
{
$this->assign('html_version', $html);
{
$this->assign('html_version', $html);
- return $this->fetch($this->tpl);
+ $text = $this->fetch($this->tpl);
+ return $text;
}
}
- // }}}
- // {{{ function mail_format()
-
/** used to remove the empty lines due to {from ...}, {to ...} ... functions */
/** used to remove the empty lines due to {from ...}, {to ...} ... functions */
- static function mail_format($output, &$smarty)
+ static
public
function mail_format($output, &$smarty)
{
return wordwrap("\n".trim($output)."\n",75);
}
{
return wordwrap("\n".trim($output)."\n",75);
}
- // }}}
- // {{{ function format_addr()
-
- static function format_addr(&$params)
+ static protected function format_addr(&$params)
{
if (isset($params['full'])) {
return $params['full'];
{
if (isset($params['full'])) {
return $params['full'];
@@
-85,120
+83,90
@@
class PlMail extends Smarty
}
}
}
}
- // }}}
- // {{{ function setFrom()
-
/** template function : from.
* {from full=...} for an already formatted address
* {from addr=... [text=...]} else
*/
/** template function : from.
* {from full=...} for an already formatted address
* {from addr=... [text=...]} else
*/
- function setFrom($params, &$smarty)
+
public
function setFrom($params, &$smarty)
{
{
- $smarty->mailer->setFrom(
$this->
format_addr($params));
+ $smarty->mailer->setFrom(
PlMail::
format_addr($params));
}
}
- // }}}
- // {{{ function setTo()
-
/** template function : to.
* {to full=...} for an already formatted address
* {to addr=... [text=...]} else
*/
/** template function : to.
* {to full=...} for an already formatted address
* {to addr=... [text=...]} else
*/
- function addTo($params, &$smarty)
+
public
function addTo($params, &$smarty)
{
{
- $smarty->mailer->addTo(
$this->
format_addr($params));
+ $smarty->mailer->addTo(
PlMail::
format_addr($params));
}
}
- // }}}
- // {{{ function setCc()
-
/** template function : cc.
* {cc full=...} for an already formatted address
* {cc addr=... [text=...]} else
*/
/** template function : cc.
* {cc full=...} for an already formatted address
* {cc addr=... [text=...]} else
*/
- function addCc($params, &$smarty)
+
public
function addCc($params, &$smarty)
{
{
- $smarty->mailer->addCc(
$this->
format_addr($params));
+ $smarty->mailer->addCc(
PlMail::
format_addr($params));
}
}
- // }}}
- // {{{ function setBcc()
-
/** template function : bcc.
* {bcc full=...} for an already formatted address
* {bcc addr=... [text=...]} else
*/
/** template function : bcc.
* {bcc full=...} for an already formatted address
* {bcc addr=... [text=...]} else
*/
- function addBcc($params, &$smarty)
+
public
function addBcc($params, &$smarty)
{
{
- $smarty->mailer->addBcc(
$this->
format_addr($params));
+ $smarty->mailer->addBcc(
PlMail::
format_addr($params));
}
}
- // }}}
- // {{{ function setSubject()
-
/** template function : subject.
* {subject text=...}
*/
/** template function : subject.
* {subject text=...}
*/
- function setSubject($params, &$smarty)
+
public
function setSubject($params, &$smarty)
{
$smarty->mailer->setSubject($params['text']);
}
{
$smarty->mailer->setSubject($params['text']);
}
- // }}}
- // {{{ function addHeader()
-
/** template function : add_header.
* {add_header name=... value=...}
*/
/** template function : add_header.
* {add_header name=... value=...}
*/
- function addHeader($params, &$smarty)
+
public
function addHeader($params, &$smarty)
{
$smarty->mailer->addHeader($params['name'], $params['value']);
}
{
$smarty->mailer->addHeader($params['name'], $params['value']);
}
-
- // }}}
}
}
-// }}}
-
require_once('Mail.php');
require_once('Mail/mime.php');
require_once('Mail.php');
require_once('Mail/mime.php');
-// {{{ class PlMailer
/** Class for sending inline or multipart-emails.
/** Class for sending inline or multipart-emails.
+ * Based on Diogenes' HermesMailer
*/
class PlMailer extends Mail_Mime {
private $mail;
private $page = null;
private $charset;
*/
class PlMailer extends Mail_Mime {
private $mail;
private $page = null;
private $charset;
- // {{{ constructor
- function
PlMailer($tpl = null, $charset = "ISO-8859-15
")
+ function
__construct($tpl = null, $charset = "UTF-8
")
{
$this->charset = $charset;
$this->Mail_Mime("\n");
{
$this->charset = $charset;
$this->Mail_Mime("\n");
- $this->mail =
&
Mail::factory('sendmail', Array('sendmail_args' => '-oi'));
+ $this->mail = Mail::factory('sendmail', Array('sendmail_args' => '-oi'));
if (!is_null($tpl)) {
if (!is_null($tpl)) {
- $this->page =
new PlMail
($this, $tpl);
+ $this->page =
& PlMail::get
($this, $tpl);
}
}
}
}
- // }}}
- // {{{ function correct_emails()
-
/**
* converts all : Foo Bar Baz <quux@foobar.org> into "Foo Bar Baz" <quux@foobar.org> which is RFC compliant
*/
/**
* converts all : Foo Bar Baz <quux@foobar.org> into "Foo Bar Baz" <quux@foobar.org> which is RFC compliant
*/
-
private function correct_emails($email)
{
private function correct_emails($email)
{
- return preg_replace('!(^|, *)([^<"]
[^<"]*[^< "]) *(<[^>]*>)!
', '\1"\2" \3', $email);
+ return preg_replace('!(^|, *)([^<"]
+?) *(<[^>]*>)!u
', '\1"\2" \3', $email);
}
}
- // }}}
- // {{{ function addTo()
-
- function addTo($email)
+ public function addTo($email)
{
$email = $this->correct_emails($email);
if (isset($this->_headers['To'])) {
{
$email = $this->correct_emails($email);
if (isset($this->_headers['To'])) {
@@
-208,34
+176,22
@@
class PlMailer extends Mail_Mime {
}
}
}
}
- // }}}
- // {{{ function addCc()
-
- function addCc($email)
+ public function addCc($email)
{
return parent::addCc($this->correct_emails($email));
}
{
return parent::addCc($this->correct_emails($email));
}
- // }}}
- // {{{ function addBcc()
-
- function addBcc($email)
+ public function addBcc($email)
{
return parent::addBcc($this->correct_emails($email));
}
{
return parent::addBcc($this->correct_emails($email));
}
- // }}}
- // {{{ function setFrom()
-
- function setFrom($email)
+ public function setFrom($email)
{
return parent::setFrom($this->correct_emails($email));
}
{
return parent::setFrom($this->correct_emails($email));
}
- // }}}
- // {{{ function addHeader()
-
- function addHeader($hdr,$val)
+ public function addHeader($hdr,$val)
{
switch($hdr) {
case 'From':
{
switch($hdr) {
case 'From':
@@
-262,51
+218,37
@@
class PlMailer extends Mail_Mime {
}
}
}
}
- // }}}
- // {{{ function assign()
-
- function assign($var, $value)
+ public function assign($var, $value)
{
if (!is_null($this->page)) {
$this->page->assign($var, $value);
}
}
{
if (!is_null($this->page)) {
$this->page->assign($var, $value);
}
}
- // }}}
- // {{{ function assign_by_ref()
-
- function assign_by_ref($var, &$value)
+ public function assign_by_ref($var, &$value)
{
if (!is_null($this->page)) {
$this->page->assign_by_ref($var, $value);
}
}
{
if (!is_null($this->page)) {
$this->page->assign_by_ref($var, $value);
}
}
- // }}}
- // {{{ function register_modifier()
-
- function register_modifier($var, $callback)
+ public function register_modifier($var, $callback)
{
if (!is_null($this->page)) {
$this->page->register_modifier($var, $callback);
}
}
{
if (!is_null($this->page)) {
$this->page->register_modifier($var, $callback);
}
}
- // }}}
- // {{{ function register_function()
-
- function register_function($var, $callback)
+ public function register_function($var, $callback)
{
if (!is_null($this->page)) {
$this->page->register_function($var, $callback);
}
}
{
if (!is_null($this->page)) {
$this->page->register_function($var, $callback);
}
}
- // }}}
- // {{{ function processPage()
-
private function processPage($with_html = true)
{
private function processPage($with_html = true)
{
+ $level = error_reporting(0);
if (!is_null($this->page)) {
$this->setTxtBody($this->page->run(false));
if ($with_html) {
if (!is_null($this->page)) {
$this->setTxtBody($this->page->run(false));
if ($with_html) {
@@
-316,22
+258,24
@@
class PlMailer extends Mail_Mime {
}
}
}
}
}
}
+ error_reporting($level);
}
}
- // }}}
- // {{{ function send()
-
- function send($with_html = true)
+ public function send($with_html = true)
{
$this->processPage($with_html);
if (S::v('forlife')) {
{
$this->processPage($with_html);
if (S::v('forlife')) {
- $this->addHeader('X-Org-Mail', S::v('forlife') . '@polytechnique.org');
+ global $globals;
+ $this->addHeader('X-Org-Mail', S::v('forlife') . '@' . $globals->mail->domain);
}
$addrs = Array();
foreach(Array('To', 'Cc', 'Bcc') as $hdr) {
if(isset($this->_headers[$hdr])) {
require_once 'Mail/RFC822.php';
}
$addrs = Array();
foreach(Array('To', 'Cc', 'Bcc') as $hdr) {
if(isset($this->_headers[$hdr])) {
require_once 'Mail/RFC822.php';
- $addrs = array_merge($addrs, Mail_RFC822::parseAddressList($this->_headers[$hdr]));
+ $parsed = @Mail_RFC822::parseAddressList($this->_headers[$hdr]);
+ if (is_array($parsed)) {
+ $addrs = array_merge($addrs, $parsed);
+ }
}
}
if(empty($addrs)) {
}
}
if(empty($addrs)) {
@@
-348,12
+292,13
@@
class PlMailer extends Mail_Mime {
'html_charset' => $this->charset,
'head_charset' => $this->charset));
$hdrs = $this->headers();
'html_charset' => $this->charset,
'head_charset' => $this->charset));
$hdrs = $this->headers();
+ if (empty($hdrs['From'])) {
+ trigger_error('Empty "From", mail not sent', E_USER_WARNING);
+ return false;
+ }
return $this->mail->send($dests, $hdrs, $body);
}
return $this->mail->send($dests, $hdrs, $body);
}
-
- // }}}
}
}
-// }}}
-
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
?>