return false;
}
+ /**
+ * Pre-cache page existence to speed up link generation
+ *
+ * @param IDatabase $db
+ * @param ResultWrapper $res
+ */
+ public function preprocessResults( $db, $res ) {
+ if ( !$res->numRows() ) {
+ return;
+ }
+
+ $batch = new LinkBatch();
+ foreach ( $res as $row ) {
+ $batch->add( $row->namespace, $row->title );
+ }
+ $batch->execute();
+
+ $res->seek( 0 );
+ }
+
public function getQueryInfo() {
+ $dbr = wfGetDB( DB_REPLICA );
return [
'tables' => [ 'page', 'watchlist' ],
'fields' => [
'conds' => [
'wl_title IS NULL',
'page_is_redirect' => 0,
- "page_namespace != '" . NS_MEDIAWIKI . "'"
+ 'page_namespace != ' . $dbr->addQuotes( NS_MEDIAWIKI ),
],
'join_conds' => [ 'watchlist' => [
'LEFT JOIN', [ 'wl_title = page_title',
$text = $wgContLang->convert( $nt->getPrefixedText() );
- $plink = Linker::linkKnown( $nt, htmlspecialchars( $text ) );
- $wlink = Linker::linkKnown(
+ $linkRenderer = $this->getLinkRenderer();
+
+ $plink = $linkRenderer->makeKnownLink( $nt, $text );
+ $wlink = $linkRenderer->makeKnownLink(
$nt,
- $this->msg( 'watch' )->escaped(),
+ $this->msg( 'watch' )->text(),
[ 'class' => 'mw-watch-link' ],
[ 'action' => 'watch' ]
);