diff options
Diffstat (limited to 'phpBB/includes/message_parser.php')
| -rw-r--r-- | phpBB/includes/message_parser.php | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 6d3907880e..da27d8900d 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) === '') @@ -1341,7 +1350,7 @@ class parse_message extends bbcode_firstpass  			// NOTE: obtain_* function? chaching the table contents?  			// For now setting the ttl to 10 minutes -			switch ($db->sql_layer) +			switch ($db->get_sql_layer())  			{  				case 'mssql':  				case 'mssql_odbc': @@ -1351,12 +1360,6 @@ class parse_message extends bbcode_firstpass  						ORDER BY LEN(code) DESC';  				break; -				case 'firebird': -					$sql = 'SELECT * -						FROM ' . SMILIES_TABLE . ' -						ORDER BY CHAR_LENGTH(code) DESC'; -				break; -  				// LENGTH supported by MySQL, IBM DB2, Oracle and Access for sure...  				default:  					$sql = 'SELECT *  | 
