Fix for r45512: cache the result of LanguageGetLocalizedLanguageNames hook so that...
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Wed, 7 Jan 2009 20:20:16 +0000 (20:20 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Wed, 7 Jan 2009 20:20:16 +0000 (20:20 +0000)
languages/Language.php

index eaec2b6..dae3952 100644 (file)
@@ -55,6 +55,7 @@ class FakeConverter {
 class Language {
        var $mConverter, $mVariants, $mCode, $mLoaded = false;
        var $mMagicExtensions = array(), $mMagicHookDone = false;
+       var $mLocalizedLanguagesNames = null;
 
        static public $mLocalisationKeys = array(
                'fallback', 'namespaceNames', 'mathNames', 'bookstoreList',
@@ -409,6 +410,19 @@ class Language {
                return $names;
        }
 
+       /**
+        * Get localized language names
+        *
+        * @return array
+        */
+       function getLocalizedLanguageNames() {
+               if( !is_array( $this->mLocalizedLanguagesNames ) ) {
+                       $this->mLocalizedLanguagesNames = array();
+                       wfRunHooks( 'LanguageGetLocalizedLanguageNames', array( &$this->mLocalizedLanguagesNames, $this->getCode() ) );
+               }
+               return $this->mLocalizedLanguagesNames;
+       }
+
        /**
         * Get a message from the MediaWiki namespace.
         *
@@ -431,8 +445,7 @@ class Language {
                        return '';
                }
                if( $localized ) {
-                       $languageNames = array();
-                       wfRunHooks( 'LanguageGetLocalizedLanguageNames', array( &$languageNames, $this->getCode() ) );
+                       $languageNames = $this->getLocalizedLanguageNames();
                        return isset( $languageNames[$code] ) ? $languageNames[$code] : $names[$code];
                } else {
                        return $names[$code];