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