Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
4.17% covered (danger)
4.17%
2 / 48
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
AbuseFilterViewTools
4.17% covered (danger)
4.17%
2 / 48
50.00% covered (danger)
50.00%
1 / 2
18.08
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 show
0.00% covered (danger)
0.00%
0 / 46
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace MediaWiki\Extension\AbuseFilter\View;
4
5use HTMLForm;
6use IContextSource;
7use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager;
8use MediaWiki\Extension\AbuseFilter\EditBox\EditBoxBuilderFactory;
9use MediaWiki\Extension\AbuseFilter\EditBox\EditBoxField;
10use MediaWiki\Linker\LinkRenderer;
11use Xml;
12
13class AbuseFilterViewTools extends AbuseFilterView {
14
15    /**
16     * @var EditBoxBuilderFactory
17     */
18    private $boxBuilderFactory;
19
20    /**
21     * @param AbuseFilterPermissionManager $afPermManager
22     * @param EditBoxBuilderFactory $boxBuilderFactory
23     * @param IContextSource $context
24     * @param LinkRenderer $linkRenderer
25     * @param string $basePageName
26     * @param array $params
27     */
28    public function __construct(
29        AbuseFilterPermissionManager $afPermManager,
30        EditBoxBuilderFactory $boxBuilderFactory,
31        IContextSource $context,
32        LinkRenderer $linkRenderer,
33        string $basePageName,
34        array $params
35    ) {
36        parent::__construct( $afPermManager, $context, $linkRenderer, $basePageName, $params );
37        $this->boxBuilderFactory = $boxBuilderFactory;
38    }
39
40    /**
41     * Shows the page
42     */
43    public function show() {
44        $out = $this->getOutput();
45        $out->enableOOUI();
46        $out->addHelpLink( 'Extension:AbuseFilter/Rules format' );
47        $request = $this->getRequest();
48
49        if ( !$this->afPermManager->canUseTestTools( $this->getAuthority() ) ) {
50            // TODO: the message still refers to the old rights
51            $out->addWikiMsg( 'abusefilter-mustviewprivateoredit' );
52            return;
53        }
54
55        // Header
56        $out->addWikiMsg( 'abusefilter-tools-text' );
57
58        $boxBuilder = $this->boxBuilderFactory->newEditBoxBuilder( $this, $this->getAuthority(), $out );
59
60        // Expression evaluator
61        $formDesc = [
62            'rules' => [
63                'class' => EditBoxField::class,
64                'html' => $boxBuilder->buildEditBox(
65                    $request->getText( 'wpFilterRules' ),
66                    true,
67                    false,
68                    false
69                )
70            ]
71        ];
72
73        HTMLForm::factory( 'ooui', $formDesc, $this->getContext() )
74            ->setMethod( 'GET' )
75            ->setWrapperLegendMsg( 'abusefilter-tools-expr' )
76            ->setSubmitTextMsg( 'abusefilter-tools-submitexpr' )
77            ->setSubmitID( 'mw-abusefilter-submitexpr' )
78            ->setFooterHtml( Xml::element( 'pre', [ 'id' => 'mw-abusefilter-expr-result' ], ' ' ) )
79            ->prepareForm()
80            ->displayForm( false );
81
82        $out->addModules( 'ext.abuseFilter.tools' );
83
84        if ( $this->afPermManager->canEdit( $this->getAuthority() ) ) {
85            // Hacky little box to re-enable autoconfirmed if it got disabled
86            $formDescriptor = [
87                'RestoreAutoconfirmed' => [
88                    'label-message' => 'abusefilter-tools-reautoconfirm-user',
89                    'type' => 'user',
90                    'name' => 'wpReAutoconfirmUser',
91                    'id' => 'reautoconfirm-user',
92                    'infusable' => true
93                ],
94            ];
95            $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
96            $htmlForm->setWrapperLegendMsg( 'abusefilter-tools-reautoconfirm' )
97                ->setSubmitTextMsg( 'abusefilter-tools-reautoconfirm-submit' )
98                ->setSubmitName( 'wpReautoconfirmSubmit' )
99                ->setSubmitID( 'mw-abusefilter-reautoconfirmsubmit' )
100                ->prepareForm()
101                ->displayForm( false );
102        }
103    }
104}