[ticket/17135] Refactor messenger code to services [ci skip]

PHPBB3-17135
This commit is contained in:
rxu 2023-06-06 16:41:55 +07:00
parent 5be1f5d5c9
commit 1f952ca6d8
No known key found for this signature in database
GPG key ID: 955F0567380E586A
6 changed files with 99 additions and 57 deletions

View file

@ -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)

View file

@ -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);
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
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']}")
);
'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']);
$messenger_method->send();
// 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);
}

View file

@ -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));

View file

@ -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()

View file

@ -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;
}

View file

@ -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;
}