Merge "Add User::isSafeToLoad() and ParserOptions::newFromAnon()"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 4 Feb 2016 06:08:07 +0000 (06:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 4 Feb 2016 06:08:07 +0000 (06:08 +0000)
includes/cache/MessageCache.php
includes/parser/ParserOptions.php
includes/user/User.php

index 6b938f1..2fae4e3 100644 (file)
@@ -168,14 +168,14 @@ class MessageCache {
         * @return ParserOptions
         */
        function getParserOptions() {
-               global $wgFullyInitialised, $wgContLang;
+               global $wgUser;
 
                if ( !$this->mParserOptions ) {
-                       if ( !$wgFullyInitialised ) {
+                       if ( !$wgUser->isSafeToLoad() ) {
                                // $wgUser isn't unstubbable yet, so don't try to get a
                                // ParserOptions for it. And don't cache this ParserOptions
                                // either.
-                               $po = new ParserOptions( new User, $wgContLang );
+                               $po = ParserOptions::newFromAnon();
                                $po->setEditSection( false );
                                return $po;
                        }
index e6d5274..0e8d76d 100644 (file)
@@ -599,6 +599,15 @@ class ParserOptions {
                $this->initialiseFromUser( $user, $lang );
        }
 
+       /**
+        * Get a ParserOptions object for an anonymous user
+        * @return ParserOptions
+        */
+       public static function newFromAnon() {
+               global $wgContLang;
+               return new ParserOptions( new User, $wgContLang );
+       }
+
        /**
         * Get a ParserOptions object from a given user.
         * Language will be taken from $wgLang.
index 0fa7d59..8e3b2ec 100644 (file)
@@ -309,6 +309,15 @@ class User implements IDBAccessObject {
                return $this->getName();
        }
 
+       /**
+        * Test if it's safe to load this User object
+        * @return bool
+        */
+       public function isSafeToLoad() {
+               global $wgFullyInitialised;
+               return $wgFullyInitialised || $this->mLoadedItems === true || $this->mFrom !== 'session';
+       }
+
        /**
         * Load the user table data for this object from the source given by mFrom.
         *
@@ -327,7 +336,7 @@ class User implements IDBAccessObject {
                $this->queryFlagsUsed = $flags;
 
                // If this is called too early, things are likely to break.
-               if ( $this->mFrom === 'session' && empty( $wgFullyInitialised ) ) {
+               if ( !$wgFullyInitialised && $this->mFrom === 'session' ) {
                        \MediaWiki\Logger\LoggerFactory::getInstance( 'session' )
                                ->warning( 'User::loadFromSession called before the end of Setup.php', array(
                                        'exception' => new Exception( 'User::loadFromSession called before the end of Setup.php' ),