Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
DumpNamespaceFilter
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 2
42
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
30
 pass
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
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
12namespace MediaWiki\Export;
13
14use InvalidArgumentException;
15
16/**
17 * @ingroup Dump
18 */
19class 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 */
81class_alias( DumpNamespaceFilter::class, 'DumpNamespaceFilter' );