$context->setUser( User::newFromName( '127.0.0.1', false ) );
}
$context->setLanguage( $this->mOptions->getUserLangObj() );
- $ret = SpecialPageFactory::capturePath( $title, $context );
+ $ret = SpecialPageFactory::capturePath( $title, $context, $this->getLinkRenderer() );
if ( $ret ) {
$text = $context->getOutput()->getHTML();
$this->mOutput->addOutputPageMetadata( $context->getOutput() );
<?php
-use MediaWiki\MediaWikiServices;
-
/**
* Parent class for all special pages.
*
*/
use MediaWiki\Auth\AuthManager;
+use MediaWiki\Linker\LinkRenderer;
+use MediaWiki\MediaWikiServices;
/**
* Parent class for all special pages.
*/
protected $mContext;
+ /**
+ * @var LinkRenderer|null
+ */
+ private $linkRenderer;
+
/**
* Get a localised Title object for a specified special page name
*
wfTransactionalTimeLimit();
}
}
+
+ /**
+ * @since 1.28
+ * @return LinkRenderer
+ */
+ protected function getLinkRenderer() {
+ if ( $this->linkRenderer ) {
+ return $this->linkRenderer;
+ } else {
+ return MediaWikiServices::getInstance()->getLinkRenderer();
+ }
+ }
+
+ /**
+ * @since 1.28
+ * @param LinkRenderer $linkRenderer
+ */
+ public function setLinkRenderer( LinkRenderer $linkRenderer ) {
+ $this->linkRenderer = $linkRenderer;
+ }
}
* @ingroup SpecialPage
* @defgroup SpecialPage SpecialPage
*/
+use MediaWiki\Linker\LinkRenderer;
/**
* Factory for handling the special page list and generating SpecialPage objects.
* @param Title $title
* @param IContextSource $context
* @param bool $including Bool output is being captured for use in {{special:whatever}}
+ * @param LinkRenderer|null $linkRenderer (since 1.28)
*
* @return bool
*/
- public static function executePath( Title &$title, IContextSource &$context, $including = false ) {
+ public static function executePath( Title &$title, IContextSource &$context, $including = false,
+ LinkRenderer $linkRenderer = null
+ ) {
// @todo FIXME: Redirects broken due to this call
$bits = explode( '/', $title->getDBkey(), 2 );
$name = $bits[0];
}
$page->including( $including );
+ if ( $linkRenderer ) {
+ $page->setLinkRenderer( $linkRenderer );
+ }
// Execute special page
$page->run( $par );
*
* @param Title $title
* @param IContextSource $context
+ * @param LinkRenderer|null $linkRenderer (since 1.28)
* @return string HTML fragment
*/
- public static function capturePath( Title $title, IContextSource $context ) {
+ public static function capturePath(
+ Title $title, IContextSource $context, LinkRenderer $linkRenderer = null
+ ) {
global $wgTitle, $wgOut, $wgRequest, $wgUser, $wgLang;
$main = RequestContext::getMain();
$main->setLanguage( $context->getLanguage() );
// The useful part
- $ret = self::executePath( $title, $context, true );
+ $ret = self::executePath( $title, $context, true, $linkRenderer );
// Restore old globals and context
$wgTitle = $glob['title'];