$colours = [];
$linkCache = LinkCache::singleton();
$output = $this->parent->getOutput();
+ $linkRenderer = $this->parent->getLinkRenderer();
+ $threshold = $linkRenderer->getStubThreshold();
$dbr = wfGetDB( DB_SLAVE );
- $threshold = $this->parent->getOptions()->getStubThreshold();
# Sort by namespace
ksort( $this->internals );
$pdbk = $title->getPrefixedDBkey();
$linkCache->addGoodLinkObjFromRow( $title, $s );
$output->addLink( $title, $s->page_id );
- # @todo FIXME: Convoluted data flow
- # The redirect status and length is passed to getLinkColour via the LinkCache
- # Use formal parameters instead
$colours[$pdbk] = Linker::getLinkColour( $title, $threshold );
// add id to the extension todolist
$linkcolour_ids[$s->page_id] = $pdbk;
}
if ( $displayText === '' ) {
$displayText = null;
+ } else {
+ $displayText = new HtmlArmor( $displayText );
}
if ( !isset( $colours[$pdbk] ) ) {
$colours[$pdbk] = 'new';
if ( $colours[$pdbk] == 'new' ) {
$linkCache->addBadLinkObj( $title );
$output->addLink( $title, 0 );
- $type = [ 'broken' ];
+ $link = $linkRenderer->makeBrokenLink(
+ $title, $displayText, $attribs, $query
+ );
} else {
- if ( $colours[$pdbk] != '' ) {
- $attribs['class'] = $colours[$pdbk];
- }
- $type = [ 'known', 'noclasses' ];
+ $link = $linkRenderer->makePreloadedLink(
+ $title, $displayText, $colours[$pdbk], $attribs, $query
+ );
}
- $replacePairs[$searchkey] = Linker::link( $title, $displayText,
- $attribs, $query, $type );
+
+ $replacePairs[$searchkey] = $link;
}
}
$replacer = new HashtableReplacer( $replacePairs, 1 );
# Make interwiki link HTML
$output = $this->parent->getOutput();
$replacePairs = [];
- $options = [
- 'stubThreshold' => $this->parent->getOptions()->getStubThreshold(),
- ];
+ $linkRenderer = $this->parent->getLinkRenderer();
foreach ( $this->interwikis as $key => $link ) {
- $replacePairs[$key] = Linker::link( $link['title'], $link['text'], [], [], $options );
+ $replacePairs[$key] = $linkRenderer->makeLink(
+ $link['title'],
+ new HtmlArmor( $link['text'] )
+ );
$output->addInterwikiLink( $link['title'] );
}
$replacer = new HashtableReplacer( $replacePairs, 1 );
$entry['pdbk'] = $varPdbk;
// set pdbk and colour
- # @todo FIXME: Convoluted data flow
- # The redirect status and length is passed to getLinkColour via the LinkCache
- # Use formal parameters instead
$colours[$varPdbk] = Linker::getLinkColour( $variantTitle, $threshold );
$linkcolour_ids[$s->page_id] = $pdbk;
}
* @file
* @ingroup Parser
*/
+use MediaWiki\Linker\LinkRenderer;
+use MediaWiki\MediaWikiServices;
/**
* @defgroup Parser Parser
/** @var SectionProfiler */
protected $mProfiler;
+ /**
+ * @var LinkRenderer
+ */
+ protected $mLinkRenderer;
+
/**
* @param array $conf
*/
return $this->mPreprocessor;
}
+ /**
+ * Get a LinkRenderer instance to make links with
+ *
+ * @since 1.28
+ * @return LinkRenderer
+ */
+ public function getLinkRenderer() {
+ if ( !$this->mLinkRenderer ) {
+ $this->mLinkRenderer = MediaWikiServices::getInstance()
+ ->getLinkRendererFactory()->create();
+ $this->mLinkRenderer->setStubThreshold(
+ $this->getOptions()->getStubThreshold()
+ );
+ }
+
+ return $this->mLinkRenderer;
+ }
+
/**
* Replaces all occurrences of HTML-style comments and the given tags
* in the text with a random marker and returns the next text. The output
$text = htmlspecialchars( $nt->getPrefixedText() );
}
- $link = Linker::linkKnown( $nt, "$prefix$text$inside", [], $query );
+ $link = $this->getLinkRenderer()->makeKnownLink(
+ $nt, new HtmlArmor( "$prefix$text$inside" ), [], $query
+ );
return $this->armorLinks( $link ) . $trail;
}