summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php')
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/pagers/GlobalAbuseFilterPager.php70
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!" );
+ }
+ }
+}