Fix for r100114: make API and tests work again
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Tue, 18 Oct 2011 18:07:56 +0000 (18:07 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Tue, 18 Oct 2011 18:07:56 +0000 (18:07 +0000)
includes/api/ApiLogin.php
includes/specials/SpecialUserlogin.php

index 67e9409..b18954b 100644 (file)
@@ -68,7 +68,10 @@ class ApiLogin extends ApiBase {
                        wfSetupSession();
                }
 
-               $loginForm = new LoginForm( $req );
+               $context = $this->createContext();
+               $context->setRequest( $req );
+               $loginForm = new LoginForm();
+               $loginForm->setContext( $context );
 
                global $wgCookiePrefix, $wgUser, $wgPasswordAttemptThrottle;
 
index 9dfc3ce..9648ad8 100644 (file)
@@ -49,6 +49,7 @@ class LoginForm extends SpecialPage {
        var $mSkipCookieCheck, $mReturnToQuery, $mToken, $mStickHTTPS;
        var $mType, $mReason, $mRealName;
        var $mAbortLoginErrorMsg = 'login-abort-generic';
+       private $mLoaded = false;
 
        /**
         * @var ExternalUser
@@ -74,9 +75,20 @@ class LoginForm extends SpecialPage {
         *
         * @param $request WebRequest object
         */
-       function load( $request ) {
+       function load() {
                global $wgAuth, $wgHiddenPrefs, $wgEnableEmail, $wgRedirectOnLogin;
 
+               if ( $this->mLoaded ) {
+                       return;
+               }
+               $this->mLoaded = true;
+
+               if ( $this->mOverrideRequest === null ) {
+                       $request = $this->getRequest();
+               } else {
+                       $request = $this->mOverrideRequest;
+               }
+
                $this->mType = $request->getText( 'type' );
                $this->mUsername = $request->getText( 'wpName' );
                $this->mPassword = $request->getText( 'wpPassword' );
@@ -132,12 +144,7 @@ class LoginForm extends SpecialPage {
                        wfSetupSession();
                }
 
-               if ( $this->mOverrideRequest === null ) {
-                       $request = $this->getRequest();
-               } else {
-                       $request = $this->mOverrideRequest;
-               }
-               $this->load( $request );
+               $this->load();
 
                if ( $par == 'signup' ) { # Check for [[Special:Userlogin/signup]]
                        $this->mType = 'signup';
@@ -459,6 +466,8 @@ class LoginForm extends SpecialPage {
        public function authenticateUserData() {
                global $wgUser, $wgAuth;
 
+               $this->load();
+
                if ( $this->mUsername == '' ) {
                        return self::NO_NAME;
                }