Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
CRAP | |
0.00% |
0 / 114 |
message | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
380 | |
0.00% |
0 / 114 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
set_subject | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
set_body | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
set_template | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
set_template_vars | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
add_recipient_from_user_row | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 10 |
|||
add_recipient | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 11 |
|||
set_sender_from_user | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 12 |
|||
set_sender | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 9 |
|||
set_sender_notify_type | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
cc_sender | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 19 |
|||
send | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 35 |
<?php | |
/** | |
* | |
* This file is part of the phpBB Forum Software package. | |
* | |
* @copyright (c) phpBB Limited <https://www.phpbb.com> | |
* @license GNU General Public License, version 2 (GPL-2.0) | |
* | |
* For full copyright and license information, please see | |
* the docs/CREDITS.txt file. | |
* | |
*/ | |
namespace phpbb\message; | |
/** | |
* Class message | |
* Holds all information for an email and sends it in the end | |
*/ | |
class message | |
{ | |
/** @var string */ | |
protected $server_name; | |
/** @var string */ | |
protected $subject = ''; | |
/** @var string */ | |
protected $body = ''; | |
/** @var string */ | |
protected $template = ''; | |
/** @var array */ | |
protected $template_vars = array(); | |
/** @var string */ | |
protected $sender_ip = ''; | |
/** @var string */ | |
protected $sender_name = ''; | |
/** @var string */ | |
protected $sender_address = ''; | |
/** @var string */ | |
protected $sender_lang = ''; | |
/** @var string */ | |
protected $sender_id = ''; | |
/** @var string */ | |
protected $sender_username = ''; | |
/** @var string */ | |
protected $sender_jabber = ''; | |
/** @var int */ | |
protected $sender_notify_type = NOTIFY_EMAIL; | |
/** @var array */ | |
protected $recipients; | |
/** | |
* Construct | |
* | |
* @param string $server_name Used for AntiAbuse header | |
*/ | |
public function __construct($server_name) | |
{ | |
$this->server_name = $server_name; | |
} | |
/** | |
* Set the subject of the email | |
* | |
* @param string $subject | |
* @return null | |
*/ | |
public function set_subject($subject) | |
{ | |
$this->subject = $subject; | |
} | |
/** | |
* Set the body of the email text | |
* | |
* @param string $body | |
* @return null | |
*/ | |
public function set_body($body) | |
{ | |
$this->body = $body; | |
} | |
/** | |
* Set the name of the email template to use | |
* | |
* @param string $template | |
* @return null | |
*/ | |
public function set_template($template) | |
{ | |
$this->template = $template; | |
} | |
/** | |
* Set the array with the "template" data for the email | |
* | |
* @param array $template_vars | |
* @return null | |
*/ | |
public function set_template_vars($template_vars) | |
{ | |
$this->template_vars = $template_vars; | |
} | |
/** | |
* Add a recipient from \phpbb\user | |
* | |
* @param array $user | |
* @return null | |
*/ | |
public function add_recipient_from_user_row(array $user) | |
{ | |
$this->add_recipient( | |
$user['username'], | |
$user['user_email'], | |
$user['user_lang'], | |
$user['user_notify_type'], | |
$user['username'], | |
$user['user_jabber'] | |
); | |
} | |
/** | |
* Add a recipient | |
* | |
* @param string $recipient_name Displayed sender name | |
* @param string $recipient_address Email address | |
* @param string $recipient_lang | |
* @param int $recipient_notify_type Used notification methods (Jabber, Email, ...) | |
* @param string $recipient_username User Name (used for AntiAbuse header) | |
* @param string $recipient_jabber | |
* @return null | |
*/ | |
public function add_recipient($recipient_name, $recipient_address, $recipient_lang, $recipient_notify_type = NOTIFY_EMAIL, $recipient_username = '', $recipient_jabber = '') | |
{ | |
$this->recipients[] = array( | |
'name' => $recipient_name, | |
'address' => $recipient_address, | |
'lang' => $recipient_lang, | |
'username' => $recipient_username, | |
'jabber' => $recipient_jabber, | |
'notify_type' => $recipient_notify_type, | |
'to_name' => $recipient_name, | |
); | |
} | |
/** | |
* Set the senders data from \phpbb\user object | |
* | |
* @param \phpbb\user $user | |
* @return null | |
*/ | |
public function set_sender_from_user($user) | |
{ | |
$this->set_sender( | |
$user->ip, | |
$user->data['username'], | |
$user->data['user_email'], | |
$user->lang_name, | |
$user->data['user_id'], | |
$user->data['username'], | |
$user->data['user_jabber'] | |
); | |
$this->set_sender_notify_type($user->data['user_notify_type']); | |
} | |
/** | |
* Set the senders data | |
* | |
* @param string $sender_ip | |
* @param string $sender_name Displayed sender name | |
* @param string $sender_address Email address | |
* @param string $sender_lang | |
* @param int $sender_id User ID | |
* @param string $sender_username User Name (used for AntiAbuse header) | |
* @param string $sender_jabber | |
* @return null | |
*/ | |
public function set_sender($sender_ip, $sender_name, $sender_address, $sender_lang = '', $sender_id = 0, $sender_username = '', $sender_jabber = '') | |
{ | |
$this->sender_ip = $sender_ip; | |
$this->sender_name = $sender_name; | |
$this->sender_address = $sender_address; | |
$this->sender_lang = $sender_lang; | |
$this->sender_id = $sender_id; | |
$this->sender_username = $sender_username; | |
$this->sender_jabber = $sender_jabber; | |
} | |
/** | |
* Which notification type should be used? Jabber, Email, ...? | |
* | |
* @param int $sender_notify_type | |
* @return null | |
*/ | |
public function set_sender_notify_type($sender_notify_type) | |
{ | |
$this->sender_notify_type = $sender_notify_type; | |
} | |
/** | |
* Ok, now the same email if CC specified, but without exposing the user's email address | |
* | |
* @return null | |
*/ | |
public function cc_sender() | |
{ | |
if (!count($this->recipients)) | |
{ | |
trigger_error('No email recipients specified'); | |
} | |
if (!$this->sender_address) | |
{ | |
trigger_error('No email sender specified'); | |
} | |
$this->recipients[] = array( | |
'lang' => $this->sender_lang, | |
'address' => $this->sender_address, | |
'name' => $this->sender_name, | |
'username' => $this->sender_username, | |
'jabber' => $this->sender_jabber, | |
'notify_type' => $this->sender_notify_type, | |
'to_name' => $this->recipients[0]['to_name'], | |
); | |
} | |
/** | |
* Send the email | |
* | |
* @param \messenger $messenger | |
* @param string $contact | |
* @return null | |
*/ | |
public function send(\messenger $messenger, $contact) | |
{ | |
if (!count($this->recipients)) | |
{ | |
return; | |
} | |
foreach ($this->recipients as $recipient) | |
{ | |
$messenger->template($this->template, $recipient['lang']); | |
$messenger->replyto($this->sender_address); | |
$messenger->to($recipient['address'], $recipient['name']); | |
$messenger->im($recipient['jabber'], $recipient['username']); | |
$messenger->headers('X-AntiAbuse: Board servername - ' . $this->server_name); | |
$messenger->headers('X-AntiAbuse: User IP - ' . $this->sender_ip); | |
if ($this->sender_id) | |
{ | |
$messenger->headers('X-AntiAbuse: User_id - ' . $this->sender_id); | |
} | |
if ($this->sender_username) | |
{ | |
$messenger->headers('X-AntiAbuse: Username - ' . $this->sender_username); | |
} | |
$messenger->subject(htmlspecialchars_decode($this->subject)); | |
$messenger->assign_vars(array( | |
'BOARD_CONTACT' => $contact, | |
'TO_USERNAME' => htmlspecialchars_decode($recipient['to_name']), | |
'FROM_USERNAME' => htmlspecialchars_decode($this->sender_name), | |
'MESSAGE' => htmlspecialchars_decode($this->body)) | |
); | |
if (count($this->template_vars)) | |
{ | |
$messenger->assign_vars($this->template_vars); | |
} | |
$messenger->send($recipient['notify_type']); | |
} | |
} | |
} |