<?php
/***************************************************************************
- * Copyright (C) 2003-2010 Polytechnique.org *
+ * Copyright (C) 2003-2011 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
$this->assign_by_ref('globals', $globals);
}
- public static function &get(&$mailer, $tpl)
+ public static function &get($mailer, $tpl)
{
static $plmail;
if (!isset($plmail) || $plmail->tpl != $tpl) {
}
/** used to remove the empty lines due to {from ...}, {to ...} ... functions */
- static public function mail_format($output, &$smarty)
+ static public function mail_format($output, $smarty)
{
return "\n".trim($output)."\n";
}
* {from full=...} for an already formatted address
* {from addr=... [text=...]} else
*/
- public function setFrom($params, &$smarty)
+ public function setFrom($params, $smarty)
{
$smarty->mailer->setFrom(PlMail::format_addr($params));
}
* {to full=...} for an already formatted address
* {to addr=... [text=...]} else
*/
- public function addTo($params, &$smarty)
+ public function addTo($params, $smarty)
{
$smarty->mailer->addTo(PlMail::format_addr($params));
}
* {cc full=...} for an already formatted address
* {cc addr=... [text=...]} else
*/
- public function addCc($params, &$smarty)
+ public function addCc($params, $smarty)
{
$smarty->mailer->addCc(PlMail::format_addr($params));
}
* {bcc full=...} for an already formatted address
* {bcc addr=... [text=...]} else
*/
- public function addBcc($params, &$smarty)
+ public function addBcc($params, $smarty)
{
$smarty->mailer->addBcc(PlMail::format_addr($params));
}
/** template function : subject.
* {subject text=...}
*/
- public function setSubject($params, &$smarty)
+ public function setSubject($params, $smarty)
{
$smarty->mailer->setSubject($params['text']);
}
/** template function : add_header.
* {add_header name=... value=...}
*/
- public function addHeader($params, &$smarty)
+ public function addHeader($params, $smarty)
{
$smarty->mailer->addHeader($params['name'], $params['value']);
}
if ($email instanceof PlUser) {
$email = self::formatUser($email);
}
- return preg_replace('!(^|, *)([^<"]+?) *(<[^>]*>)!u', '\1"\2" \3', $email);
+ $email = preg_replace('!(^|, *)([^<"]+?) *(<[^>]*>)!u',
+ '\1 "\2" \3', $email);
+ return preg_replace('/"([^<]+)"/e',
+ '"\\"" . PlMailer::encodeStringQP("\1") . "\\""',
+ $email);
}
public function addTo($email)
}
}
+ public function setTo($email)
+ {
+ $email = $this->correct_emails($email);
+ $this->_headers['To'] = $email;
+ }
+
public function addCc($email)
{
return parent::addCc($this->correct_emails($email));
return parent::setFrom($this->correct_emails($email));
}
+ static function encodeStringQP($string)
+ {
+ if (!preg_match('/^[\x20-\x7e]*$/', $string)) {
+ $string = '=?UTF-8?Q?' . preg_replace('/[^\x21-\x3C\x3e\x40-\x7e]/e', 'PlMailer::encodeQP("\0")', $string)
+ . '?=';
+ }
+ return $string;
+ }
+
+
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\x40-\x7e]/e', 'PlMailer::encodeQP("\0")', $subject)
- . '?=';
- }
- return parent::setSubject($subject);
+ return parent::setSubject(self::encodeStringQP($subject));
}
public function addHeader($hdr,$val)
}
}
- public function addUploadAttachment(PlUpload &$upload, $name)
+ public function addUploadAttachment(PlUpload $upload, $name)
{
$encoding = $upload->isType('text') ? 'quoted-printable' : 'base64';
$this->addAttachment($upload->getContents(), $upload->contentType(), $name, false, $encoding);
}
}
- public function sendTo(PlUser &$user)
+ public function sendTo(PlUser $user)
{
- $this->addTo($user);
+ $this->setTo($user);
$this->assign_by_ref('user', $user);
return $this->send($user->isEmailFormatHtml());
}