X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fspecials%2FSpecialUserlogout.php;h=5789e3a348095662dac6f6c31d45e92afa6c4d03;hp=080dc1194359ef44e01ec82fa771c6cc12bd0632;hb=e3bd13db0c285f312e31bb1b7271af4628cca80c;hpb=8b1a78fa5e62923d6dea1f9fe578c46b2910155e diff --git a/includes/specials/SpecialUserlogout.php b/includes/specials/SpecialUserlogout.php index 080dc11943..5789e3a348 100644 --- a/includes/specials/SpecialUserlogout.php +++ b/includes/specials/SpecialUserlogout.php @@ -31,6 +31,10 @@ class SpecialUserlogout extends UnlistedSpecialPage { parent::__construct( 'Userlogout' ); } + public function doesWrites() { + return true; + } + function execute( $par ) { /** * Some satellite ISPs use broken precaching schemes that log people out straight after @@ -44,6 +48,18 @@ class SpecialUserlogout extends UnlistedSpecialPage { $this->setHeaders(); $this->outputHeader(); + // Make sure it's possible to log out + $session = MediaWiki\Session\SessionManager::getGlobalSession(); + if ( !$session->canSetUser() ) { + throw new ErrorPageError( + 'cannotlogoutnow-title', + 'cannotlogoutnow-text', + [ + $session->getProvider()->describe( RequestContext::getMain()->getLanguage() ) + ] + ); + } + $user = $this->getUser(); $oldName = $user->getName(); $user->logout(); @@ -56,7 +72,7 @@ class SpecialUserlogout extends UnlistedSpecialPage { // Hook. $injected_html = ''; - Hooks::run( 'UserLogoutComplete', array( &$user, &$injected_html, $oldName ) ); + Hooks::run( 'UserLogoutComplete', [ &$user, &$injected_html, $oldName ] ); $out->addHTML( $injected_html ); $out->returnToMain();