diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2014-06-20 10:51:58 +0200 |
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2014-06-20 10:51:58 +0200 |
| commit | b855f5fc6a9cc761c8144ef3d21b8212871f6733 (patch) | |
| tree | 8fb72a060fdbd5f69a56bb148dbb853164b983b9 /phpBB | |
| parent | ccb8fd18e2e20d3f843c713e7c23aeba2227148c (diff) | |
| parent | 5ee7f20f4ee110c2ae0b122e9efbd4fabf669581 (diff) | |
| download | forums-b855f5fc6a9cc761c8144ef3d21b8212871f6733.tar forums-b855f5fc6a9cc761c8144ef3d21b8212871f6733.tar.gz forums-b855f5fc6a9cc761c8144ef3d21b8212871f6733.tar.bz2 forums-b855f5fc6a9cc761c8144ef3d21b8212871f6733.tar.xz forums-b855f5fc6a9cc761c8144ef3d21b8212871f6733.zip | |
Merge pull request #2566 from marc1706/ticket/11711
[ticket/11711] Inform user of unsupported characters while posting
* marc1706/ticket/11711:
[ticket/11711] Improve coding and comments of character check
[ticket/11711] Reduce size of tests and also test topic titles
[ticket/11711] Improve checks for unsupported characters and check subject
[ticket/11711] Inform user of unsupported characters while posting
Diffstat (limited to 'phpBB')
| -rw-r--r-- | phpBB/includes/message_parser.php | 9 | ||||
| -rw-r--r-- | phpBB/language/en/posting.php | 2 | ||||
| -rw-r--r-- | phpBB/posting.php | 8 |
3 files changed, 19 insertions, 0 deletions
diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 6d3907880e..9d95620e0f 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1194,6 +1194,15 @@ class parse_message extends bbcode_firstpass } } + // 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', $this->message, $matches)) + { + $character_list = implode('<br />', $matches[0]); + $this->warn_msg[] = $user->lang('UNSUPPORTED_CHARACTERS_MESSAGE', $character_list); + return $update_this_message ? $this->warn_msg : $return_message; + } + // Check for "empty" message. We do not check here for maximum length, because bbcode, smilies, etc. can add to the length. // The maximum length check happened before any parsings. if ($mode === 'post' && utf8_clean_string($this->message) === '') diff --git a/phpBB/language/en/posting.php b/phpBB/language/en/posting.php index 20377287fd..e8a8643cfd 100644 --- a/phpBB/language/en/posting.php +++ b/phpBB/language/en/posting.php @@ -256,6 +256,8 @@ $lang = array_merge($lang, array( 'UNAUTHORISED_BBCODE' => 'You cannot use certain BBCodes: %s.', 'UNGLOBALISE_EXPLAIN' => 'To switch this topic back from being global to a normal topic, you need to select the forum you wish this topic to be displayed.', + 'UNSUPPORTED_CHARACTERS_MESSAGE' => 'Your message contains the following unsupported characters:<br />%s', + 'UNSUPPORTED_CHARACTERS_SUBJECT' => 'Your subject contains the following unsupported characters:<br />%s', 'UPDATE_COMMENT' => 'Update comment', 'URL_INVALID' => 'The URL you specified is invalid.', 'URL_NOT_FOUND' => 'The file specified could not be found.', diff --git a/phpBB/posting.php b/phpBB/posting.php index 60bb595da6..17eac71bd3 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1028,6 +1028,14 @@ if ($submit || $preview || $refresh) $error[] = $user->lang['EMPTY_SUBJECT']; } + // 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', $post_data['post_subject'], $matches)) + { + $character_list = implode('<br />', $matches[0]); + $error[] = $user->lang('UNSUPPORTED_CHARACTERS_SUBJECT', $character_list); + } + $post_data['poll_last_vote'] = (isset($post_data['poll_last_vote'])) ? $post_data['poll_last_vote'] : 0; if ($post_data['poll_option_text'] && |
