Don't bother loading $wikiLowerChars and $wikiUpperChars if the mb_*
authorBrion Vibber <brion@users.mediawiki.org>
Sat, 21 Aug 2004 08:54:52 +0000 (08:54 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Sat, 21 Aug 2004 08:54:52 +0000 (08:54 +0000)
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
languages/LanguageZh.php

index 51ecd49..8b86bd0 100644 (file)
@@ -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 );
                }
        }
 
index 9cdd718..fd04f60 100644 (file)
@@ -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 );
+               }
        }
 }