X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialUnwatchedpages.php;h=fea7e2160da1d184b8a8b3a615dfa0b89ed0df4d;hb=212f96ec2a4f06becb4a51efe411664bd0abf856;hp=df57744b3ae3f4c6e29a55f0d0852258c3058c21;hpb=57eaa2bf04ce1b48bd89c10defe4de5b7d31f047;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialUnwatchedpages.php b/includes/specials/SpecialUnwatchedpages.php index df57744b3a..fea7e2160d 100644 --- a/includes/specials/SpecialUnwatchedpages.php +++ b/includes/specials/SpecialUnwatchedpages.php @@ -24,6 +24,9 @@ * @author Ævar Arnfjörð Bjarmason */ +use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\IDatabase; + /** * A special page that displays a list of pages that are not on anyones watchlist. * @@ -43,7 +46,28 @@ class UnwatchedpagesPage extends QueryPage { 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' => [ @@ -54,7 +78,7 @@ class UnwatchedpagesPage extends QueryPage { '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', @@ -95,10 +119,12 @@ class UnwatchedpagesPage extends QueryPage { $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' ] );