diff --git a/phpBB/config/default/container/services_ban.yml b/phpBB/config/default/container/services_ban.yml
index 437911734a..cc34d4532c 100644
--- a/phpBB/config/default/container/services_ban.yml
+++ b/phpBB/config/default/container/services_ban.yml
@@ -6,6 +6,7 @@ services:
- '@ban.type_collection'
- '@cache.driver'
- '@dbal.conn'
+ - '@language'
- '@user'
- '%tables.bans%'
- '%tables.users%'
diff --git a/phpBB/phpbb/ban/manager.php b/phpBB/phpbb/ban/manager.php
index 3fed881bf4..3303f23a25 100644
--- a/phpBB/phpbb/ban/manager.php
+++ b/phpBB/phpbb/ban/manager.php
@@ -19,6 +19,7 @@ use phpbb\ban\type\type_interface;
use phpbb\cache\driver\driver_interface as cache_driver;
use phpbb\db\driver\driver_interface;
use phpbb\di\service_collection;
+use phpbb\language\language;
use phpbb\user;
class manager
@@ -39,6 +40,9 @@ class manager
/** @var service_collection */
protected $types;
+ /** @var language */
+ protected $language;
+
/** @var user */
protected $user;
@@ -56,12 +60,14 @@ class manager
* @param string $bans_table The bans table
* @param string $users_table The users table
*/
- public function __construct(service_collection $types, cache_driver $cache, driver_interface $db, user $user, string $bans_table, string $users_table = '')
+ public function __construct(service_collection $types, cache_driver $cache, driver_interface $db,
+ language $language, user $user, string $bans_table, string $users_table = '')
{
$this->bans_table = $bans_table;
$this->cache = $cache;
$this->db = $db;
$this->types = $types;
+ $this->language = $language;
$this->user = $user;
$this->users_table = $users_table;
}
@@ -491,4 +497,25 @@ class manager
return $ban_info;
}
+
+ /**
+ * Get ban info message
+ *
+ * @param array $ban_row Ban data row from database
+ * @param string $ban_triggered_by Ban triggered by; allowed 'user', 'ip', 'email
+ * @param string $contact_link Contact link URL
+ *
+ * @return string Ban message
+ */
+ public function get_ban_message(array $ban_row, string $ban_triggered_by, string $contact_link): string
+ {
+ $till_date = ($ban_row && $ban_row['end'] > 0) ? $this->user->format_date($ban_row['end']) : '';
+
+ $ban_type = $ban_row['ban_end'] ? 'BOARD_BAN_TIME' : 'BOARD_BAN_PERM';
+ $message = $this->language->lang($ban_type, $till_date, '', '');
+ $message .= $ban_row['reason'] ? '
' . $this->language->lang('BOARD_BAN_REASON', $ban_row['reason']) : '';
+ $message .= '
' . $this->language->lang('BAN_TRIGGERED_BY_' . strtoupper($ban_triggered_by)) . '';
+
+ return $message;
+ }
}
diff --git a/phpBB/phpbb/ban/type/base.php b/phpBB/phpbb/ban/type/base.php
index 84b9502dc1..0419ebf380 100644
--- a/phpBB/phpbb/ban/type/base.php
+++ b/phpBB/phpbb/ban/type/base.php
@@ -115,7 +115,7 @@ abstract class base implements type_interface
WHERE (ban_end >= ' . time() . "
OR ban_end = 0)
AND ban_mode = '{$this->get_type()}'
- ORDER BY ban_item, ban_id";
+ ORDER BY ban_item ASC, ban_id ASC";
$result = $this->db->sql_query($sql);
$rowset = $this->db->sql_fetchrowset($result);
$this->db->sql_freeresult($result);
diff --git a/phpBB/phpbb/ban/type/user.php b/phpBB/phpbb/ban/type/user.php
index 0971cf4cf4..66c3f3f4de 100644
--- a/phpBB/phpbb/ban/type/user.php
+++ b/phpBB/phpbb/ban/type/user.php
@@ -80,7 +80,7 @@ class user extends base
OR b.ban_end = 0)
AND b.ban_userid = u.user_id
AND b.ban_mode = '{$this->get_type()}'
- ORDER BY username_clean";
+ ORDER BY username_clean ASC";
$result = $this->db->sql_query($sql);
while ($row = $this->db->sql_fetchrow($result))
{
diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php
index e9011ae304..bdb0ad58a5 100644
--- a/phpBB/phpbb/session.php
+++ b/phpBB/phpbb/session.php
@@ -1204,13 +1204,8 @@ class session
}
// Determine which message to output
- $till_date = ($ban_row && $ban_row['end'] > 0) ? $this->format_date($ban_row['end']) : '';
- $message = $this->get_ban_message($ban_row, $ban_triggered_by);
-
$contact_link = phpbb_get_board_contact_link($config, $phpbb_root_path, $phpEx);
- $message = sprintf($this->lang[$message], $till_date, '', '');
- $message .= ($ban_row['reason']) ? '
' . sprintf($this->lang['BOARD_BAN_REASON'], $ban_row['reason']) : '';
- $message .= '
' . $this->lang['BAN_TRIGGERED_BY_' . strtoupper($ban_triggered_by)] . '';
+ $message = $ban_manager->get_ban_message($ban_row, $ban_triggered_by, $contact_link);
// A very special case... we are within the cron script which is not supposed to print out the ban message... show blank page
if (defined('IN_CRON'))
@@ -1254,19 +1249,6 @@ class session
}
}
- /**
- * Get ban info message
- *
- * @param array $ban_row Ban data row from database
- * @param string $ban_triggered_by Ban triggered by; allowed 'user', 'ip', 'email'
- *
- * @return string
- */
- protected function get_ban_message(array $ban_row, string $ban_triggered_by): string
- {
- return ($ban_row['ban_end']) ? 'BOARD_BAN_TIME' : 'BOARD_BAN_PERM';
- }
-
/**
* Check if ip is blacklisted by Spamhaus SBL
*
diff --git a/tests/ban/ban_manager_test.php b/tests/ban/ban_manager_test.php
index 4034ad7966..12f836fa65 100644
--- a/tests/ban/ban_manager_test.php
+++ b/tests/ban/ban_manager_test.php
@@ -48,7 +48,7 @@ class ban_manager_test extends \phpbb_session_test_case
$collection->add('ban.type.user');
$collection->add('ban.type.ip');
- $this->ban_manager = new \phpbb\ban\manager($collection, new \phpbb\cache\driver\dummy(), $this->db, $user, 'phpbb_bans', 'phpbb_users');
+ $this->ban_manager = new \phpbb\ban\manager($collection, new \phpbb\cache\driver\dummy(), $this->db, $language, $user, 'phpbb_bans', 'phpbb_users');
$phpbb_container->set('ban.manager', $this->ban_manager);
$this->phpbb_container = $phpbb_container;
}
@@ -225,9 +225,9 @@ class ban_manager_test extends \phpbb_session_test_case
'email',
[
[
- 'ban_id' => '5',
+ 'ban_id' => '9',
'ban_userid' => 0,
- 'ban_item' => 'bar@example.org',
+ 'ban_item' => '*@foo.bar',
'ban_start' => '1111',
'ban_end' => '0',
'ban_reason' => 'HAHAHA',
@@ -235,9 +235,9 @@ class ban_manager_test extends \phpbb_session_test_case
'ban_mode' => 'email',
],
[
- 'ban_id' => '9',
+ 'ban_id' => '5',
'ban_userid' => 0,
- 'ban_item' => '*@foo.bar',
+ 'ban_item' => 'bar@example.org',
'ban_start' => '1111',
'ban_end' => '0',
'ban_reason' => 'HAHAHA',
@@ -377,10 +377,7 @@ class ban_manager_test extends \phpbb_session_test_case
$language = new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx));
$user = new \phpbb\user($language, '\phpbb\datetime');
- $config = new \phpbb\config\config([]);
- $phpbb_dispatcher = new \phpbb_mock_event_dispatcher();
-
- $ban_manager = new \phpbb\ban\manager($collection, new \phpbb\cache\driver\dummy(), $this->db, $user, 'phpbb_bans', 'phpbb_users');
+ $ban_manager = new \phpbb\ban\manager($collection, new \phpbb\cache\driver\dummy(), $this->db, $language, $user, 'phpbb_bans', 'phpbb_users');
$this->assertEquals(
[
@@ -422,10 +419,7 @@ class ban_manager_test extends \phpbb_session_test_case
$language = new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx));
$user = new \phpbb\user($language, '\phpbb\datetime');
- $config = new \phpbb\config\config([]);
- $phpbb_dispatcher = new \phpbb_mock_event_dispatcher();
-
- $ban_manager = new \phpbb\ban\manager($collection, new \phpbb\cache\driver\dummy(), $this->db, $user, 'phpbb_bans', 'phpbb_users');
+ $ban_manager = new \phpbb\ban\manager($collection, new \phpbb\cache\driver\dummy(), $this->db, $language, $user, 'phpbb_bans', 'phpbb_users');
$start_time = new \DateTime();
$start_time->setTimestamp(1000);
diff --git a/tests/functions/validate_user_email_test.php b/tests/functions/validate_user_email_test.php
index ec19b0313f..c698f1263f 100644
--- a/tests/functions/validate_user_email_test.php
+++ b/tests/functions/validate_user_email_test.php
@@ -62,7 +62,7 @@ class phpbb_functions_validate_user_email_test extends phpbb_database_test_case
$collection->add('ban.type.user');
$collection->add('ban.type.ip');
- $ban_manager = new \phpbb\ban\manager($collection, $cache->get_driver(), $this->db, $this->user, 'phpbb_bans', 'phpbb_users');
+ $ban_manager = new \phpbb\ban\manager($collection, $cache->get_driver(), $this->db, $language, $this->user, 'phpbb_bans', 'phpbb_users');
$phpbb_container->set('ban.manager', $ban_manager);
}
diff --git a/tests/session/check_ban_test.php b/tests/session/check_ban_test.php
index 74f2e64786..9dcb148f2b 100644
--- a/tests/session/check_ban_test.php
+++ b/tests/session/check_ban_test.php
@@ -87,7 +87,7 @@ class phpbb_session_check_ban_test extends phpbb_session_test_case
$collection->add('ban.type.user');
$collection->add('ban.type.ip');
- $ban_manager = new \phpbb\ban\manager($collection, $cache->get_driver(), $this->db, $user, 'phpbb_bans', 'phpbb_users');
+ $ban_manager = new \phpbb\ban\manager($collection, $cache->get_driver(), $this->db, $language, $user, 'phpbb_bans', 'phpbb_users');
$phpbb_container->set('ban.manager', $ban_manager);
}
diff --git a/tests/session/testable_factory.php b/tests/session/testable_factory.php
index 7b1980872b..ea057674a4 100644
--- a/tests/session/testable_factory.php
+++ b/tests/session/testable_factory.php
@@ -121,7 +121,7 @@ class phpbb_session_testable_factory
$collection->add('ban.type.user');
$collection->add('ban.type.ip');
- $ban_manager = new \phpbb\ban\manager($collection, $cache, $db, $user,'phpbb_bans', 'phpbb_users');
+ $ban_manager = new \phpbb\ban\manager($collection, $cache, $db, $language, $user,'phpbb_bans', 'phpbb_users');
$phpbb_container->set('ban.manager', $ban_manager);
$session = new phpbb_mock_session_testable;