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