From 85558b19f982834ce55616416bdd131d5331590f Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Sat, 21 Aug 2004 08:54:52 +0000 Subject: [PATCH] Don't bother loading $wikiLowerChars and $wikiUpperChars if the mb_* functions are available. This saves about 100kb of precious memory. Also fixed a buglet in the mb_* version of unicode search stripping, and some notices in zh. --- languages/LanguageUtf8.php | 39 ++++++++++++++++++++------------------ languages/LanguageZh.php | 21 +++++++++++++------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/languages/LanguageUtf8.php b/languages/LanguageUtf8.php index 51ecd49fca..8b86bd08fe 100644 --- a/languages/LanguageUtf8.php +++ b/languages/LanguageUtf8.php @@ -7,15 +7,18 @@ $wgOutputEncoding = "UTF-8"; if (function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); -} - -$wikiUpperChars = $wgMemc->get( $key1 = "$wgDBname:utf8:upper" ); -$wikiLowerChars = $wgMemc->get( $key2 = "$wgDBname:utf8:lower" ); - -if(empty( $wikiUpperChars) || empty($wikiLowerChars )) { - require_once( "includes/Utf8Case.php" ); - $wgMemc->set( $key1, $wikiUpperChars ); - $wgMemc->set( $key2, $wikiLowerChars ); +} else { + # Hack our own case conversion routines + + # Loading serialized arrays is faster than parsing code :P + $wikiUpperChars = $wgMemc->get( $key1 = "$wgDBname:utf8:upper" ); + $wikiLowerChars = $wgMemc->get( $key2 = "$wgDBname:utf8:lower" ); + + if(empty( $wikiUpperChars) || empty($wikiLowerChars )) { + require_once( "includes/Utf8Case.php" ); + $wgMemc->set( $key1, $wikiUpperChars ); + $wgMemc->set( $key2, $wikiLowerChars ); + } } # Base stuff useful to all UTF-8 based language files @@ -58,17 +61,17 @@ class LanguageUtf8 extends Language { # all strtolower on stripped output or argument # should be removed and all stripForSearch # methods adjusted to that. - if (function_exists('mb_strtolower')) { + if( function_exists( 'mb_strtolower' ) ) { return preg_replace( - "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "'U8' . bin2hex( $1 )", - mb_strtolower($string) ); + "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", + "'U8' . bin2hex( \"$1\" )", + mb_strtolower( $string ) ); } else { - global $wikiLowerChars; - return preg_replace( - "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "'U8' . bin2hex( strtr( \"\$1\", \$wikiLowerChars ) )", - $string ); + global $wikiLowerChars; + return preg_replace( + "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", + "'U8' . bin2hex( strtr( \"\$1\", \$wikiLowerChars ) )", + $string ); } } diff --git a/languages/LanguageZh.php b/languages/LanguageZh.php index 9cdd718ce3..fd04f60a66 100644 --- a/languages/LanguageZh.php +++ b/languages/LanguageZh.php @@ -1042,8 +1042,8 @@ class LanguageZh extends LanguageUtf8 { function getMessage( $key ) { global $wgAllMessagesZh; - if($msg = $wgAllMessagesZh[$key]) - return $msg; + if( isset( $wgAllMessagesZh[$key] ) ) + return $wgAllMessagesZh[$key]; else return Language::getMessage( $key ); } @@ -1054,11 +1054,18 @@ class LanguageZh extends LanguageUtf8 { # MySQL fulltext index doesn't grok utf-8, so we # need to fold cases and convert to hex # we also separate characters as "words" - global $wikiLowerChars; - return preg_replace( - "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", - "' U8' . bin2hex( strtr( \"\$1\", \$wikiLowerChars ) )", - $string ); + if( function_exists( 'mb_strtolower' ) ) { + return preg_replace( + "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", + "' U8' . bin2hex( \"$1\" )", + mb_strtolower( $string ) ); + } else { + global $wikiLowerChars; + return preg_replace( + "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", + "' U8' . bin2hex( strtr( \"\$1\", \$wikiLowerChars ) )", + $string ); + } } } -- 2.20.1