From: Dylan William Hardison Date: Mon, 15 Jul 2019 04:45:40 +0000 (-0400) Subject: remove pre-utf8mb4 emoji support X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f30f696536ffa0084841bd60178fe7c999ad2b07;p=thirdparty%2Fbugzilla.git remove pre-utf8mb4 emoji support --- diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 535a8651c2..ac549d4044 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -3755,17 +3755,6 @@ sub comments { foreach my $comment (@{$self->{'comments'}}) { $comment->{count} = $count++; $comment->{bug} = $self; - - # XXX - hack for MySQL. Convert [U+....] back into its Unicode - # equivalent for characters above U+FFFF as MySQL older than 5.5.3 - # cannot store them, see Bugzilla::Comment::_check_thetext(). - if ($is_mysql) { - - # Perl 5.13.8 and older complain about non-characters. - no warnings 'utf8'; - $comment->{thetext} - =~ s/\x{FDD0}\[U\+((?:[1-9A-F]|10)[0-9A-F]{4})\]\x{FDD1}/chr(hex $1)/eg; - } } # Some bugs may have no comments when upgrading old installations. diff --git a/Bugzilla/Comment.pm b/Bugzilla/Comment.pm index 3bb9169112..ab50add430 100644 --- a/Bugzilla/Comment.pm +++ b/Bugzilla/Comment.pm @@ -440,20 +440,6 @@ sub _check_thetext { $thetext =~ s/\s*$//s; $thetext =~ s/\r\n?/\n/g; # Get rid of \r. - # Characters above U+FFFF cannot be stored by MySQL older than 5.5.3 as they - # require the new utf8mb4 character set. Other DB servers are handling them - # without any problem. So we need to replace these characters if we use MySQL, - # else the comment is truncated. - # XXX - Once we use utf8mb4 for comments, this hack for MySQL can go away. - state $is_mysql = Bugzilla->dbh->isa('Bugzilla::DB::Mysql') ? 1 : 0; - if ($is_mysql) { - - # Perl 5.13.8 and older complain about non-characters. - no warnings 'utf8'; - $thetext - =~ s/([\x{10000}-\x{10FFFF}])/"\x{FDD0}[" . uc(sprintf('U+%04x', ord($1))) . "]\x{FDD1}"/eg; - } - ThrowUserError('comment_too_long') if length($thetext) > MAX_COMMENT_LENGTH; return $thetext; } diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index ddb3bef627..017e854069 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -1790,7 +1790,6 @@ sub _handle_chart { $field = FIELD_MAP->{$field} || $field; my ($string_value, $orig_value); - state $is_mysql = $dbh->isa('Bugzilla::DB::Mysql') ? 1 : 0; if (ref $value eq 'ARRAY') { @@ -1799,17 +1798,11 @@ sub _handle_chart { @$value = grep { defined $_ and $_ ne '' } @$value; return if !@$value; $orig_value = join(',', @$value); - if ($field eq 'longdesc' && $is_mysql) { - @$value = map { _convert_unicode_characters($_) } @$value; - } $string_value = join(',', @$value); } else { return if $value eq ''; $orig_value = $value; - if ($field eq 'longdesc' && $is_mysql) { - $value = _convert_unicode_characters($value); - } $string_value = $value; } @@ -1870,19 +1863,6 @@ sub _handle_chart { $condition->translated(\%search_args); } -# XXX - This is a hack for MySQL which doesn't understand Unicode characters -# above U+FFFF, see Bugzilla::Comment::_check_thetext(). This hack can go away -# once we require MySQL 5.5.3 and use utf8mb4. -sub _convert_unicode_characters { - my $string = shift; - - # Perl 5.13.8 and older complain about non-characters. - no warnings 'utf8'; - $string - =~ s/([\x{10000}-\x{10FFFF}])/"\x{FDD0}[" . uc(sprintf('U+%04x', ord($1))) . "]\x{FDD1}"/eg; - return $string; -} - ################################## # do_search_function And Helpers # ##################################