X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecialpage%2FSpecialPageFactory.php;h=8ce480e1235a81d87ab1689ed46aba2fdb5abbc8;hb=d82eec166fc19e821cca501bf350d348ef9f5da4;hp=bc2bb31a6f0bcdef4ae8051556af9a4c416e01c0;hpb=40a628a501fc05bb00e834fe359ca4061925f320;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index bc2bb31a6f..8ce480e123 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -582,31 +582,51 @@ class SpecialPageFactory { * @return string HTML fragment */ public static function capturePath( Title $title, IContextSource $context ) { - global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang; - - // Save current globals - $oldTitle = $wgTitle; - $oldOut = $wgOut; - $oldRequest = $wgRequest; - $oldUser = $wgUser; - $oldLang = $wgLang; - - // Set the globals to the current context + global $wgTitle, $wgOut, $wgRequest, $wgUser, $wgLang; + $main = RequestContext::getMain(); + + // Save current globals and main context + $glob = [ + 'title' => $wgTitle, + 'output' => $wgOut, + 'request' => $wgRequest, + 'user' => $wgUser, + 'language' => $wgLang, + ]; + $ctx = [ + 'title' => $main->getTitle(), + 'output' => $main->getOutput(), + 'request' => $main->getRequest(), + 'user' => $main->getUser(), + 'language' => $main->getLanguage(), + ]; + + // Override $wgTitle = $title; $wgOut = $context->getOutput(); $wgRequest = $context->getRequest(); $wgUser = $context->getUser(); $wgLang = $context->getLanguage(); + $main->setTitle( $title ); + $main->setOutput( $context->getOutput() ); + $main->setRequest( $context->getRequest() ); + $main->setUser( $context->getUser() ); + $main->setLanguage( $context->getLanguage() ); // The useful part $ret = self::executePath( $title, $context, true ); - // And restore the old globals - $wgTitle = $oldTitle; - $wgOut = $oldOut; - $wgRequest = $oldRequest; - $wgUser = $oldUser; - $wgLang = $oldLang; + // Restore old globals and context + $wgTitle = $glob['title']; + $wgOut = $glob['output']; + $wgRequest = $glob['request']; + $wgUser = $glob['user']; + $wgLang = $glob['language']; + $main->setTitle( $ctx['title'] ); + $main->setOutput( $ctx['output'] ); + $main->setRequest( $ctx['request'] ); + $main->setUser( $ctx['user'] ); + $main->setLanguage( $ctx['language'] ); return $ret; }