From 1f1a02d086df4d650feb54d6e6da978096103eb8 Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 3 Apr 2025 15:46:14 +0700 Subject: [PATCH 1/9] [ticket/17489] Fix messenger queue won't be saved PHPBB-17489 --- phpBB/phpbb/notification/method/messenger_base.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/phpBB/phpbb/notification/method/messenger_base.php b/phpBB/phpbb/notification/method/messenger_base.php index e4b97b7cac..7acc608cc2 100644 --- a/phpBB/phpbb/notification/method/messenger_base.php +++ b/phpBB/phpbb/notification/method/messenger_base.php @@ -126,16 +126,13 @@ abstract class messenger_base extends \phpbb\notification\method\base ], $notification->get_email_template_variables())); $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(); } } } - // Save the queue in the messenger method class (has to be called or these messages could be lost) - foreach ($messenger_collection_iterator as $messenger_method) - { - $messenger_method->save_queue(); - } - // We're done, empty the queue $this->empty_queue(); } From 7467b567e869f940e2298cae27d71a9c0fe3aa99 Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 3 Apr 2025 16:03:33 +0700 Subject: [PATCH 2/9] [ticket/17489] Do not always set use_queue flag to true PHPBB-17489 --- phpBB/phpbb/messenger/method/email.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/messenger/method/email.php b/phpBB/phpbb/messenger/method/email.php index 1bad23760c..adf0951fec 100644 --- a/phpBB/phpbb/messenger/method/email.php +++ b/phpBB/phpbb/messenger/method/email.php @@ -105,7 +105,7 @@ class email extends base $this->mail_priority = symfony_email::PRIORITY_NORMAL; $this->additional_headers = []; - $this->use_queue = true; + $this->set_use_queue(); unset($this->template, $this->reply_to, $this->from); } From c23504e3c7694c4d40cacb2353b3d2cc256363c1 Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 3 Apr 2025 19:16:08 +0700 Subject: [PATCH 3/9] [ticket/17489] Fix queue for ucp_resend, add type hints to $messenger_method PHPBB-17489 --- phpBB/includes/acp/acp_email.php | 2 ++ phpBB/includes/acp/acp_inactive.php | 2 ++ phpBB/includes/ucp/ucp_activate.php | 2 ++ phpBB/includes/ucp/ucp_resend.php | 10 ++++------ phpBB/phpbb/message/message.php | 2 ++ phpBB/phpbb/messenger/queue.php | 2 ++ phpBB/phpbb/notification/method/messenger_base.php | 1 + 7 files changed, 15 insertions(+), 6 deletions(-) diff --git a/phpBB/includes/acp/acp_email.php b/phpBB/includes/acp/acp_email.php index 00ce89317c..1e412d0461 100644 --- a/phpBB/includes/acp/acp_email.php +++ b/phpBB/includes/acp/acp_email.php @@ -227,6 +227,7 @@ class acp_email $used_lang = $email_list[$i][0]['lang']; $used_method = $email_list[$i][0]['method']; + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { $notify_method = $messenger_method->get_id(); @@ -272,6 +273,7 @@ class acp_email if ($use_queue) { + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { $messenger_method->save_queue(); diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index 2436277e15..641beb4d0e 100644 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -205,6 +205,7 @@ class acp_inactive do { + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { if ($messenger_method->get_id() == $user_row['user_notify_type'] || $user_row['user_notify_type'] == $messenger_method::NOTIFY_BOTH) @@ -227,6 +228,7 @@ class acp_inactive } while ($row = $db->sql_fetchrow($result)); + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { $messenger_method->save_queue(); diff --git a/phpBB/includes/ucp/ucp_activate.php b/phpBB/includes/ucp/ucp_activate.php index c9dd3e553e..5500604721 100644 --- a/phpBB/includes/ucp/ucp_activate.php +++ b/phpBB/includes/ucp/ucp_activate.php @@ -133,6 +133,8 @@ class ucp_activate $messenger = $phpbb_container->get('messenger.method_collection'); $messenger_collection_iterator = $messenger->getIterator(); + + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { if ($messenger_method->get_id() == $user_row['user_notify_type'] || $user_row['user_notify_type'] == $messenger_method::NOTIFY_BOTH) diff --git a/phpBB/includes/ucp/ucp_resend.php b/phpBB/includes/ucp/ucp_resend.php index 76e748e85d..259eaf97ef 100644 --- a/phpBB/includes/ucp/ucp_resend.php +++ b/phpBB/includes/ucp/ucp_resend.php @@ -138,6 +138,7 @@ class ucp_resend $messenger_collection_iterator = $messenger->getIterator(); while ($row = $db->sql_fetchrow($result)) { + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { $messenger_method->set_use_queue(false); @@ -153,16 +154,13 @@ class ucp_resend ]); $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(); } } } $db->sql_freeresult($result); - - // Save the queue in the messenger method class (has to be called or these messages could be lost) - foreach ($messenger_collection_iterator as $messenger_method) - { - $messenger_method->save_queue(); - } } $this->update_activation_expiration(); diff --git a/phpBB/phpbb/message/message.php b/phpBB/phpbb/message/message.php index 90b8a1ff5f..581ba17e46 100644 --- a/phpBB/phpbb/message/message.php +++ b/phpBB/phpbb/message/message.php @@ -249,6 +249,8 @@ class message { /** @psalm-suppress InvalidTemplateParam */ $messenger_collection_iterator = $messenger->getIterator(); + + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { $messenger_method->set_use_queue(false); diff --git a/phpBB/phpbb/messenger/queue.php b/phpBB/phpbb/messenger/queue.php index abcc29c1bd..50384bfd82 100644 --- a/phpBB/phpbb/messenger/queue.php +++ b/phpBB/phpbb/messenger/queue.php @@ -116,6 +116,8 @@ class queue /** @psalm-suppress InvalidTemplateParam */ $messenger_collection_iterator = $this->messenger_method_collection->getIterator(); + + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { if (isset($this->queue_data[$messenger_method->get_queue_object_name()])) diff --git a/phpBB/phpbb/notification/method/messenger_base.php b/phpBB/phpbb/notification/method/messenger_base.php index 7acc608cc2..e59176a8a2 100644 --- a/phpBB/phpbb/notification/method/messenger_base.php +++ b/phpBB/phpbb/notification/method/messenger_base.php @@ -114,6 +114,7 @@ abstract class messenger_base extends \phpbb\notification\method\base continue; } + /** @var \phpbb\messenger\method\base $messenger_method */ foreach ($messenger_collection_iterator as $messenger_method) { if ($messenger_method->get_id() == $notify_method || $notify_method == $messenger_method::NOTIFY_BOTH) From d99c3838dfbcb3acf86db3eb087384863cd89f2b Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 3 Apr 2025 20:57:24 +0700 Subject: [PATCH 4/9] [ticket/17489] Ignore Psalm UndefinedMethod issue Psalm fails with UndefinedMethod issue when a method of a child class does not exist in parent/abstract/interface class. Ignore the issue. PHPBB-17489 --- phpBB/includes/acp/acp_email.php | 10 ++++++++-- phpBB/includes/acp/acp_inactive.php | 10 ++++++++-- phpBB/includes/ucp/ucp_activate.php | 5 ++++- phpBB/includes/ucp/ucp_resend.php | 5 ++++- phpBB/phpbb/message/message.php | 5 ++++- phpBB/phpbb/messenger/queue.php | 5 ++++- phpBB/phpbb/notification/method/messenger_base.php | 5 ++++- 7 files changed, 36 insertions(+), 9 deletions(-) diff --git a/phpBB/includes/acp/acp_email.php b/phpBB/includes/acp/acp_email.php index 1e412d0461..591700f66d 100644 --- a/phpBB/includes/acp/acp_email.php +++ b/phpBB/includes/acp/acp_email.php @@ -227,7 +227,10 @@ class acp_email $used_lang = $email_list[$i][0]['lang']; $used_method = $email_list[$i][0]['method']; - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var \phpbb\messenger\method\messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { $notify_method = $messenger_method->get_id(); @@ -273,7 +276,10 @@ class acp_email if ($use_queue) { - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var \phpbb\messenger\method\messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { $messenger_method->save_queue(); diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index 641beb4d0e..935df27c14 100644 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -205,7 +205,10 @@ class acp_inactive do { - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var \phpbb\messenger\method\messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { if ($messenger_method->get_id() == $user_row['user_notify_type'] || $user_row['user_notify_type'] == $messenger_method::NOTIFY_BOTH) @@ -228,7 +231,10 @@ class acp_inactive } while ($row = $db->sql_fetchrow($result)); - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var \phpbb\messenger\method\messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { $messenger_method->save_queue(); diff --git a/phpBB/includes/ucp/ucp_activate.php b/phpBB/includes/ucp/ucp_activate.php index 5500604721..81036c1956 100644 --- a/phpBB/includes/ucp/ucp_activate.php +++ b/phpBB/includes/ucp/ucp_activate.php @@ -134,7 +134,10 @@ class ucp_activate $messenger = $phpbb_container->get('messenger.method_collection'); $messenger_collection_iterator = $messenger->getIterator(); - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var \phpbb\messenger\method\messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { if ($messenger_method->get_id() == $user_row['user_notify_type'] || $user_row['user_notify_type'] == $messenger_method::NOTIFY_BOTH) diff --git a/phpBB/includes/ucp/ucp_resend.php b/phpBB/includes/ucp/ucp_resend.php index 259eaf97ef..4ae14e0ba8 100644 --- a/phpBB/includes/ucp/ucp_resend.php +++ b/phpBB/includes/ucp/ucp_resend.php @@ -138,7 +138,10 @@ class ucp_resend $messenger_collection_iterator = $messenger->getIterator(); while ($row = $db->sql_fetchrow($result)) { - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var \phpbb\messenger\method\messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { $messenger_method->set_use_queue(false); diff --git a/phpBB/phpbb/message/message.php b/phpBB/phpbb/message/message.php index 581ba17e46..b1d95cf5b8 100644 --- a/phpBB/phpbb/message/message.php +++ b/phpBB/phpbb/message/message.php @@ -250,7 +250,10 @@ class message /** @psalm-suppress InvalidTemplateParam */ $messenger_collection_iterator = $messenger->getIterator(); - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { $messenger_method->set_use_queue(false); diff --git a/phpBB/phpbb/messenger/queue.php b/phpBB/phpbb/messenger/queue.php index 50384bfd82..648dd75182 100644 --- a/phpBB/phpbb/messenger/queue.php +++ b/phpBB/phpbb/messenger/queue.php @@ -117,7 +117,10 @@ class queue /** @psalm-suppress InvalidTemplateParam */ $messenger_collection_iterator = $this->messenger_method_collection->getIterator(); - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var \phpbb\messenger\method\messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { if (isset($this->queue_data[$messenger_method->get_queue_object_name()])) diff --git a/phpBB/phpbb/notification/method/messenger_base.php b/phpBB/phpbb/notification/method/messenger_base.php index e59176a8a2..165735e56c 100644 --- a/phpBB/phpbb/notification/method/messenger_base.php +++ b/phpBB/phpbb/notification/method/messenger_base.php @@ -114,7 +114,10 @@ abstract class messenger_base extends \phpbb\notification\method\base continue; } - /** @var \phpbb\messenger\method\base $messenger_method */ + /** + * @var \phpbb\messenger\method\messenger_interface $messenger_method + * @psalm-suppress UndefinedMethod + */ foreach ($messenger_collection_iterator as $messenger_method) { if ($messenger_method->get_id() == $notify_method || $notify_method == $messenger_method::NOTIFY_BOTH) From 67265efc0d1f074b9549075de1382a211d65b7bd Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 3 Apr 2025 10:26:50 +0700 Subject: [PATCH 5/9] [ticket/17487] Fix PHP uncaught exception on sending email via board PHPBB-17487 --- phpBB/phpbb/message/message.php | 20 ++++++++++++-------- phpBB/phpbb/messenger/method/email.php | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/phpBB/phpbb/message/message.php b/phpBB/phpbb/message/message.php index b1d95cf5b8..ea6da8419a 100644 --- a/phpBB/phpbb/message/message.php +++ b/phpBB/phpbb/message/message.php @@ -263,15 +263,19 @@ class message $messenger_method->set_addresses($recipient); $messenger_method->reply_to($this->sender_address); - $messenger_method->header('X-AntiAbuse', 'Board servername - ' . $this->server_name); - $messenger_method->header('X-AntiAbuse', 'User IP - ' . $this->sender_ip); - if ($this->sender_id) + if (isset($messenger_method->headers) && $messenger_method->headers instanceof \Symfony\Component\Mime\Header\Headers) { - $messenger_method->header('X-AntiAbuse', 'User_id - ' . $this->sender_id); - } - if ($this->sender_username) - { - $messenger_method->header('X-AntiAbuse', 'Username - ' . $this->sender_username); + $messenger_method->headers->addHeader('X-AntiAbuse', 'Board servername - ' . $this->server_name); + $messenger_method->headers->addHeader('X-AntiAbuse', 'User IP - ' . $this->sender_ip); + if ($this->sender_id) + { + $messenger_method->headers->addHeader('X-AntiAbuse', 'User_id - ' . $this->sender_id); + } + + if ($this->sender_username) + { + $messenger_method->headers->addHeader('X-AntiAbuse', 'Username - ' . $this->sender_username); + } } $messenger_method->subject(html_entity_decode($this->subject, ENT_COMPAT)); diff --git a/phpBB/phpbb/messenger/method/email.php b/phpBB/phpbb/messenger/method/email.php index adf0951fec..78059174b3 100644 --- a/phpBB/phpbb/messenger/method/email.php +++ b/phpBB/phpbb/messenger/method/email.php @@ -47,7 +47,7 @@ class email extends base protected $from; /** @var Headers */ - protected $headers; + public $headers; /** * @var int From 21314a34a64c1bbf14e149c7602ca8d7d437a881 Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 3 Apr 2025 11:41:59 +0700 Subject: [PATCH 6/9] [ticket/17487] Add functional test for sending email via board PHPBB-17487 --- tests/functional/memberlist_test.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/functional/memberlist_test.php b/tests/functional/memberlist_test.php index 3e40ddc528..5497c24037 100644 --- a/tests/functional/memberlist_test.php +++ b/tests/functional/memberlist_test.php @@ -134,4 +134,29 @@ class phpbb_functional_memberlist_test extends phpbb_functional_test_case unlink(__DIR__ . '/../../phpBB/images/ranks/valid.jpg'); } + + public function test_email() + { + $this->login(); + $this->admin_login(); + $this->add_lang(['acp/board', 'acp/common', 'memberlist']); + + $crawler = self::request('GET', "adm/index.php?sid={$this->sid}&i=acp_board&mode=email"); + $form = $crawler->selectButton('Submit')->form([ + 'config[board_email_form]' => 1, + ]); + $crawler = self::submit($form); + $this->assertContainsLang('CONFIG_UPDATED', $crawler->filter('.successbox')->text()); + + $crawler = self::request('GET', 'memberlist.php?mode=email&u=2'); + $this->assertStringContainsString($this->lang('SEND_EMAIL_USER', 'admin'), $crawler->filter('.titlespace')->text()); + + $form = $crawler->selectButton($this->lang('SEND_EMAIL'))->form([ + 'subject' => 'Test email form message', + 'message' => 'This is a test email message sent from a member profile email form.', + ]); + $crawler = self::submit($form); + + $this->assertContainsLang('EMAIL_SENT', $crawler->text()); + } } From cebc19f2ed201a11078ca538dc377be868e580c0 Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 3 Apr 2025 22:15:37 +0700 Subject: [PATCH 7/9] [ticket/17487] Add wrapper method to add headers to interface PHPBB-17487 --- phpBB/phpbb/message/message.php | 8 ++++---- phpBB/phpbb/messenger/method/base.php | 8 ++++++++ phpBB/phpbb/messenger/method/email.php | 20 +++++++++++++------ .../messenger/method/messenger_interface.php | 11 ++++++++++ 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/phpBB/phpbb/message/message.php b/phpBB/phpbb/message/message.php index ea6da8419a..1248e3b39d 100644 --- a/phpBB/phpbb/message/message.php +++ b/phpBB/phpbb/message/message.php @@ -265,16 +265,16 @@ class message if (isset($messenger_method->headers) && $messenger_method->headers instanceof \Symfony\Component\Mime\Header\Headers) { - $messenger_method->headers->addHeader('X-AntiAbuse', 'Board servername - ' . $this->server_name); - $messenger_method->headers->addHeader('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->addHeader('X-AntiAbuse', 'User_id - ' . $this->sender_id); + $messenger_method->header('X-AntiAbuse', 'User_id - ' . $this->sender_id); } if ($this->sender_username) { - $messenger_method->headers->addHeader('X-AntiAbuse', 'Username - ' . $this->sender_username); + $messenger_method->header('X-AntiAbuse', 'Username - ' . $this->sender_username); } } diff --git a/phpBB/phpbb/messenger/method/base.php b/phpBB/phpbb/messenger/method/base.php index 46d676013c..c0c2a94d0d 100644 --- a/phpBB/phpbb/messenger/method/base.php +++ b/phpBB/phpbb/messenger/method/base.php @@ -481,4 +481,12 @@ abstract class base implements messenger_interface $this->setup_template(); $this->template->set_custom_style($path_name, $paths); } + + /** + * {@inheritdoc} + */ + public function header(string $header_name, mixed $header_value): void + { + return; + } } diff --git a/phpBB/phpbb/messenger/method/email.php b/phpBB/phpbb/messenger/method/email.php index 78059174b3..87ad9114c1 100644 --- a/phpBB/phpbb/messenger/method/email.php +++ b/phpBB/phpbb/messenger/method/email.php @@ -47,7 +47,7 @@ class email extends base protected $from; /** @var Headers */ - public $headers; + protected $headers; /** * @var int @@ -242,10 +242,10 @@ class email extends base */ public function anti_abuse_headers(\phpbb\config\config $config, \phpbb\user $user): void { - $this->headers->addHeader('X-AntiAbuse', 'Board servername - ' . $config['server_name']); - $this->headers->addHeader('X-AntiAbuse', 'User_id - ' . $user->data['user_id']); - $this->headers->addHeader('X-AntiAbuse', 'Username - ' . $user->data['username']); - $this->headers->addHeader('X-AntiAbuse', 'User IP - ' . $user->ip); + $this->header('X-AntiAbuse', 'Board servername - ' . $config['server_name']); + $this->header('X-AntiAbuse', 'User_id - ' . $user->data['user_id']); + $this->header('X-AntiAbuse', 'Username - ' . $user->data['username']); + $this->header('X-AntiAbuse', 'User IP - ' . $user->ip); } /** @@ -313,7 +313,7 @@ class email extends base foreach ($headers as $header => $value) { - $this->headers->addHeader($header, $value); + $this->header($header, $value); } } @@ -576,4 +576,12 @@ class email extends base return true; } + + /** + * {@inheritdoc} + */ + public function header(string $header_name, mixed $header_value): void + { + $this->headers->addHeader($header_name, $header_value); + } } diff --git a/phpBB/phpbb/messenger/method/messenger_interface.php b/phpBB/phpbb/messenger/method/messenger_interface.php index b733f3d3d4..6d82f89b6f 100644 --- a/phpBB/phpbb/messenger/method/messenger_interface.php +++ b/phpBB/phpbb/messenger/method/messenger_interface.php @@ -64,5 +64,16 @@ interface messenger_interface * * @return void */ + public function error(string $msg): void; + + /** + * Add message header + * + * @param string $header_name Message header name + * @param mixed $header_value Message header value + * + * @return void + */ + public function header(string $header_name, mixed $header_value): void; } From f9e6385e84e6f8102b347eade20fd9595c545366 Mon Sep 17 00:00:00 2001 From: rxu Date: Fri, 4 Apr 2025 00:04:45 +0700 Subject: [PATCH 8/9] [ticket/17489] Further queue logic adjustments Saving queue is not needed if use_queue flag is set to false as in this case the message should be set immediately in the runtime. PHPBB-17487 PHPBB-17489 --- phpBB/includes/acp/acp_email.php | 13 +------------ phpBB/includes/acp/acp_inactive.php | 10 +--------- phpBB/includes/ucp/ucp_resend.php | 3 --- 3 files changed, 2 insertions(+), 24 deletions(-) diff --git a/phpBB/includes/acp/acp_email.php b/phpBB/includes/acp/acp_email.php index 591700f66d..dfe58eb318 100644 --- a/phpBB/includes/acp/acp_email.php +++ b/phpBB/includes/acp/acp_email.php @@ -269,23 +269,12 @@ class acp_email } $errored = !$messenger_method->send() || $errored; + $messenger_method->save_queue(); } } } unset($email_list); - if ($use_queue) - { - /** - * @var \phpbb\messenger\method\messenger_interface $messenger_method - * @psalm-suppress UndefinedMethod - */ - foreach ($messenger_collection_iterator as $messenger_method) - { - $messenger_method->save_queue(); - } - } - if ($generate_log_entry) { if (!empty($usernames)) diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index 935df27c14..e1a511852b 100644 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -223,6 +223,7 @@ class acp_inactive ]); $messenger_method->send(); + $messenger_method->save_queue(); } } @@ -231,15 +232,6 @@ class acp_inactive } while ($row = $db->sql_fetchrow($result)); - /** - * @var \phpbb\messenger\method\messenger_interface $messenger_method - * @psalm-suppress UndefinedMethod - */ - foreach ($messenger_collection_iterator as $messenger_method) - { - $messenger_method->save_queue(); - } - // Add the remind state to the database and increase activation expiration by one day $sql = 'UPDATE ' . USERS_TABLE . ' SET user_reminded = user_reminded + 1, diff --git a/phpBB/includes/ucp/ucp_resend.php b/phpBB/includes/ucp/ucp_resend.php index 4ae14e0ba8..43e26567e5 100644 --- a/phpBB/includes/ucp/ucp_resend.php +++ b/phpBB/includes/ucp/ucp_resend.php @@ -157,9 +157,6 @@ class ucp_resend ]); $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(); } } } From 43d34880ac55c737e38d7b532b0558841da7b8fd Mon Sep 17 00:00:00 2001 From: rxu Date: Fri, 4 Apr 2025 00:50:15 +0700 Subject: [PATCH 9/9] [ticket/17489] Remove unneeded headers check PHPBB-17487 PHPBB-17489 --- phpBB/phpbb/message/message.php | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/phpBB/phpbb/message/message.php b/phpBB/phpbb/message/message.php index 1248e3b39d..900ef103c5 100644 --- a/phpBB/phpbb/message/message.php +++ b/phpBB/phpbb/message/message.php @@ -263,19 +263,16 @@ class message $messenger_method->set_addresses($recipient); $messenger_method->reply_to($this->sender_address); - if (isset($messenger_method->headers) && $messenger_method->headers instanceof \Symfony\Component\Mime\Header\Headers) + $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->header('X-AntiAbuse', 'Board servername - ' . $this->server_name); - $messenger_method->header('X-AntiAbuse', 'User IP - ' . $this->sender_ip); - if ($this->sender_id) - { - $messenger_method->header('X-AntiAbuse', 'User_id - ' . $this->sender_id); - } + $messenger_method->header('X-AntiAbuse', 'User_id - ' . $this->sender_id); + } - if ($this->sender_username) - { - $messenger_method->header('X-AntiAbuse', 'Username - ' . $this->sender_username); - } + if ($this->sender_username) + { + $messenger_method->header('X-AntiAbuse', 'Username - ' . $this->sender_username); } $messenger_method->subject(html_entity_decode($this->subject, ENT_COMPAT));