$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 ) );
}
);
}
+ 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