Allow the $result parameter of the isValidPassword hook to be an array if the message...
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Tue, 25 Jan 2011 15:36:36 +0000 (15:36 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Tue, 25 Jan 2011 15:36:36 +0000 (15:36 +0000)
includes/User.php
includes/installer/WebInstallerPage.php
includes/specials/SpecialUserlogin.php

index fc9dbb2..0b4cf36 100644 (file)
@@ -599,7 +599,7 @@ class User {
         * Given unvalidated password input, return error message on failure.
         *
         * @param $password String Desired password
-        * @return mixed: true on success, string of error message on failure
+        * @return mixed: true on success, string or array of error message on failure
         */
        function getPasswordValidity( $password ) {
                global $wgMinimalPasswordLength, $wgContLang;
@@ -1771,8 +1771,14 @@ class User {
                        if( !$this->isValidPassword( $str ) ) {
                                global $wgMinimalPasswordLength;
                                $valid = $this->getPasswordValidity( $str );
-                               throw new PasswordError( wfMsgExt( $valid, array( 'parsemag' ),
-                                       $wgMinimalPasswordLength ) );
+                               if ( is_array( $valid ) ) {
+                                       $message = array_shift( $valid );
+                                       $params = $valid;
+                               } else {
+                                       $message = $valid;
+                                       $params = array( $wgMinimalPasswordLength );
+                               }
+                               throw new PasswordError( wfMsgExt( $message, array( 'parsemag' ), $params ) );
                        }
                }
 
index 768ce0e..d1b7f51 100644 (file)
@@ -701,7 +701,7 @@ class WebInstaller_Name extends WebInstallerPage {
                        $msg = $valid;
                }
                if ( $msg !== false ) {
-                       $this->parent->showError( $msg );
+                       call_user_func_array( array( $this->parent, 'showError' ), (array)$msg );
                        $this->setVar( '_AdminPassword', '' );
                        $this->setVar( '_AdminPassword2', '' );
                        $retVal = false;
index 69f55aa..63abc8f 100644 (file)
@@ -327,7 +327,14 @@ class LoginForm extends SpecialPage {
                $valid = $u->getPasswordValidity( $this->mPassword );
                if ( $valid !== true ) {
                        if ( !$this->mCreateaccountMail ) {
-                               $this->mainLoginForm( wfMsgExt( $valid, array( 'parsemag' ), $wgMinimalPasswordLength ) );
+                               if ( is_array( $valid ) ) {
+                                       $message = array_shift( $valid );
+                                       $params = $valid;
+                               } else {
+                                       $message = $valid;
+                                       $params = array( $wgMinimalPasswordLength );
+                               }
+                               $this->mainLoginForm( wfMsgExt( $message, array( 'parsemag' ), $params ) );
                                return false;
                        } else {
                                # do not force a password for account creation by email