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