1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-03-22 16:40:21 +01:00

[ticket/15836] Event to send message via external transport

PHPBB3-15836
This commit is contained in:
DSR! 2018-03-03 12:12:38 -03:00 committed by Marc Alexander
parent ca23d199c1
commit c67dd0c591
No known key found for this signature in database
GPG Key ID: 50E0D2423696F995

View File

@ -521,7 +521,7 @@ class messenger
*/
function msg_email()
{
global $config;
global $config, $phpbb_dispatcher;
if (empty($config['email_enable']))
{
@ -549,6 +549,33 @@ class messenger
$contact_name = htmlspecialchars_decode($config['board_contact_name']);
$board_contact = (($contact_name !== '') ? '"' . mail_encode($contact_name) . '" ' : '') . '<' . $config['board_contact'] . '>';
$break = false;
$addresses = $this->addresses;
$subject = $this->subject;
$msg = $this->msg;
/**
* Event to send message via external transport
*
* @event core.notification_message_email
* @var bool break Flag indicating if the function return after hook
* @var array addresses The message recipients
* @var string subject The message subject
* @var string msg The message text
* @since 3.2.4-RC1
*/
$vars = array(
'break',
'addresses',
'subject',
'msg',
);
extract($phpbb_dispatcher->trigger_event('core.notification_message_email', compact($vars)));
if ($break)
{
return true;
}
if (empty($this->replyto))
{
$this->replyto = $board_contact;
@ -787,7 +814,7 @@ class queue
*/
function process()
{
global $config, $phpEx, $phpbb_root_path, $user;
global $config, $phpEx, $phpbb_root_path, $user, $phpbb_dispatcher;
$lock = new \phpbb\lock\flock($this->cache_file);
$lock->acquire();
@ -884,23 +911,45 @@ class queue
switch ($object)
{
case 'email':
$err_msg = '';
$to = (!$to) ? 'undisclosed-recipients:;' : $to;
$break = false;
/**
* Event to send message via external transport
*
* @event core.notification_message_email
* @var bool break Flag indicating if the function return after hook
* @var array addresses The message recipients
* @var string subject The message subject
* @var string msg The message text
* @since 3.2.4-RC1
*/
$vars = array(
'break',
'addresses',
'subject',
'msg',
);
extract($phpbb_dispatcher->trigger_event('core.notification_message_email', compact($vars)));
if ($config['smtp_delivery'])
if (!$break)
{
$result = smtpmail($addresses, mail_encode($subject), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $err_msg, $headers);
}
else
{
$result = phpbb_mail($to, $subject, $msg, $headers, PHP_EOL, $err_msg);
}
$err_msg = '';
$to = (!$to) ? 'undisclosed-recipients:;' : $to;
if (!$result)
{
$messenger = new messenger();
$messenger->error('EMAIL', $err_msg);
continue 2;
if ($config['smtp_delivery'])
{
$result = smtpmail($addresses, mail_encode($subject), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $err_msg, $headers);
}
else
{
$result = phpbb_mail($to, $subject, $msg, $headers, PHP_EOL, $err_msg);
}
if (!$result)
{
$messenger = new messenger();
$messenger->error('EMAIL', $err_msg);
continue 2;
}
}
break;