diff options
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php')
-rw-r--r-- | www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php b/www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php new file mode 100644 index 00000000..36c84a01 --- /dev/null +++ b/www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php @@ -0,0 +1,70 @@ +<?php + +/** + * Class to build paginated filter list for wikis using global abuse filters + */ +class GlobalAbuseFilterPager extends AbuseFilterPager { + function __construct( $page, $conds, $linkRenderer ) { + parent::__construct( $page, $conds, $linkRenderer, [ '', 'LIKE' ] ); + global $wgAbuseFilterCentralDB; + $this->mDb = wfGetDB( DB_REPLICA, [], $wgAbuseFilterCentralDB ); + } + + function formatValue( $name, $value ) { + $lang = $this->getLanguage(); + $row = $this->mCurrentRow; + + switch ( $name ) { + case 'af_id': + return $lang->formatNum( intval( $value ) ); + case 'af_public_comments': + return $this->getOutput()->parseInline( $value ); + case 'af_actions': + $actions = explode( ',', $value ); + $displayActions = []; + foreach ( $actions as $action ) { + $displayActions[] = AbuseFilter::getActionDisplay( $action ); + } + return htmlspecialchars( $lang->commaList( $displayActions ) ); + case 'af_enabled': + $statuses = []; + if ( $row->af_deleted ) { + $statuses[] = $this->msg( 'abusefilter-deleted' )->parse(); + } elseif ( $row->af_enabled ) { + $statuses[] = $this->msg( 'abusefilter-enabled' )->parse(); + } else { + $statuses[] = $this->msg( 'abusefilter-disabled' )->parse(); + } + if ( $row->af_global ) { + $statuses[] = $this->msg( 'abusefilter-status-global' )->parse(); + } + + return $lang->commaList( $statuses ); + case 'af_hidden': + $msg = $value ? 'abusefilter-hidden' : 'abusefilter-unhidden'; + return $this->msg( $msg )->parse(); + case 'af_hit_count': + // If the rule is hidden, don't show it, even to priviledged local admins + if ( $row->af_hidden ) { + return ''; + } + return $this->msg( 'abusefilter-hitcount' )->numParams( $value )->parse(); + case 'af_timestamp': + $user = $row->af_user_text; + return $this->msg( + 'abusefilter-edit-lastmod-text', + $lang->timeanddate( $value, true ), + $user, + $lang->date( $value, true ), + $lang->time( $value, true ), + $user + )->parse(); + case 'af_group': + // If this is global, local name probably doesn't exist, but try + return AbuseFilter::nameGroup( $value ); + break; + default: + throw new MWException( "Unknown row type $name!" ); + } + } +} |