Don't load all languages just to check whether message is known.
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Thu, 22 Sep 2011 14:04:08 +0000 (14:04 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Thu, 22 Sep 2011 14:04:08 +0000 (14:04 +0000)
I'm pretty sure I already fixed this once in the past.

includes/Title.php

index e31b772..2ad98b4 100644 (file)
@@ -3952,7 +3952,7 @@ class Title {
                                return $this->mDbkeyform == '';
                        case NS_MEDIAWIKI:
                                // known system message
-                               return $this->getDefaultMessageText() !== false;
+                               return $this->hasSourceText() !== false;
                        default:
                                return false;
                }
@@ -3982,8 +3982,13 @@ class Title {
 
                if ( $this->mNamespace == NS_MEDIAWIKI ) {
                        // If the page doesn't exist but is a known system message, default
-                       // message content will be displayed, same for language subpages
-                       return $this->getDefaultMessageText() !== false;
+                       // message content will be displayed, same for language subpages-
+                       // Use always content language to avoid loading hundreds of languages
+                       // to get the link color.
+                       global $wgContLang;
+                       list( $name, $lang ) = MessageCache::singleton()->figureMessage( $wgContLang->lcfirst( $this->getText() ) );
+                       $message = wfMessage( $name )->inLanguage( $wgContLang )->useDatabase( false );
+                       return $message->exists();
                }
 
                return false;