From 92fa43d9c2a5ae6b6a2147cfe1a655a7b315a8f5 Mon Sep 17 00:00:00 2001 From: Roan Kattouw Date: Wed, 5 Jul 2017 16:41:36 -0700 Subject: [PATCH] ChangesListSpecialPage: Don't short-circuit the ChangesList, instead format zero rows Short-circuiting the ChangesList causes bugs, because it causes ChangesList::beginRecentChangesList() to be bypassed. This function adds important styles and RL modules, especially when enhanced RC is enabled. Instead, fake an empty result and let the ChangesList format it. This will add styles and modules but otherwise produce no output. (It does produce an empty div, but the idiosyncratic way in which the subclasses deal with empty results causes that div not to be output.) Bug: T169835 Change-Id: Ib831c781f4fe91eef787aef3d17e71780be9da51 --- includes/specialpage/ChangesListSpecialPage.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 0be06461f4..eb431a495a 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -22,6 +22,7 @@ */ use MediaWiki\Logger\LoggerFactory; use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\FakeResultWrapper; use Wikimedia\Rdbms\IDatabase; /** @@ -518,13 +519,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { $rows = $this->getRows(); $opts = $this->getOptions(); if ( $rows === false ) { - if ( !$this->including() ) { - $this->doHeader( $opts, 0 ); - $this->outputNoResults(); - $this->getOutput()->setStatusCode( 404 ); - } - - return; + $rows = new FakeResultWrapper( [] ); } $batch = new LinkBatch; -- 2.20.1