*
* @param $out OutputPage
*/
- function outputPage( OutputPage $out ) {
- global $wgUser, $wgLang, $wgContLang;
+ function outputPage( OutputPage $out=null ) {
+ global $wgContLang;
global $wgScript, $wgStylePath;
- global $wgMimeType, $wgJsMimeType, $wgRequest;
+ global $wgMimeType, $wgJsMimeType;
global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces, $wgHtml5Version;
global $wgDisableCounters, $wgLogo, $wgHideInterlanguageLinks;
global $wgMaxCredits, $wgShowCreditsIfMax;
wfProfileIn( __METHOD__ );
Profiler::instance()->setTemplated( true );
+ $oldContext = null;
+ if ( $out !== null ) {
+ // @todo Add wfDeprecated in 1.20
+ $oldContext = $this->getContext();
+ $this->setContext( $out->getContext() );
+ }
+
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+ $user = $this->getUser();
+
wfProfileIn( __METHOD__ . '-init' );
$this->initPage( $out );
wfProfileIn( __METHOD__ . '-stuff' );
$this->thispage = $this->getTitle()->getPrefixedDBkey();
- $this->userpage = $this->getUser()->getUserPage()->getPrefixedText();
+ $this->userpage = $user->getUserPage()->getPrefixedText();
$query = array();
- if ( !$wgRequest->wasPosted() ) {
- $query = $wgRequest->getValues();
+ if ( !$request->wasPosted() ) {
+ $query = $request->getValues();
unset( $query['title'] );
unset( $query['returnto'] );
unset( $query['returntoquery'] );
}
$this->thisquery = wfArrayToCGI( $query );
- $this->loggedin = $wgUser->isLoggedIn();
- $this->username = $wgUser->getName();
+ $this->loggedin = $user->isLoggedIn();
+ $this->username = $user->getName();
- if ( $wgUser->isLoggedIn() || $this->showIPinHeader() ) {
+ if ( $user->isLoggedIn() || $this->showIPinHeader() ) {
$this->userpageUrlDetails = self::makeUrlDetails( $this->userpage );
} else {
# This won't be used in the standard skins, but we define it to preserve the interface
$tpl->set( 'skinclass', get_class( $this ) );
$tpl->setRef( 'stylename', $this->stylename );
$tpl->set( 'printable', $out->isPrintable() );
- $tpl->set( 'handheld', $wgRequest->getBool( 'handheld' ) );
+ $tpl->set( 'handheld', $request->getBool( 'handheld' ) );
$tpl->setRef( 'loggedin', $this->loggedin );
$tpl->set( 'notspecialpage', $this->getTitle()->getNamespace() != NS_SPECIAL );
/* XXX currently unused, might get useful later
*/
$tpl->set( 'searchaction', $this->escapeSearchLink() );
$tpl->set( 'searchtitle', SpecialPage::getTitleFor( 'Search' )->getPrefixedDBKey() );
- $tpl->set( 'search', trim( $wgRequest->getVal( 'search' ) ) );
+ $tpl->set( 'search', trim( $request->getVal( 'search' ) ) );
$tpl->setRef( 'stylepath', $wgStylePath );
$tpl->setRef( 'articlepath', $wgArticlePath );
$tpl->setRef( 'scriptpath', $wgScriptPath );
$contentlang = $wgContLang->getCode();
$contentdir = $wgContLang->getDir();
- $userlang = $wgLang->getCode();
- $userdir = $wgLang->getDir();
+ $userlang = $this->getLang()->getCode();
+ $userdir = $this->getLang()->getDir();
$tpl->set( 'lang', $userlang );
$tpl->set( 'dir', $userdir );
- $tpl->set( 'rtl', $wgLang->isRTL() );
+ $tpl->set( 'rtl', $this->getLang()->isRTL() );
- $tpl->set( 'capitalizeallnouns', $wgLang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
- $tpl->set( 'showjumplinks', $wgUser->getOption( 'showjumplinks' ) );
- $tpl->set( 'username', $wgUser->isAnon() ? null : $this->username );
+ $tpl->set( 'capitalizeallnouns', $this->getLang()->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
+ $tpl->set( 'showjumplinks', $user->getOption( 'showjumplinks' ) );
+ $tpl->set( 'username', $user->isAnon() ? null : $this->username );
$tpl->setRef( 'userpage', $this->userpage );
$tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href'] );
$tpl->set( 'userlang', $userlang );
if ( $this->isRevisionCurrent() ) {
$article = new Article( $this->getTitle(), 0 );
if ( !$wgDisableCounters ) {
- $viewcount = $wgLang->formatNum( $article->getCount() );
+ $viewcount = $this->getLang()->formatNum( $article->getCount() );
if ( $viewcount ) {
$tpl->set( 'viewcount', wfMsgExt( 'viewcount', array( 'parseinline' ), $viewcount ) );
}
if( $num > 0 ) {
$tpl->set( 'numberofwatchingusers',
wfMsgExt( 'number_of_watching_users_pageview', array( 'parseinline' ),
- $wgLang->formatNum( $num ) )
+ $this->getLang()->formatNum( $num ) )
);
}
}
# not for special pages or file pages AND only when viewing AND if the page exists
# (or is in MW namespace, because that has default content)
if( !in_array( $this->getTitle()->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
- in_array( $wgRequest->getVal( 'action', 'view' ), array( 'view', 'historysubmit' ) ) &&
+ in_array( $request->getVal( 'action', 'view' ), array( 'view', 'historysubmit' ) ) &&
( $this->getTitle()->exists() || $this->getTitle()->getNamespace() == NS_MEDIAWIKI ) ) {
$pageLang = $this->getTitle()->getPageLanguage();
$realBodyAttribs = array( 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(),
wfProfileIn( __METHOD__ . '-stuff5' );
# Personal toolbar
- $tpl->set( 'personal_urls', $this->buildPersonalUrls( $out ) );
- $content_navigation = $this->buildContentNavigationUrls( $out );
+ $tpl->set( 'personal_urls', $this->buildPersonalUrls() );
+ $content_navigation = $this->buildContentNavigationUrls();
$content_actions = $this->buildContentActionUrls( $content_navigation );
$tpl->setRef( 'content_navigation', $content_navigation );
$tpl->setRef( 'content_actions', $content_actions );
$tpl->set( 'sidebar', $this->buildSidebar() );
- $tpl->set( 'nav_urls', $this->buildNavUrls( $out ) );
+ $tpl->set( 'nav_urls', $this->buildNavUrls() );
// Set the head scripts near the end, in case the above actions resulted in added scripts
if ( $this->useHeadElement ) {
// result may be an error
$this->printOrError( $res );
+
+ if ( $oldContext ) {
+ $this->setContext( $oldContext );
+ }
wfProfileOut( __METHOD__ );
}
* build array of urls for personal toolbar
* @return array
*/
- protected function buildPersonalUrls( OutputPage $out ) {
- global $wgRequest;
-
- $title = $out->getTitle();
+ protected function buildPersonalUrls() {
+ $title = $this->getTitle();
+ $request = $this->getRequest();
$pageurl = $title->getLocalURL();
wfProfileIn( __METHOD__ );
/* set up the default links for the personal toolbar */
$personal_urls = array();
- $page = $wgRequest->getVal( 'returnto', $this->thispage );
- $query = $wgRequest->getVal( 'returntoquery', $this->thisquery );
+ $page = $request->getVal( 'returnto', $this->thispage );
+ $query = $request->getVal( 'returntoquery', $this->thisquery );
$a = array( 'returnto' => $page );
if( $query != '' ) {
$a['returntoquery'] = $query;
# from request values or be specified in "sub page" form. The plot
# thickens, because $wgTitle is altered for special pages, so doesn't
# contain the original alias-with-subpage.
- $origTitle = Title::newFromText( $wgRequest->getText( 'title' ) );
+ $origTitle = Title::newFromText( $request->getText( 'title' ) );
if( $origTitle instanceof Title && $origTitle->getNamespace() == NS_SPECIAL ) {
list( $spName, $spPar ) = SpecialPageFactory::resolveAlias( $origTitle->getText() );
$active = $spName == 'Contributions'
&& ( ( $spPar && $spPar == $this->username )
- || $wgRequest->getText( 'target' ) == $this->username );
+ || $request->getText( 'target' ) == $this->username );
} else {
$active = false;
}
'active' => false
);
} else {
- global $wgUser;
$useCombinedLoginLink = $this->useCombinedLoginLink();
- $loginlink = $wgUser->isAllowed( 'createaccount' ) && $useCombinedLoginLink
+ $loginlink = $this->getUser()->isAllowed( 'createaccount' ) && $useCombinedLoginLink
? 'nav-login-createaccount'
: 'login';
- $is_signup = $wgRequest->getText('type') == "signup";
+ $is_signup = $request->getText('type') == "signup";
# anonlogin & login are the same
$login_url = array(
'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
'active' => $title->isSpecial( 'Userlogin' ) && ( $loginlink == "nav-login-createaccount" || !$is_signup )
);
- if ( $wgUser->isAllowed( 'createaccount' ) && !$useCombinedLoginLink ) {
+ if ( $this->getUser()->isAllowed( 'createaccount' ) && !$useCombinedLoginLink ) {
$createaccount_url = array(
'text' => wfMsg( 'createaccount' ),
'href' => self::makeSpecialUrl( 'Userlogin', "$returnto&type=signup" ),
*
* @return array
*/
- protected function buildContentNavigationUrls( OutputPage $out ) {
- global $wgContLang, $wgLang, $wgUser, $wgRequest;
+ protected function buildContentNavigationUrls() {
+ global $wgContLang;
global $wgDisableLangConversion;
wfProfileIn( __METHOD__ );
$title = $this->getRelevantTitle(); // Display tabs for the relevant title rather than always the title itself
$onPage = $title->equals($this->getTitle());
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+ $user = $this->getUser();
+
$content_navigation = array(
'namespaces' => array(),
'views' => array(),
);
// parameters
- $action = $wgRequest->getVal( 'action', 'view' );
- $section = $wgRequest->getVal( 'section' );
+ $action = $request->getVal( 'action', 'view' );
+ $section = $request->getVal( 'section' );
$userCanRead = $title->userCanRead();
$skname = $this->skinname;
'rel' => 'archives',
);
- if( $wgUser->isAllowed( 'delete' ) ) {
+ if( $user->isAllowed( 'delete' ) ) {
$content_navigation['actions']['delete'] = array(
'class' => ( $onPage && $action == 'delete' ) ? 'selected' : false,
'text' => wfMessageFallback( "$skname-action-delete", 'delete' )->text(),
);
}
- if ( $title->getNamespace() !== NS_MEDIAWIKI && $wgUser->isAllowed( 'protect' ) ) {
+ if ( $title->getNamespace() !== NS_MEDIAWIKI && $user->isAllowed( 'protect' ) ) {
$mode = !$title->isProtected() ? 'protect' : 'unprotect';
$content_navigation['actions'][$mode] = array(
'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
}
} else {
// article doesn't exist or is deleted
- if ( $wgUser->isAllowed( 'deletedhistory' ) && !$wgUser->isBlocked() ) {
- $includeSuppressed = $wgUser->isAllowed( 'suppressrevision' );
+ if ( $user->isAllowed( 'deletedhistory' ) && !$user->isBlocked() ) {
+ $includeSuppressed = $user->isAllowed( 'suppressrevision' );
$n = $title->isDeleted( $includeSuppressed );
if( $n ) {
$undelTitle = SpecialPage::getTitleFor( 'Undelete' );
// If the user can't undelete but can view deleted history show them a "View .. deleted" tab instead
- $msgKey = $wgUser->isAllowed( 'undelete' ) ? 'undelete' : 'viewdeleted';
+ $msgKey = $user->isAllowed( 'undelete' ) ? 'undelete' : 'viewdeleted';
$content_navigation['actions']['undelete'] = array(
'class' => $this->getTitle()->isSpecial( 'Undelete' ) ? 'selected' : false,
'text' => wfMessageFallback( "$skname-action-$msgKey", "{$msgKey}_short" )
- ->params( $wgLang->formatNum( $n ) )->text(),
+ ->params( $this->getLang()->formatNum( $n ) )->text(),
'href' => $undelTitle->getLocalURL( array( 'target' => $title->getPrefixedDBkey() ) )
);
}
}
- if ( $title->getNamespace() !== NS_MEDIAWIKI && $wgUser->isAllowed( 'protect' ) ) {
+ if ( $title->getNamespace() !== NS_MEDIAWIKI && $user->isAllowed( 'protect' ) ) {
$mode = !$title->getRestrictions( 'create' ) ? 'protect' : 'unprotect';
$content_navigation['actions'][$mode] = array(
'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
* the global versions.
*/
$mode = $title->userIsWatching() ? 'unwatch' : 'watch';
- $token = WatchAction::getWatchToken( $title, $wgUser, $mode );
+ $token = WatchAction::getWatchToken( $title, $user, $mode );
$content_navigation['actions'][$mode] = array(
'class' => $onPage && ( $action == 'watch' || $action == 'unwatch' ) ? 'selected' : false,
'text' => wfMsg( $mode ), // uses 'watch' or 'unwatch' message
$content_navigation['namespaces']['special'] = array(
'class' => 'selected',
'text' => wfMsg( 'nstab-special' ),
- 'href' => $wgRequest->getRequestURL(), // @bug 2457, 2510
+ 'href' => $request->getRequestURL(), // @bug 2457, 2510
'context' => 'subject'
);
* @return array
* @private
*/
- protected function buildNavUrls( OutputPage $out ) {
- global $wgUseTrackbacks, $wgUser, $wgRequest;
+ protected function buildNavUrls() {
+ global $wgUseTrackbacks;
global $wgUploadNavigationUrl;
wfProfileIn( __METHOD__ );
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
$nav_urls = array();
$nav_urls['mainpage'] = array( 'href' => self::makeMainPageUrl() );
if( $wgUploadNavigationUrl ) {
$nav_urls['upload'] = array( 'href' => $wgUploadNavigationUrl );
- } elseif( UploadBase::isEnabled() && UploadBase::isAllowed( $wgUser ) === true ) {
+ } elseif( UploadBase::isEnabled() && UploadBase::isAllowed( $this->getUser() ) === true ) {
$nav_urls['upload'] = array( 'href' => self::makeSpecialUrl( 'Upload' ) );
} else {
$nav_urls['upload'] = false;
$nav_urls['print'] = array(
'text' => wfMsg( 'printableversion' ),
'href' => $this->getTitle()->getLocalURL(
- $wgRequest->appendQueryValue( 'printable', 'yes', true ) )
+ $request->appendQueryValue( 'printable', 'yes', true ) )
);
}
$nav_urls['log'] = false;
}
- if ( $wgUser->isAllowed( 'block' ) ) {
+ if ( $this->getUser()->isAllowed( 'block' ) ) {
$nav_urls['blockip'] = array(
'href' => self::makeSpecialUrlSubpage( 'Block', $rootUser )
);
* @todo FIXME: Why is this duplicated in/from OutputPage::getHeadScripts()??
*/
function setupUserJs( $allowUserJs ) {
- global $wgRequest, $wgJsMimeType;
+ global $wgJsMimeType;
wfProfileIn( __METHOD__ );
if( $allowUserJs && $this->loggedin ) {
if( $this->getTitle()->isJsSubpage() and $this->getOutput()->userCanPreview() ) {
# XXX: additional security check/prompt?
- $this->userjsprev = '/*<![CDATA[*/ ' . $wgRequest->getText( 'wpTextbox1' ) . ' /*]]>*/';
+ $this->userjsprev = '/*<![CDATA[*/ ' . $this->getRequest()->getText( 'wpTextbox1' ) . ' /*]]>*/';
} else {
$this->userjs = self::makeUrl( $this->userpage . '/' . $this->skinname . '.js', 'action=raw&ctype=' . $wgJsMimeType );
}