X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialUserlogin.php;h=19af85245edf6c25df6574ad584a29b5c6a5f07b;hb=29719f846b8887e1190ddf85125387c079f9539b;hp=7d91096f2c73249f4a282acd08d6d21e00838e2d;hpb=4a6ce315b891aad7b34f6ba5929ff8d4f2a20d5b;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialUserlogin.php b/includes/specials/SpecialUserlogin.php index 7d91096f2c..19af85245e 100644 --- a/includes/specials/SpecialUserlogin.php +++ b/includes/specials/SpecialUserlogin.php @@ -93,8 +93,6 @@ class LoginForm extends SpecialPage { $this->mRetype = $request->getText( 'wpRetype' ); $this->mDomain = $request->getText( 'wpDomain' ); $this->mReason = $request->getText( 'wpReason' ); - $this->mReturnTo = $request->getVal( 'returnto' ); - $this->mReturnToQuery = $request->getVal( 'returntoquery' ); $this->mCookieCheck = $request->getVal( 'wpCookieCheck' ); $this->mPosted = $request->wasPosted(); $this->mCreateaccount = $request->getCheck( 'wpCreateaccount' ); @@ -111,6 +109,9 @@ class LoginForm extends SpecialPage { if ( $wgRedirectOnLogin ) { $this->mReturnTo = $wgRedirectOnLogin; $this->mReturnToQuery = ''; + } else { + $this->mReturnTo = $request->getVal( 'returnto', '' ); + $this->mReturnToQuery = $request->getVal( 'returntoquery', '' ); } if( $wgEnableEmail ) { @@ -274,7 +275,7 @@ class LoginForm extends SpecialPage { /** * @private - * @return bool|\User + * @return bool|User */ function addNewAccountInternal() { global $wgAuth, $wgMemc, $wgAccountCreationThrottle, @@ -331,6 +332,12 @@ class LoginForm extends SpecialPage { return false; } + # Include checks that will include GlobalBlocking (Bug 38333) + $permErrors = $this->getTitle()->getUserPermissionsErrors( 'createaccount', $currentUser, true ); + if ( count( $permErrors ) ) { + throw new PermissionsError( 'createaccount', $permErrors ); + } + $ip = $this->getRequest()->getIP(); if ( $currentUser->isDnsBlacklisted( $ip, true /* check $wgProxyWhitelist */ ) ) { $this->mainLoginForm( $this->msg( 'sorbs_create_account_reason' )->text() . ' ' . $this->msg( 'parentheses', $ip )->escaped() ); @@ -910,7 +917,7 @@ class LoginForm extends SpecialPage { $out->addHTML( $injected_html ); - if ( !empty( $this->mReturnTo ) ) { + if ( $this->mReturnTo !== '' ) { $out->returnToMain( null, $this->mReturnTo, $this->mReturnToQuery ); } else { $out->returnToMain( null ); @@ -998,9 +1005,9 @@ class LoginForm extends SpecialPage { $linkmsg = 'nologin'; } - if ( !empty( $this->mReturnTo ) ) { + if ( $this->mReturnTo !== '' ) { $returnto = '&returnto=' . wfUrlencode( $this->mReturnTo ); - if ( !empty( $this->mReturnToQuery ) ) { + if ( $this->mReturnToQuery !== '' ) { $returnto .= '&returntoquery=' . wfUrlencode( $this->mReturnToQuery ); } @@ -1190,8 +1197,9 @@ class LoginForm extends SpecialPage { function cookieRedirectCheck( $type ) { $titleObj = SpecialPage::getTitleFor( 'Userlogin' ); $query = array( 'wpCookieCheck' => $type ); - if ( $this->mReturnTo ) { + if ( $this->mReturnTo !== '' ) { $query['returnto'] = $this->mReturnTo; + $query['returntoquery'] = $this->mReturnToQuery; } $check = $titleObj->getFullURL( $query ); @@ -1261,18 +1269,24 @@ class LoginForm extends SpecialPage { // no link for currently used language return htmlspecialchars( $text ); } - $attr = array( 'uselang' => $lang ); + $query = array( 'uselang' => $lang ); if( $this->mType == 'signup' ) { - $attr['type'] = 'signup'; + $query['type'] = 'signup'; } - if( $this->mReturnTo ) { - $attr['returnto'] = $this->mReturnTo; + if( $this->mReturnTo !== '' ) { + $query['returnto'] = $this->mReturnTo; + $query['returntoquery'] = $this->mReturnToQuery; } + + $attr = array(); + $targetLanguage = Language::factory( $lang ); + $attr['lang'] = $attr['hreflang'] = $targetLanguage->getHtmlCode(); + return Linker::linkKnown( $this->getTitle(), htmlspecialchars( $text ), - array(), - $attr + $attr, + $query ); } }