From 9db190c7e736ec8d063187d4241b59feaf7dc2d1 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 22 Jun 2011 11:28:20 +0200 Subject: update to MediaWiki 1.17.0 --- includes/specials/SpecialUserlogout.php | 72 +++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 21 deletions(-) (limited to 'includes/specials/SpecialUserlogout.php') diff --git a/includes/specials/SpecialUserlogout.php b/includes/specials/SpecialUserlogout.php index e23df612..39b5b284 100644 --- a/includes/specials/SpecialUserlogout.php +++ b/includes/specials/SpecialUserlogout.php @@ -1,33 +1,63 @@ getName(); - $wgUser->logout(); - $wgOut->setRobotPolicy( 'noindex,nofollow' ); - // Hook. - $injected_html = ''; - wfRunHooks( 'UserLogoutComplete', array(&$wgUser, &$injected_html, $oldName) ); + function execute( $par ) { + global $wgUser, $wgOut; + + /** + * Some satellite ISPs use broken precaching schemes that log people out straight after + * they're logged in (bug 17790). Luckily, there's a way to detect such requests. + */ + if ( isset( $_SERVER['REQUEST_URI'] ) && strpos( $_SERVER['REQUEST_URI'], '&' ) !== false ) { + wfDebug( "Special:Userlogout request {$_SERVER['REQUEST_URI']} looks suspicious, denying.\n" ); + wfHttpError( 400, wfMsg( 'loginerror' ), wfMsg( 'suspicious-userlogout' ) ); + return; + } + + $this->setHeaders(); + $this->outputHeader(); - $wgOut->addHTML( wfMsgExt( 'logouttext', array( 'parse' ) ) . $injected_html ); - $wgOut->returnToMain(); + $oldName = $wgUser->getName(); + $wgUser->logout(); + + $wgOut->addWikiMsg( 'logouttext' ); + + // Hook. + $injected_html = ''; + wfRunHooks( 'UserLogoutComplete', array( &$wgUser, &$injected_html, $oldName ) ); + $wgOut->addHTML( $injected_html ); + + $wgOut->returnToMain(); + } } -- cgit v1.2.2