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']); | |
| } | |
| } | |
| } |