From 0f3dbe1a30fa0ff6abe05bf0cad081a23a1ff131 Mon Sep 17 00:00:00 2001 From: 3D-I <480857+3D-I@users.noreply.github.com> Date: Thu, 2 Jan 2020 20:34:42 +0100 Subject: [ticket/15079] Fix Emoji and rich text in Draft subject PHPBB3-15079 --- phpBB/posting.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/phpBB/posting.php b/phpBB/posting.php index 57b52320a3..48c2d8da6a 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -736,6 +736,29 @@ if ($save && $user->data['is_registered'] && $auth->acl_get('u_savedrafts') && ( $subject = (!$subject && $mode != 'post') ? $post_data['topic_title'] : $subject; $message = $request->variable('message', '', true); + /** + * Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL to UCR/NCR. + * Using their Numeric Character Reference's Hexadecimal notation. + * Check the permissions for posting Emojis first. + */ + if ($auth->acl_get('u_emoji')) + { + $subject = utf8_encode_ucr($subject); + } + else + { + /** + * Check for out-of-bounds characters that are currently + * not supported by utf8_bin in MySQL + */ + if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $subject, $matches)) + { + $character_list = implode('
', $matches[0]); + + trigger_error($user->lang('UNSUPPORTED_CHARACTERS_SUBJECT', $character_list)); + } + } + if ($subject && $message) { if (confirm_box(true)) -- cgit v1.2.3-65-gdbad From 9f033cbf6dbd04553384f969fe0eefc61ab60258 Mon Sep 17 00:00:00 2001 From: 3D-I <480857+3D-I@users.noreply.github.com> Date: Thu, 2 Jan 2020 21:40:36 +0100 Subject: [ticket/15079] Fix Emoji and rich text in Draft subject User can save Emoji in drafts since the topic title is checked on post submission already. Moreover this way the draft can not be lost somehow. PHPBB3-15079 --- phpBB/posting.php | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/phpBB/posting.php b/phpBB/posting.php index 48c2d8da6a..27b75bf56d 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -739,25 +739,8 @@ if ($save && $user->data['is_registered'] && $auth->acl_get('u_savedrafts') && ( /** * Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL to UCR/NCR. * Using their Numeric Character Reference's Hexadecimal notation. - * Check the permissions for posting Emojis first. */ - if ($auth->acl_get('u_emoji')) - { - $subject = utf8_encode_ucr($subject); - } - else - { - /** - * Check for out-of-bounds characters that are currently - * not supported by utf8_bin in MySQL - */ - if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $subject, $matches)) - { - $character_list = implode('
', $matches[0]); - - trigger_error($user->lang('UNSUPPORTED_CHARACTERS_SUBJECT', $character_list)); - } - } + $subject = utf8_encode_ucr($subject); if ($subject && $message) { -- cgit v1.2.3-65-gdbad