For custom messages, fall back to the default language's db messages
authorBrion Vibber <brion@users.mediawiki.org>
Sun, 13 Mar 2005 11:50:54 +0000 (11:50 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Sun, 13 Mar 2005 11:50:54 +0000 (11:50 +0000)
includes/MessageCache.php

index b260f4c..f97e73c 100755 (executable)
@@ -242,39 +242,7 @@ class MessageCache
                        if(!$isfullkey && ($langcode != $wgContLanguageCode) ) {
                                $title .= '/' . $langcode;
                        }
-
-                       # Try the cache
-                       if( $this->mUseCache && is_array( $this->mCache ) && array_key_exists( $title, $this->mCache ) ) {
-                               $message = $this->mCache[$title];
-                       }
-
-                       if ( !$message && $this->mUseCache ) {
-                               $message = $this->mMemc->get( $this->mMemcKey . ':' . $title );
-                               if( $message ) {
-                                       $this->mCache[$title] = $message;
-                               }
-                       }
-
-                       # If it wasn't in the cache, load each message from the DB individually
-                       if ( !$message ) {
-                               $dbr =& wfGetDB( DB_SLAVE );
-                               $result = $dbr->selectRow( array( 'page', 'text' ),
-                                 array( 'old_flags', 'old_text' ),
-                                 'page_namespace=' . NS_MEDIAWIKI .
-                                 ' AND page_title=' . $dbr->addQuotes( $title ) .
-                                 ' AND page_latest=old_id',
-                                 'MessageCache::get' );
-                               if ( $result ) {
-                                       $message = Revision::getRevisionText( $result );
-                                       if ($this->mUseCache) {
-                                               $this->mCache[$title]=$message;
-                                               /* individual messages may be often 
-                                                  recached until proper purge code exists 
-                                               */
-                                               $this->mMemc->set( $this->mMemcKey . ':' . $title, $message, 300 );
-                                       }
-                               }
-                       }
+                       $message = $this->getFromCache( $title );
                }
                # Try the extension array
                if( !$message ) {
@@ -295,6 +263,13 @@ class MessageCache
                        wfRestoreWarnings();
                }
 
+               # Is this a custom message? Try the default language in the db...
+               if( !$message &&
+                       !$this->mDisable && $useDB &&
+                       !$isfullkey && ($langcode != $wgContLanguageCode) ) {
+                       $message = $this->getFromCache( $lang->ucfirst( $key ) );
+               }
+               
                # Final fallback
                if( !$message ) {
                        $message = "&lt;$key&gt;";
@@ -304,6 +279,45 @@ class MessageCache
                $message = $this->transform( $message );
                return $message;
        }
+       
+       function getFromCache( $title ) {
+               $message = false;
+               
+               # Try the cache
+               if( $this->mUseCache && is_array( $this->mCache ) && array_key_exists( $title, $this->mCache ) ) {
+                       $message = $this->mCache[$title];
+               }
+
+               if ( !$message && $this->mUseCache ) {
+                       $message = $this->mMemc->get( $this->mMemcKey . ':' . $title );
+                       if( $message ) {
+                               $this->mCache[$title] = $message;
+                       }
+               }
+
+               # If it wasn't in the cache, load each message from the DB individually
+               if ( !$message ) {
+                       $dbr =& wfGetDB( DB_SLAVE );
+                       $result = $dbr->selectRow( array( 'page', 'text' ),
+                         array( 'old_flags', 'old_text' ),
+                         'page_namespace=' . NS_MEDIAWIKI .
+                         ' AND page_title=' . $dbr->addQuotes( $title ) .
+                         ' AND page_latest=old_id',
+                         'MessageCache::get' );
+                       if ( $result ) {
+                               $message = Revision::getRevisionText( $result );
+                               if ($this->mUseCache) {
+                                       $this->mCache[$title]=$message;
+                                       /* individual messages may be often 
+                                          recached until proper purge code exists 
+                                       */
+                                       $this->mMemc->set( $this->mMemcKey . ':' . $title, $message, 300 );
+                               }
+                       }
+               }
+               
+               return $message;
+       }
 
        function transform( $message ) {
                if( !$this->mDisableTransform ) {