Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
GlobalAbuseFilterPager
0.00% covered (danger)
0.00%
0 / 40
0.00% covered (danger)
0.00%
0 / 2
240
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 formatValue
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 1
210
1<?php
2
3namespace MediaWiki\Extension\AbuseFilter\Pager;
4
5use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager;
6use MediaWiki\Extension\AbuseFilter\CentralDBManager;
7use MediaWiki\Extension\AbuseFilter\FilterLookup;
8use MediaWiki\Extension\AbuseFilter\FilterUtils;
9use MediaWiki\Extension\AbuseFilter\SpecsFormatter;
10use MediaWiki\Extension\AbuseFilter\View\AbuseFilterViewList;
11use MediaWiki\Linker\LinkRenderer;
12
13/**
14 * Class to build paginated filter list for wikis using global abuse filters
15 */
16class GlobalAbuseFilterPager extends AbuseFilterPager {
17
18    public function __construct(
19        AbuseFilterViewList $page,
20        LinkRenderer $linkRenderer,
21        AbuseFilterPermissionManager $afPermManager,
22        SpecsFormatter $specsFormatter,
23        CentralDBManager $centralDBManager,
24        FilterLookup $filterLookup,
25        array $conds
26    ) {
27        // Set database before parent constructor to avoid setting it there
28        $this->mDb = $centralDBManager->getConnection( DB_REPLICA );
29        parent::__construct(
30            $page, $linkRenderer, null, $afPermManager, $specsFormatter,
31            $filterLookup, $conds, null, null
32        );
33    }
34
35    /**
36     * @param string $name
37     * @param string|null $value
38     * @return string
39     */
40    public function formatValue( $name, $value ) {
41        $lang = $this->getLanguage();
42        $row = $this->mCurrentRow;
43
44        switch ( $name ) {
45            case 'af_id':
46                return $lang->formatNum( intval( $value ) );
47            case 'af_public_comments':
48                return $this->getOutput()->parseInlineAsInterface( $value );
49            case 'af_enabled':
50                $statuses = [];
51                if ( $row->af_deleted ) {
52                    $statuses[] = $this->msg( 'abusefilter-deleted' )->parse();
53                } elseif ( $row->af_enabled ) {
54                    $statuses[] = $this->msg( 'abusefilter-enabled' )->parse();
55                } else {
56                    $statuses[] = $this->msg( 'abusefilter-disabled' )->parse();
57                }
58                if ( $row->af_global ) {
59                    $statuses[] = $this->msg( 'abusefilter-status-global' )->parse();
60                }
61
62                return $lang->commaList( $statuses );
63            case 'af_hit_count':
64                // If the rule is suppressed or hidden or protected, don't show it, even to privileged local admins
65                if (
66                    FilterUtils::isSuppressed( $row->af_hidden ) ||
67                    FilterUtils::isHidden( $row->af_hidden ) ||
68                    FilterUtils::isProtected( $row->af_hidden )
69                ) {
70                    return '';
71                }
72                return $this->msg( 'abusefilter-hitcount' )->numParams( $value )->parse();
73            case 'af_timestamp':
74                $user = $this->getUser();
75                return $this->msg(
76                    'abusefilter-edit-lastmod-text',
77                    $lang->userTimeAndDate( $value, $user ),
78                    $row->af_user_text,
79                    $lang->userDate( $value, $user ),
80                    $lang->userTime( $value, $user ),
81                    $row->af_user_text
82                )->parse();
83            case 'af_group':
84                // If this is global, local name probably doesn't exist, but try
85                return $this->specsFormatter->nameGroup( $value );
86            default:
87                return parent::formatValue( $name, $value );
88        }
89    }
90}