diff --git a/phpBB/config/default/container/services_profilefield.yml b/phpBB/config/default/container/services_profilefield.yml index c0ef5ec7e4..ebbd3fbf8e 100644 --- a/phpBB/config/default/container/services_profilefield.yml +++ b/phpBB/config/default/container/services_profilefield.yml @@ -82,7 +82,6 @@ services: profilefields.type.string: class: phpbb\profilefields\type\type_string arguments: - - '@auth' - '@request' - '@template' - '@user' @@ -92,7 +91,6 @@ services: profilefields.type.text: class: phpbb\profilefields\type\type_text arguments: - - '@auth' - '@request' - '@template' - '@user' @@ -102,7 +100,6 @@ services: profilefields.type.url: class: phpbb\profilefields\type\type_url arguments: - - '@auth' - '@request' - '@template' - '@user' diff --git a/phpBB/language/en/acp/permissions_phpbb.php b/phpBB/language/en/acp/permissions_phpbb.php index 27c4c7e9ef..ab8939932b 100644 --- a/phpBB/language/en/acp/permissions_phpbb.php +++ b/phpBB/language/en/acp/permissions_phpbb.php @@ -79,7 +79,7 @@ $lang = array_merge($lang, array( 'ACL_U_SAVEDRAFTS' => 'Can save drafts', 'ACL_U_CHGCENSORS' => 'Can disable word censors', 'ACL_U_SIG' => 'Can use signature', - 'ACL_U_EMOJI' => 'Can use emoji and rich text characters in topic title
This setting also affects profile fields.', + 'ACL_U_EMOJI' => 'Can use emoji and rich text characters in topic title', 'ACL_U_SENDPM' => 'Can send private messages', 'ACL_U_MASSPM' => 'Can send private messages to multiple users', diff --git a/phpBB/phpbb/profilefields/manager.php b/phpBB/phpbb/profilefields/manager.php index 5784a1212a..8af2fe12ad 100644 --- a/phpBB/phpbb/profilefields/manager.php +++ b/phpBB/phpbb/profilefields/manager.php @@ -256,14 +256,10 @@ class manager $cp_data['pf_' . $row['field_ident']] = $profile_field->get_profile_field($row); /** - * Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL with UCR/NCR - * using their Numeric Character Reference's Hexadecimal notation. - * Check the permissions for using Emojis first. + * Replace Emoji and other 4bit UTF-8 chars not allowed by MySQL + * with their Numeric Character Reference's Hexadecimal notation. */ - if ($this->auth->acl_get('u_emoji')) - { - $cp_data['pf_' . $row['field_ident']] = utf8_encode_ucr($cp_data['pf_' . $row['field_ident']]); - } + $cp_data['pf_' . $row['field_ident']] = utf8_encode_ucr($cp_data['pf_' . $row['field_ident']]); $check_value = $cp_data['pf_' . $row['field_ident']]; diff --git a/phpBB/phpbb/profilefields/type/type_string.php b/phpBB/phpbb/profilefields/type/type_string.php index 382f66c12a..8710c8c603 100644 --- a/phpBB/phpbb/profilefields/type/type_string.php +++ b/phpBB/phpbb/profilefields/type/type_string.php @@ -15,12 +15,6 @@ namespace phpbb\profilefields\type; class type_string extends type_string_common { - /** - * Auth object - * @var \phpbb\auth\auth - */ - protected $auth; - /** * Request object * @var \phpbb\request\request @@ -42,14 +36,12 @@ class type_string extends type_string_common /** * Construct * - * @param \phpbb\auth\auth $auth Auth object * @param \phpbb\request\request $request Request object * @param \phpbb\template\template $template Template object * @param \phpbb\user $user User object */ - public function __construct(\phpbb\auth\auth $auth, \phpbb\request\request $request, \phpbb\template\template $template, \phpbb\user $user) + public function __construct(\phpbb\request\request $request, \phpbb\template\template $template, \phpbb\user $user) { - $this->auth = $auth; $this->request = $request; $this->template = $template; $this->user = $user; @@ -107,17 +99,6 @@ class type_string extends type_string_common */ public function validate_profile_field(&$field_value, $field_data) { - /** - * Check for out-of-bounds characters that are currently - * not supported by utf8_bin in MySQL if Emoji are not allowed - */ - if (!$this->auth->acl_get('u_emoji')) - { - if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $field_value)) - { - return $this->user->lang('FIELD_INVALID_CHARS_INVALID', $this->get_field_name($field_data['lang_name'])); - } - } return $this->validate_string_profile_field('string', $field_value, $field_data); } diff --git a/phpBB/phpbb/profilefields/type/type_text.php b/phpBB/phpbb/profilefields/type/type_text.php index 3b58d6b3e5..79ee82351a 100644 --- a/phpBB/phpbb/profilefields/type/type_text.php +++ b/phpBB/phpbb/profilefields/type/type_text.php @@ -15,12 +15,6 @@ namespace phpbb\profilefields\type; class type_text extends type_string_common { - /** - * Auth object - * @var \phpbb\auth\auth - */ - protected $auth; - /** * Request object * @var \phpbb\request\request @@ -42,14 +36,12 @@ class type_text extends type_string_common /** * Construct * - * @param \phpbb\auth\auth $auth Auth object * @param \phpbb\request\request $request Request object * @param \phpbb\template\template $template Template object * @param \phpbb\user $user User object */ - public function __construct(\phpbb\auth\auth $auth, \phpbb\request\request $request, \phpbb\template\template $template, \phpbb\user $user) + public function __construct(\phpbb\request\request $request, \phpbb\template\template $template, \phpbb\user $user) { - $this->auth = $auth; $this->request = $request; $this->template = $template; $this->user = $user; @@ -107,17 +99,6 @@ class type_text extends type_string_common */ public function validate_profile_field(&$field_value, $field_data) { - /** - * Check for out-of-bounds characters that are currently - * not supported by utf8_bin in MySQL if Emoji are not allowed - */ - if (!$this->auth->acl_get('u_emoji')) - { - if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $field_value)) - { - return $this->user->lang('FIELD_INVALID_CHARS_INVALID', $this->get_field_name($field_data['lang_name'])); - } - } return $this->validate_string_profile_field('text', $field_value, $field_data); } diff --git a/tests/functional/ucp_profile_test.php b/tests/functional/ucp_profile_test.php index c9f335a052..60e455e980 100644 --- a/tests/functional/ucp_profile_test.php +++ b/tests/functional/ucp_profile_test.php @@ -47,7 +47,7 @@ class phpbb_functional_ucp_profile_test extends phpbb_functional_test_case $this->assertEquals('phpbb.youtube', $form->get('pf_phpbb_youtube')->getValue()); } - public function test_submitting_emoji_allowed() + public function test_submitting_emoji() { $this->add_lang('ucp'); $this->login(); @@ -65,70 +65,4 @@ class phpbb_functional_ucp_profile_test extends phpbb_functional_test_case $form = $crawler->selectButton('Submit')->form(); $this->assertEquals('😁', $form->get('pf_phpbb_location')->getValue()); } - - public function test_submitting_emoji_disallowed() - { - $this->add_lang(['ucp', 'acp/permissions']); - $this->login(); - $this->admin_login(); - - // Group global permissions - $crawler = self::request('GET', 'adm/index.php?i=acp_permissions&icat=16&mode=setting_group_global&sid=' . $this->sid); - $this->assertContainsLang('ACP_GROUPS_PERMISSIONS_EXPLAIN', $this->get_content()); - - // Select Registered users group - $form = $crawler->selectButton($this->lang('SUBMIT'))->form(['group_id' => [2]]); - $crawler = self::submit($form); - $this->assertContainsLang('ACL_SET', $crawler->filter('h1')->eq(1)->text()); - - // Globals for \phpbb\auth\auth - global $db, $cache; - $db = $this->get_db(); - $cache = new phpbb_mock_null_cache; - - $auth = new \phpbb\auth\auth; - // Hardcoded user_id - $user_data = $auth->obtain_user_data(2); - $auth->acl($user_data); - $this->assertEquals(1, $auth->acl_get('u_emoji')); - - // Set u_emoji to never - $form = $crawler->selectButton($this->lang('APPLY_PERMISSIONS'))->form(['setting[2][0][u_emoji]' => '0']); - $crawler = self::submit($form); - $this->assertContainsLang('AUTH_UPDATED', $crawler->text()); - - // check acl again - $auth = new \phpbb\auth\auth; - $user_data = $auth->obtain_user_data(2); - $auth->acl($user_data); - $this->assertEquals(0, $auth->acl_get('u_emoji')); - - $crawler = self::request('GET', 'ucp.php?i=ucp_profile&mode=profile_info'); - $this->assertContainsLang('UCP_PROFILE_PROFILE_INFO', $crawler->filter('#cp-main h2')->text()); - - $form = $crawler->selectButton('Submit')->form([ - 'pf_phpbb_location' => '😁', // grinning face with smiling eyes Emoji - ]); - - $crawler = self::submit($form); - $this->assertContains('The field “Location” has invalid characters.', $crawler->filter('p[class="error"]')->text()); - - // Set u_emoji back to Yes - $crawler = self::request('GET', 'adm/index.php?i=acp_permissions&icat=16&mode=setting_group_global&sid=' . $this->sid); - $this->assertContainsLang('ACP_GROUPS_PERMISSIONS_EXPLAIN', $this->get_content()); - // Select Registered users group - $form = $crawler->selectButton($this->lang('SUBMIT'))->form(['group_id' => [2]]); - $crawler = self::submit($form); - $this->assertContainsLang('ACL_SET', $crawler->filter('h1')->eq(1)->text()); - // Set u_emoji to never - $form = $crawler->selectButton($this->lang('APPLY_PERMISSIONS'))->form(["setting[2][0][u_emoji]" => '1']); - $crawler = self::submit($form); - $this->assertContainsLang('AUTH_UPDATED', $crawler->text()); - - // check acl again - $auth = new \phpbb\auth\auth; - $user_data = $auth->obtain_user_data(2); - $auth->acl($user_data); - $this->assertEquals(1, $auth->acl_get('u_emoji')); - } } diff --git a/tests/profilefields/type_string_test.php b/tests/profilefields/type_string_test.php index d7ad16895d..54bb406838 100644 --- a/tests/profilefields/type_string_test.php +++ b/tests/profilefields/type_string_test.php @@ -26,7 +26,6 @@ class phpbb_profilefield_type_string_test extends phpbb_test_case { global $config, $request, $user, $cache, $phpbb_root_path, $phpEx; - $auth = new \phpbb\auth\auth(); $user = $this->getMock('\phpbb\user', array(), array( new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx)), '\phpbb\datetime' @@ -41,7 +40,6 @@ class phpbb_profilefield_type_string_test extends phpbb_test_case $template = $this->getMock('\phpbb\template\template'); $this->cp = new \phpbb\profilefields\type\type_string( - $auth, $request, $template, $user diff --git a/tests/profilefields/type_url_test.php b/tests/profilefields/type_url_test.php index f592d1099d..3bb5d52899 100644 --- a/tests/profilefields/type_url_test.php +++ b/tests/profilefields/type_url_test.php @@ -30,7 +30,6 @@ class phpbb_profilefield_type_url_test extends phpbb_test_case { global $config, $request, $user, $cache, $phpbb_root_path, $phpEx; - $auth = new \phpbb\auth\auth(); $config = new \phpbb\config\config([]); $cache = new phpbb_mock_cache; $user = $this->getMock('\phpbb\user', array(), array( @@ -45,7 +44,6 @@ class phpbb_profilefield_type_url_test extends phpbb_test_case $template = $this->getMock('\phpbb\template\template'); $this->cp = new \phpbb\profilefields\type\type_url( - $auth, $request, $template, $user