diff --git a/phpBB/includes/ucp/ucp_register.php b/phpBB/includes/ucp/ucp_register.php index b8d0d78b40..734c83089b 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -458,30 +458,26 @@ class ucp_register if ($config['email_enable']) { - include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); - - $messenger = new messenger(false); - - $messenger->template($email_template, $data['lang']); - - $messenger->to($data['email'], $data['username']); - - $messenger->anti_abuse_headers($config, $user); - - $messenger->assign_vars(array( + $messenger = $phpbb_container->get('messenger.method_collection'); + $email = $this->messenger->offsetGet('messenger.method.email'); + $email->set_use_queue(false); + $email->template($email_template, $data['lang']); + $email->to($data['email'], $data['username']); + $email->anti_abuse_headers($config, $user); + $email->assign_vars([ 'WELCOME_MSG' => html_entity_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), ENT_COMPAT), 'USERNAME' => html_entity_decode($data['username'], ENT_COMPAT), 'PASSWORD' => html_entity_decode($data['new_password'], ENT_COMPAT), - 'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&u=$user_id&k=$user_actkey") - ); + 'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&u=$user_id&k=$user_actkey", + ]); if ($coppa) { - $messenger->assign_vars(array( + $email->assign_vars([ 'FAX_INFO' => $config['coppa_fax'], 'MAIL_INFO' => $config['coppa_mail'], - 'EMAIL_ADDRESS' => $data['email']) - ); + 'EMAIL_ADDRESS' => $data['email'], + ]); } /** @@ -510,7 +506,7 @@ class ucp_register ); extract($phpbb_dispatcher->trigger_event('core.ucp_register_welcome_email_before', compact($vars))); - $messenger->send(NOTIFY_EMAIL); + $email->send(); } if ($config['require_activation'] == USER_ACTIVATION_ADMIN) diff --git a/phpBB/includes/ucp/ucp_resend.php b/phpBB/includes/ucp/ucp_resend.php index 31e0878663..122aeeca37 100644 --- a/phpBB/includes/ucp/ucp_resend.php +++ b/phpBB/includes/ucp/ucp_resend.php @@ -30,7 +30,7 @@ class ucp_resend function main($id, $mode) { global $config, $phpbb_root_path, $phpEx; - global $db, $user, $auth, $template, $request; + global $db, $user, $auth, $template, $request, $phpbb_container; $username = $request->variable('username', '', true); $email = strtolower($request->variable('email', '')); @@ -94,32 +94,33 @@ class ucp_resend $coppa = ($row['group_name'] == 'REGISTERED_COPPA' && $row['group_type'] == GROUP_SPECIAL) ? true : false; - include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); - $messenger = new messenger(false); + $messenger = $phpbb_container->get('messenger.method_collection'); + $email = $messenger->offsetGet('messenger.method.email'); + $email->set_use_queue(false); if ($config['require_activation'] == USER_ACTIVATION_SELF || $coppa) { - $messenger->template(($coppa) ? 'coppa_resend_inactive' : 'user_resend_inactive', $user_row['user_lang']); - $messenger->set_addresses($user_row); + $email->template(($coppa) ? 'coppa_resend_inactive' : 'user_resend_inactive', $user_row['user_lang']); + $email->set_addresses($user_row); - $messenger->anti_abuse_headers($config, $user); + $email->anti_abuse_headers($config, $user); - $messenger->assign_vars(array( + $email->assign_vars([ 'WELCOME_MSG' => html_entity_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), ENT_COMPAT), 'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT), - 'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k={$user_row['user_actkey']}") - ); + 'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k={$user_row['user_actkey']}", + ]); if ($coppa) { - $messenger->assign_vars(array( + $email->assign_vars([ 'FAX_INFO' => $config['coppa_fax'], 'MAIL_INFO' => $config['coppa_mail'], - 'EMAIL_ADDRESS' => $user_row['user_email']) - ); + 'EMAIL_ADDRESS' => $user_row['user_email'], + ]); } - $messenger->send(NOTIFY_EMAIL); + $email->send(); } if ($config['require_activation'] == USER_ACTIVATION_ADMIN) @@ -132,20 +133,31 @@ class ucp_resend WHERE ' . $db->sql_in_set('user_id', $admin_ary[0]['a_user']); $result = $db->sql_query($sql); + $messenger_collection_iterator = $messenger->getIterator(); while ($row = $db->sql_fetchrow($result)) { - $messenger->template('admin_activate', $row['user_lang']); - $messenger->set_addresses($row); + while ($messenger_collection_iterator->valid()) + { + $messenger_method = $messenger_collection_iterator->current(); + $messenger_method->set_use_queue(false); + if ($messenger_method->get_id() == $row['user_notify_type'] || $row['user_notify_type'] == NOTIFY_BOTH) + { + $messenger_method->template('admin_activate', $row['user_lang']); + $messenger_method->set_addresses($row); + $messenger_method->anti_abuse_headers($config, $user); + $messenger_method->assign_vars([ + 'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT), + 'U_USER_DETAILS' => generate_board_url() . "/memberlist.$phpEx?mode=viewprofile&u={$user_row['user_id']}", + 'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k={$user_row['user_actkey']}", + ]); - $messenger->anti_abuse_headers($config, $user); + $messenger_method->send(); - $messenger->assign_vars(array( - 'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT), - 'U_USER_DETAILS' => generate_board_url() . "/memberlist.$phpEx?mode=viewprofile&u={$user_row['user_id']}", - 'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k={$user_row['user_actkey']}") - ); - - $messenger->send($row['user_notify_type']); + // Save the queue in the messenger method class (has to be called or these messages could be lost) + $messenger_method->save_queue(); + } + $messenger_collection_iterator->next(); + } } $db->sql_freeresult($result); } diff --git a/phpBB/phpbb/message/message.php b/phpBB/phpbb/message/message.php index 23960d4778..2a750c1f21 100644 --- a/phpBB/phpbb/message/message.php +++ b/phpBB/phpbb/message/message.php @@ -141,7 +141,7 @@ class message 'user_email' => $recipient_address, 'lang' => $recipient_lang, 'username' => $recipient_username, - 'user_jabber' => $recipient_jabber, + 'user_jabber' => $recipient_jabber, 'notify_type' => $recipient_notify_type, 'to_name' => $recipient_name, ); @@ -245,7 +245,7 @@ class message foreach ($this->recipients as $recipient) { - $messenger_collection_iterator = $this->messenger->getIterator(); + $messenger_collection_iterator = $messenger->getIterator(); while ($messenger_collection_iterator->valid()) { $messenger_method = $messenger_collection_iterator->current(); @@ -256,15 +256,15 @@ class message $messenger_method->set_addresses($recipient); $messenger_method->replyto($this->sender_address); - $messenger_method->headers('X-AntiAbuse', 'Board servername - ' . $this->server_name); - $messenger_method->headers('X-AntiAbuse', 'User IP - ' . $this->sender_ip); + $messenger_method->header('X-AntiAbuse', 'Board servername - ' . $this->server_name); + $messenger_method->header('X-AntiAbuse', 'User IP - ' . $this->sender_ip); if ($this->sender_id) { - $messenger_method->headers('X-AntiAbuse', 'User_id - ' . $this->sender_id); + $messenger_method->header('X-AntiAbuse', 'User_id - ' . $this->sender_id); } if ($this->sender_username) { - $messenger_method->headers('X-AntiAbuse', 'Username - ' . $this->sender_username); + $messenger_method->header('X-AntiAbuse', 'Username - ' . $this->sender_username); } $messenger_method->subject(html_entity_decode($this->subject, ENT_COMPAT)); diff --git a/phpBB/phpbb/messenger/method/base.php b/phpBB/phpbb/messenger/method/base.php index d743d00b48..71e0b798d1 100644 --- a/phpBB/phpbb/messenger/method/base.php +++ b/phpBB/phpbb/messenger/method/base.php @@ -25,14 +25,11 @@ use phpbb\user; /** * Messenger base class */ -class base +abstract class base { /** @var array */ protected $additional_headers = []; - /** @var array */ - protected $addresses = []; - /** @var config */ protected $config; @@ -90,6 +87,15 @@ class base $this->set_use_queue(); } + /** + * Get messenger method id + * @return mixed + */ + abstract public function get_id() + { + return; + } + /** * Sets the use of messenger queue flag * @@ -105,10 +111,12 @@ class base * * @return void */ - public function reset() + abstract public function reset() { - $this->addresses = []; + $this->subject = $this->additional_headers = []; $this->msg = ''; + $this->use_queue = true; + unset($this->template); } /** @@ -117,7 +125,7 @@ class base * @param array $user User row * @return void */ - public function set_addresses($user) + abstract public function set_addresses($user) { } @@ -164,6 +172,14 @@ class base { } + /** + * Send out messages + * @return bool + */ + abstract protected function send() + { + } + /** * Set email template to use * @@ -295,7 +311,7 @@ class base 'SITENAME' => html_entity_decode($this->config['sitename'], ENT_COMPAT), ]); - $subject = $this->email->getSubject(); + $subject = $this->subject; $template = $this->template; /** * Event to modify the template before parsing @@ -304,7 +320,7 @@ class base * @var string subject The message subject * @var \phpbb\template\template template The (readonly) template object * @since 3.2.4-RC1 - * @changed 4.0.0-a1 Added vars: email. Removed vars: method, break. + * @changed 4.0.0-a1 Removed vars: method, break. */ $vars = ['subject', 'template']; extract($this->dispatcher->trigger_event('core.modify_notification_template', compact($vars))); @@ -378,7 +394,7 @@ class base } /** - * Save message data to the messemger file queue + * Save message data to the messenger file queue * @return void */ public function save_queue() diff --git a/phpBB/phpbb/messenger/method/email.php b/phpBB/phpbb/messenger/method/email.php index f6683e82d0..d8025d431b 100644 --- a/phpBB/phpbb/messenger/method/email.php +++ b/phpBB/phpbb/messenger/method/email.php @@ -106,12 +106,14 @@ class email extends base * * @return void */ - public function init() + public function reset() { $this->email = new Email(); $this->headers = $this->email->getHeaders(); $this->msg = $this->replyto = $this->from = ''; $this->mail_priority = Email::PRIORITY_NORMAL; + + parent::reset(); } /** @@ -567,6 +569,7 @@ class email extends base 'email' => $this->email, ]); } + $this->reset(); return true; } diff --git a/phpBB/phpbb/messenger/method/jabber.php b/phpBB/phpbb/messenger/method/jabber.php index 33a8d19eb3..439150a013 100644 --- a/phpBB/phpbb/messenger/method/jabber.php +++ b/phpBB/phpbb/messenger/method/jabber.php @@ -393,6 +393,19 @@ class jabber extends base $this->to[$pos]['name'] = trim($realname); } + /** + * Inits/resets the data to default + * + * @return void + */ + public function reset() + { + $this->msg = ''; + $this->to = []; + + parent::reset(); + } + /** * Sets the use of messenger queue flag * @@ -455,6 +468,8 @@ class jabber extends base } unset($addresses); + $this->reset(); + return true; }