From e8608a5c8fb51024e88cfda6089e637db366139d Mon Sep 17 00:00:00 2001 From: Petr Pchelko Date: Tue, 6 Aug 2019 12:23:21 -0700 Subject: [PATCH] ChangesListSpecialPage: skip associated for namespaces that don't have one. Bug: T229954 Change-Id: Ic69989c3ac60a86d58842ec34dc9e883988d785f --- includes/specialpage/ChangesListSpecialPage.php | 13 +++++++++---- .../specialpage/ChangesListSpecialPageTest.php | 13 +++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index f9b4542856..bbbd6a8585 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -1504,12 +1504,17 @@ abstract class ChangesListSpecialPage extends SpecialPage { $namespaces = explode( ';', $opts[ 'namespace' ] ); if ( $opts[ 'associated' ] ) { + $namespaceInfo = MediaWikiServices::getInstance()->getNamespaceInfo(); $associatedNamespaces = array_map( - function ( $ns ) { - return MediaWikiServices::getInstance()->getNamespaceInfo()-> - getAssociated( $ns ); + function ( $ns ) use ( $namespaceInfo ){ + return $namespaceInfo->getAssociated( $ns ); }, - $namespaces + array_filter( + $namespaces, + function ( $ns ) use ( $namespaceInfo ) { + return $namespaceInfo->hasTalkNamespace( $ns ); + } + ) ); $namespaces = array_unique( array_merge( $namespaces, $associatedNamespaces ) ); } diff --git a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php index 968db42816..dff18ca286 100644 --- a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php +++ b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php @@ -169,6 +169,19 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase ); } + public function testRcNsFilterAssociatedSpecial() { + $this->assertConditions( + [ # expected + "rc_namespace IN ('-1','0','1')", + ], + [ + 'namespace' => '1;-1', + 'associated' => 1, + ], + "rc conditions with associated and special namespace" + ); + } + public function testRcNsFilterMultipleAssociatedInvert() { $this->assertConditions( [ # expected -- 2.20.1