return;
}
- global $wgContLang, $wgContentHandlerUseDB, $wgPageLanguageUseDB;
+ global $wgContLang;
$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 );
$linkcolour_ids = [];
# Generate query
- $queries = [];
+ $lb = new LinkBatch();
+ $lb->setCaller( __METHOD__ );
+
foreach ( $this->internals as $ns => $entries ) {
foreach ( $entries as $entry ) {
/** @var Title $title */
$colours[$pdbk] = 'new';
} else {
# Not in the link cache, add it to the query
- $queries[$ns][] = $title->getDBkey();
+ $lb->addObj( $title );
}
}
}
}
- if ( $queries ) {
- $where = [];
- foreach ( $queries as $ns => $pages ) {
- $where[] = $dbr->makeList(
- [
- 'page_namespace' => $ns,
- 'page_title' => array_unique( $pages ),
- ],
- LIST_AND
- );
- }
-
- $fields = [ 'page_id', 'page_namespace', 'page_title',
- 'page_is_redirect', 'page_len', 'page_latest' ];
-
- if ( $wgContentHandlerUseDB ) {
- $fields[] = 'page_content_model';
- }
- if ( $wgPageLanguageUseDB ) {
- $fields[] = 'page_lang';
- }
+ if ( !$lb->isEmpty() ) {
+ $fields = array_merge(
+ LinkCache::getSelectFields(),
+ [ 'page_namespace', 'page_title' ]
+ );
$res = $dbr->select(
'page',
$fields,
- $dbr->makeList( $where, LIST_OR ),
+ $lb->constructSet( 'page', $dbr ),
__METHOD__
);
$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 );
* @param array $colours
*/
protected function doVariants( &$colours ) {
- global $wgContLang, $wgContentHandlerUseDB, $wgPageLanguageUseDB;
+ global $wgContLang;
$linkBatch = new LinkBatch();
$variantMap = []; // maps $pdbkey_Variant => $keys (of link holders)
$output = $this->parent->getOutput();
}
$variantTitle = Title::makeTitle( $ns, $textVariant );
- if ( is_null( $variantTitle ) ) {
- continue;
- }
// Self-link checking for mixed/different variant titles. At this point, we
// already know the exact title does not exist, so the link cannot be to a
if ( !$linkBatch->isEmpty() ) {
// construct query
$dbr = wfGetDB( DB_SLAVE );
- $fields = [ 'page_id', 'page_namespace', 'page_title',
- 'page_is_redirect', 'page_len', 'page_latest' ];
-
- if ( $wgContentHandlerUseDB ) {
- $fields[] = 'page_content_model';
- }
- if ( $wgPageLanguageUseDB ) {
- $fields[] = 'page_lang';
- }
+ $fields = array_merge(
+ LinkCache::getSelectFields(),
+ [ 'page_namespace', 'page_title' ]
+ );
$varRes = $dbr->select( 'page',
$fields,
$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;
}