Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
0.00% |
0 / 33 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
| DumpNamespaceFilter | |
0.00% |
0 / 32 |
|
0.00% |
0 / 2 |
42 | |
0.00% |
0 / 1 |
| __construct | |
0.00% |
0 / 30 |
|
0.00% |
0 / 1 |
30 | |||
| pass | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
| 1 | <?php |
| 2 | /** |
| 3 | * Dump output filter to include or exclude pages in a given set of namespaces. |
| 4 | * |
| 5 | * Copyright © 2003, 2005, 2006 Brooke Vibber <bvibber@wikimedia.org> |
| 6 | * https://www.mediawiki.org/ |
| 7 | * |
| 8 | * @license GPL-2.0-or-later |
| 9 | * @file |
| 10 | */ |
| 11 | |
| 12 | namespace MediaWiki\Export; |
| 13 | |
| 14 | use InvalidArgumentException; |
| 15 | |
| 16 | /** |
| 17 | * @ingroup Dump |
| 18 | */ |
| 19 | class DumpNamespaceFilter extends DumpFilter { |
| 20 | /** @var bool */ |
| 21 | public $invert = false; |
| 22 | |
| 23 | /** @var array */ |
| 24 | public $namespaces = []; |
| 25 | |
| 26 | /** |
| 27 | * @param DumpOutput &$sink |
| 28 | * @param string $param |
| 29 | */ |
| 30 | public function __construct( &$sink, $param ) { |
| 31 | parent::__construct( $sink ); |
| 32 | |
| 33 | $constants = [ |
| 34 | "NS_MAIN" => NS_MAIN, |
| 35 | "NS_TALK" => NS_TALK, |
| 36 | "NS_USER" => NS_USER, |
| 37 | "NS_USER_TALK" => NS_USER_TALK, |
| 38 | "NS_PROJECT" => NS_PROJECT, |
| 39 | "NS_PROJECT_TALK" => NS_PROJECT_TALK, |
| 40 | "NS_FILE" => NS_FILE, |
| 41 | "NS_FILE_TALK" => NS_FILE_TALK, |
| 42 | "NS_MEDIAWIKI" => NS_MEDIAWIKI, |
| 43 | "NS_MEDIAWIKI_TALK" => NS_MEDIAWIKI_TALK, |
| 44 | "NS_TEMPLATE" => NS_TEMPLATE, |
| 45 | "NS_TEMPLATE_TALK" => NS_TEMPLATE_TALK, |
| 46 | "NS_HELP" => NS_HELP, |
| 47 | "NS_HELP_TALK" => NS_HELP_TALK, |
| 48 | "NS_CATEGORY" => NS_CATEGORY, |
| 49 | "NS_CATEGORY_TALK" => NS_CATEGORY_TALK ]; |
| 50 | |
| 51 | if ( $param[0] == '!' ) { |
| 52 | $this->invert = true; |
| 53 | $param = substr( $param, 1 ); |
| 54 | } |
| 55 | |
| 56 | foreach ( explode( ',', $param ) as $key ) { |
| 57 | $key = trim( $key ); |
| 58 | if ( isset( $constants[$key] ) ) { |
| 59 | $ns = $constants[$key]; |
| 60 | $this->namespaces[$ns] = true; |
| 61 | } elseif ( is_numeric( $key ) ) { |
| 62 | $ns = intval( $key ); |
| 63 | $this->namespaces[$ns] = true; |
| 64 | } else { |
| 65 | throw new InvalidArgumentException( "Unrecognized namespace key '$key'\n" ); |
| 66 | } |
| 67 | } |
| 68 | } |
| 69 | |
| 70 | /** |
| 71 | * @param \stdClass $page |
| 72 | * @return bool |
| 73 | */ |
| 74 | protected function pass( $page ) { |
| 75 | $match = isset( $this->namespaces[$page->page_namespace] ); |
| 76 | return $this->invert xor $match; |
| 77 | } |
| 78 | } |
| 79 | |
| 80 | /** @deprecated class alias since 1.46 */ |
| 81 | class_alias( DumpNamespaceFilter::class, 'DumpNamespaceFilter' ); |