* Wont work
[lhc/web/wiklou.git] / includes / MessageCache.php
index f828a31..d133885 100644 (file)
@@ -23,6 +23,7 @@ class MessageCache {
        var $mExtensionMessages = array();
        var $mInitialised = false;
        var $mDeferred = true;
+       var $mAllMessagesLoaded;
 
        function __construct( &$memCached, $useDB, $expiry, $memcPrefix) {
                wfProfileIn( __METHOD__ );
@@ -575,7 +576,7 @@ class MessageCache {
                return $message;
        }
 
-       function transform( $message ) {
+       function transform( $message, $interface = false ) {
                global $wgParser;
                if ( !$this->mParser && isset( $wgParser ) ) {
                        # Do some initialisation so that we don't have to do it twice
@@ -585,7 +586,10 @@ class MessageCache {
                }
                if ( !$this->mDisableTransform && $this->mParser ) {
                        if( strpos( $message, '{{' ) !== false ) {
-                               $message = $this->mParser->transformMsg( $message, $this->getParserOptions() );
+                               $popts = $this->getParserOptions();
+                               if ( $interface ) { $popts->setInterfaceMessage(true); }
+                               $message = $this->mParser->transformMsg( $message, $popts );
+                               if ( $interface ) { $popts->setInterfaceMessage(false); }
                        }
                }
                return $message;
@@ -627,7 +631,6 @@ class MessageCache {
 
        /**
         * Add a 2-D array of messages by lang. Useful for extensions.
-        * Introduced in 1.9. Please do not use it for now, for backwards compatibility.
         *
         * @param array $messages The array to be added
         */
@@ -670,12 +673,41 @@ class MessageCache {
                }
        }
 
-       static function loadAllMessages() {
+       function loadAllMessages() {
+               global $wgExtensionMessagesFiles;
+               if ( $this->mAllMessagesLoaded ) {
+                       return;
+               }
+               $this->mAllMessagesLoaded = true;
+
                # Some extensions will load their messages when you load their class file
                wfLoadAllExtensions();
                # Others will respond to this hook
                wfRunHooks( 'LoadAllMessages' );
+               # Some register their messages in $wgExtensionMessagesFiles
+               foreach ( $wgExtensionMessagesFiles as $name => $file ) {
+                       if ( $file ) {
+                               $this->loadMessagesFile( $file );
+                               $wgExtensionMessagesFiles[$name] = false;
+                       }
+               }
                # Still others will respond to neither, they are EVIL. We sometimes need to know!
        }
-}
 
+       /**
+        * Load messages from a given file
+        */
+       function loadMessagesFile( $filename ) {
+               $messages = $magicWords = false;
+               require( $filename );
+
+               if ( $messages !== false ) {
+                       $this->addMessagesByLang( $messages );
+               }
+
+               if ( $magicWords !== false ) {
+                       global $wgContLang;
+                       $wgContLang->addMagicWordsByLang( $magicWords );
+               }
+       }
+}