Reverting r16861; incompatible change to message texts, breaks a lot of toggle displa...
[lhc/web/wiklou.git] / includes / MessageCache.php
index 3520b32..9cab222 100644 (file)
@@ -58,14 +58,14 @@ class MessageCache {
         * Try to load the cache from a local file
         */
        function loadFromLocal( $hash ) {
-               global $wgLocalMessageCache, $wgDBname;
+               global $wgLocalMessageCache;
 
                $this->mCache = false;
                if ( $wgLocalMessageCache === false ) {
                        return;
                }
 
-               $filename = "$wgLocalMessageCache/messages-$wgDBname";
+               $filename = "$wgLocalMessageCache/messages-" . wfWikiID();
 
                wfSuppressWarnings();
                $file = fopen( $filename, 'r' );
@@ -78,7 +78,7 @@ class MessageCache {
                $localHash = fread( $file, 32 );
                if ( $hash == $localHash ) {
                        // All good, get the rest of it
-                       $serialized = fread( $file, 1000000 );
+                       $serialized = fread( $file, 10000000 );
                        $this->mCache = unserialize( $serialized );
                }
                fclose( $file );
@@ -88,13 +88,13 @@ class MessageCache {
         * Save the cache to a local file
         */
        function saveToLocal( $serialized, $hash ) {
-               global $wgLocalMessageCache, $wgDBname;
+               global $wgLocalMessageCache;
 
                if ( $wgLocalMessageCache === false ) {
                        return;
                }
 
-               $filename = "$wgLocalMessageCache/messages-$wgDBname";
+               $filename = "$wgLocalMessageCache/messages-" . wfWikiID();
                $oldUmask = umask( 0 );
                wfMkdirParents( $wgLocalMessageCache, 0777 );
                umask( $oldUmask );
@@ -111,12 +111,12 @@ class MessageCache {
        }
 
        function loadFromScript( $hash ) {
-               global $wgLocalMessageCache, $wgDBname;
+               global $wgLocalMessageCache;
                if ( $wgLocalMessageCache === false ) {
                        return;
                }
                
-               $filename = "$wgLocalMessageCache/messages-$wgDBname";
+               $filename = "$wgLocalMessageCache/messages-" . wfWikiID();
                
                wfSuppressWarnings();
                $file = fopen( $filename, 'r' );
@@ -129,16 +129,16 @@ class MessageCache {
                if ($hash!=$localHash) {
                        return;
                }
-               require("$wgLocalMessageCache/messages-$wgDBname");
+               require("$wgLocalMessageCache/messages-" . wfWikiID());
        }
        
        function saveToScript($array, $hash) {
-               global $wgLocalMessageCache, $wgDBname;
+               global $wgLocalMessageCache;
                if ( $wgLocalMessageCache === false ) {
                        return;
                }
 
-               $filename = "$wgLocalMessageCache/messages-$wgDBname";
+               $filename = "$wgLocalMessageCache/messages-" . wfWikiID();
                $oldUmask = umask( 0 );
                wfMkdirParents( $wgLocalMessageCache, 0777 );
                umask( $oldUmask );
@@ -361,11 +361,11 @@ class MessageCache {
        }
 
        function replace( $title, $text ) {
-               global $wgLocalMessageCache, $wgLocalMessageCacheSerialized, $parserMemc, $wgDBname;
+               global $wgLocalMessageCache, $wgLocalMessageCacheSerialized, $parserMemc;
 
                $this->lock();
                $this->load();
-               $parserMemc->delete("$wgDBname:sidebar");
+               $parserMemc->delete(wfMemcKey('sidebar'));
                if ( is_array( $this->mCache ) ) {
                        $this->mCache[$title] = $text;
                        $this->mMemc->set( $this->mMemcKey, $this->mCache, $this->mExpiry );
@@ -594,11 +594,30 @@ class MessageCache {
                wfProfileOut( __METHOD__ );
        }
 
+       /**
+        * Get the extension messages for a specific language
+        *
+        * @param string $lang The messages language, English by default
+        */
+       function getExtensionMessagesFor( $lang = 'en' ) {
+               wfProfileIn( __METHOD__ );
+               $messages = array();
+               foreach( $this->mExtensionMessages as $key => $message ) {
+                       if ( isset( $message[$lang] ) ) {
+                               $messages[$key] = $message[$lang];
+                       } elseif ( isset( $message['en'] ) ) {
+                               $messages[$key] = $message['en'];
+                       }
+               }
+               wfProfileOut( __METHOD__ );
+               return $messages;
+       }
+
        /**
         * Clear all stored messages. Mainly used after a mass rebuild.
         */
        function clear() {
-               global $wgLocalMessageCache, $wgDBname;
+               global $wgLocalMessageCache;
                if( $this->mUseCache ) {
                        # Global cache
                        $this->mMemc->delete( $this->mMemcKey );