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
AbuseLogHitFormatter
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 2
30
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getMessageParameters
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3namespace MediaWiki\Extension\AbuseFilter\LogFormatter;
4
5use MediaWiki\Extension\AbuseFilter\SpecsFormatter;
6use MediaWiki\Logging\LogEntry;
7use MediaWiki\Logging\LogFormatter;
8use MediaWiki\Message\Message;
9use MediaWiki\SpecialPage\SpecialPage;
10
11/**
12 * This class formats abuse log notifications.
13 *
14 * Uses logentry-abusefilter-hit
15 */
16class AbuseLogHitFormatter extends LogFormatter {
17
18    public function __construct(
19        LogEntry $entry,
20        private readonly SpecsFormatter $specsFormatter
21    ) {
22        parent::__construct( $entry );
23    }
24
25    /**
26     * @return array
27     */
28    protected function getMessageParameters() {
29        $entry = $this->entry->getParameters();
30        $linkRenderer = $this->getLinkRenderer();
31        $params = parent::getMessageParameters();
32
33        $filter_title = SpecialPage::getTitleFor( 'AbuseFilter', $entry['filter'] );
34        $filter_caption = $this->msg( 'abusefilter-log-detailedentry-local', $entry['filter'] )
35            ->text();
36        $log_title = SpecialPage::getTitleFor( 'AbuseLog', $entry['log'] );
37        $log_caption = $this->msg( 'abusefilter-log-detailslink' )->text();
38
39        $params[4] = $entry['action'];
40
41        if ( $this->plaintext ) {
42            $params[3] = '[[' . $filter_title->getPrefixedText() . '|' . $filter_caption . ']]';
43            $params[8] = '[[' . $log_title->getPrefixedText() . '|' . $log_caption . ']]';
44        } else {
45            $params[3] = Message::rawParam( $linkRenderer->makeLink(
46                $filter_title,
47                $filter_caption
48            ) );
49            $params[8] = Message::rawParam( $linkRenderer->makeLink(
50                $log_title,
51                $log_caption
52            ) );
53        }
54
55        $actions_takenRaw = $entry['actions'];
56        if ( !strlen( trim( $actions_takenRaw ) ) ) {
57            $actions_taken = $this->msg( 'abusefilter-log-noactions' );
58        } else {
59            $actions = explode( ',', $actions_takenRaw );
60            $displayActions = [];
61
62            $this->specsFormatter->setMessageLocalizer( $this->context );
63            foreach ( $actions as $action ) {
64                $displayActions[] = $this->specsFormatter->getActionDisplay( $action );
65            }
66            $actions_taken = $this->context->getLanguage()->commaList( $displayActions );
67        }
68        $params[5] = Message::rawParam( $actions_taken );
69
70        // Bad things happen if the numbers are not in correct order
71        ksort( $params );
72
73        return $params;
74    }
75}