Aaron Schulz has submitted this change and it was merged.
Change subject: Change AbuseFilter to use UserCache instead of user_text fields
......................................................................
Change AbuseFilter to use UserCache instead of user_text fields
Change-Id: I51210ff91366a3a1610d34ca20e8966aaded89a0
---
M AbuseFilter.class.php
M Views/AbuseFilterViewDiff.php
M Views/AbuseFilterViewEdit.php
M Views/AbuseFilterViewHistory.php
M Views/AbuseFilterViewList.php
M Views/AbuseFilterViewRevert.php
M api/ApiQueryAbuseFilters.php
M api/ApiQueryAbuseLog.php
M special/SpecialAbuseLog.php
9 files changed, 95 insertions(+), 32 deletions(-)
Approvals:
Aaron Schulz: Verified; Looks good to me, approved
jenkins-bot: Checked
diff --git a/AbuseFilter.class.php b/AbuseFilter.class.php
index cb4daa8..4a57d46 100644
--- a/AbuseFilter.class.php
+++ b/AbuseFilter.class.php
@@ -945,6 +945,13 @@
$local_log_ids = array();
global $wgAbuseFilterNotifications,
$wgAbuseFilterNotificationsPrivate;
+
+ $userIds = array();
+ foreach ( $log_rows as $index => $data ) {
+ $userIds[] = $data['afl_user'];
+ }
+ UserCache::singleton()->doQuery( $userIds, array(), __METHOD__
);
+
foreach ( $log_rows as $index => $data ) {
$data['afl_var_dump'] = $var_dump;
$data['afl_id'] = $dbw->nextSequenceValue(
'abuse_filter_log_afl_id_seq' );
@@ -959,7 +966,7 @@
// Construct a user object
$user = new User();
$user->setId( $data['afl_user'] );
- $user->setName( $data['afl_user_text'] );
+ $user->setName(
UserCache::singleton()->getUserName( $data['afl_user'], $data['afl_user_text']
) );
$entry->setPerformer( $user );
// Set action target
$entry->setTarget( Title::makeTitle(
$data['afl_namespace'], $data['afl_title'] ) );
diff --git a/Views/AbuseFilterViewDiff.php b/Views/AbuseFilterViewDiff.php
index 6382dba..af530d0 100644
--- a/Views/AbuseFilterViewDiff.php
+++ b/Views/AbuseFilterViewDiff.php
@@ -185,7 +185,7 @@
'meta' => array(
'history_id' => $row->afh_id,
'modified_by' => $row->afh_user,
- 'modified_by_text' => $row->afh_user_text,
+ 'modified_by_text' =>
UserCache::singleton()->getUserName( $row->afh_user, $row->afh_user_text ),
'modified' => $row->afh_timestamp,
),
'info' => array(
diff --git a/Views/AbuseFilterViewEdit.php b/Views/AbuseFilterViewEdit.php
index 41c0ab1..7efcb33 100644
--- a/Views/AbuseFilterViewEdit.php
+++ b/Views/AbuseFilterViewEdit.php
@@ -477,10 +477,11 @@
)
);
// Last modification details
+ $userName = UserCache::singleton()->getUserName(
$row->af_user, $row->af_user_text );
+
$userLink =
- Linker::userLink( $row->af_user,
$row->af_user_text ) .
- Linker::userToolLinks( $row->af_user,
$row->af_user_text );
- $userName = $row->af_user_text;
+ Linker::userLink( $row->af_user, $userName ) .
+ Linker::userToolLinks( $row->af_user, $userName
);
$fields['abusefilter-edit-lastmod'] =
$this->msg( 'abusefilter-edit-lastmod-text' )
->rawParams(
diff --git a/Views/AbuseFilterViewHistory.php b/Views/AbuseFilterViewHistory.php
index 5ab50eb..bdeb222 100644
--- a/Views/AbuseFilterViewHistory.php
+++ b/Views/AbuseFilterViewHistory.php
@@ -115,6 +115,15 @@
return $headers;
}
+ function doBatchLookups() {
+ $userIds = array();
+ foreach ( $this->mResult as $row ) {
+ $userIds[] = $row->afh_user;
+ }
+
+ UserCache::singleton()->doQuery( $userIds, array( 'userpage',
'usertalk' ), __METHOD__ );
+ }
+
function formatValue( $name, $value ) {
$lang = $this->getLanguage();
@@ -130,9 +139,10 @@
$formatted = Linker::link( $title,
$lang->timeanddate( $row->afh_timestamp, true ) );
break;
case 'afh_user_text':
+ $name = UserCache::singleton()->getUserName(
$row->afh_user, $row->afh_user_text );
$formatted =
- Linker::userLink( $row->afh_user,
$row->afh_user_text ) . ' ' .
- Linker::userToolLinks( $row->afh_user,
$row->afh_user_text );
+ Linker::userLink( $row->afh_user, $name
) . ' ' .
+ Linker::userToolLinks( $row->afh_user,
$name );
break;
case 'afh_public_comments':
$formatted = htmlspecialchars( $value,
ENT_QUOTES, 'UTF-8', false );
diff --git a/Views/AbuseFilterViewList.php b/Views/AbuseFilterViewList.php
index f294e72..07a0ff9 100644
--- a/Views/AbuseFilterViewList.php
+++ b/Views/AbuseFilterViewList.php
@@ -225,6 +225,17 @@
return $headers;
}
+ function doBatchLookups() {
+ $this->mResult->seek( 0 );
+
+ $userIds = array();
+ foreach ( $this->mResult as $row ) {
+ $userIds[] = $row->af_user;
+ }
+
+ UserCache::singleton()->doQuery( $userIds, array( 'userpage',
'usertalk' ), __METHOD__ );
+ }
+
function formatValue( $name, $value ) {
$lang = $this->getLanguage();
$row = $this->mCurrentRow;
@@ -278,22 +289,22 @@
}
return $link;
case 'af_timestamp':
+ $name = UserCache::singleton()->getUserName(
$row->af_user, $row->af_user_text );
$userLink =
Linker::userLink(
$row->af_user,
- $row->af_user_text
+ $name
) .
Linker::userToolLinks(
$row->af_user,
- $row->af_user_text
+ $name
);
- $user = $row->af_user_text;
return $this->msg(
'abusefilter-edit-lastmod-text' )
->rawParams( $lang->timeanddate(
$value, true ),
$userLink,
$lang->date( $value, true ),
$lang->time( $value, true ),
- $user
+ $name
)->parse();
case 'af_group':
return AbuseFilter::nameGroup( $value );
@@ -377,10 +388,9 @@
}
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->timeanddate( $value, true ),
UserCache::singleton()->getUserName( $row->af_user, $row->af_user_text )
)->parse();
case 'af_group':
// If this is global, local name probably
doesn't exist, but try
diff --git a/Views/AbuseFilterViewRevert.php b/Views/AbuseFilterViewRevert.php
index 9d5791e..a0e6045 100644
--- a/Views/AbuseFilterViewRevert.php
+++ b/Views/AbuseFilterViewRevert.php
@@ -120,8 +120,9 @@
// Database query.
$res = $dbr->select( 'abuse_filter_log', '*', $conds,
__METHOD__ );
- $results = array();
- foreach( $res as $row ) {
+ $userIds = array();
+ $resultRows = array();
+ foreach ( $res as $row ) {
// Don't revert if there was no action, or the action
was global
if ( !$row->afl_actions || $row->afl_wiki != null ) {
continue;
@@ -131,18 +132,25 @@
$reversibleActions = array( 'block',
'blockautopromote', 'degroup' );
$currentReversibleActions = array_intersect( $actions,
$reversibleActions );
if ( count( $currentReversibleActions ) ) {
- $results[] = array(
- 'id' => $row->afl_id,
- 'actions' => $currentReversibleActions,
- 'user' => $row->afl_user_text,
- 'userid' => $row->afl_user,
- 'vars' => AbuseFilter::loadVarDump(
$row->afl_var_dump ),
- 'title' => Title::makeTitle(
$row->afl_namespace, $row->afl_title ),
- 'action' => $row->afl_action,
- 'timestamp' => $row->afl_timestamp
- );
+ $resultRows[] = $row;
+ $userIds[] = $row->afl_user;
}
}
+ UserCache::singleton()->doQuery( $userIds, array(), __METHOD__
);
+
+ $results = array();
+ foreach ( $resultRows as $row ) {
+ $results[] = array(
+ 'id' => $row->afl_id,
+ 'actions' => $currentReversibleActions,
+ 'user' => UserCache::singleton()->getUserName(
$row->afl_user, $row->afl_user_text ),
+ 'userid' => $row->afl_user,
+ 'vars' => AbuseFilter::loadVarDump(
$row->afl_var_dump ),
+ 'title' => Title::makeTitle(
$row->afl_namespace, $row->afl_title ),
+ 'action' => $row->afl_action,
+ 'timestamp' => $row->afl_timestamp
+ );
+ }
return $results;
}
diff --git a/api/ApiQueryAbuseFilters.php b/api/ApiQueryAbuseFilters.php
index 76c8792..f2206eb 100644
--- a/api/ApiQueryAbuseFilters.php
+++ b/api/ApiQueryAbuseFilters.php
@@ -67,7 +67,7 @@
$this->addFieldsIf( 'af_pattern', $fld_pattern );
$this->addFieldsIf( 'af_actions', $fld_actions );
$this->addFieldsIf( 'af_comments', $fld_comments );
- $this->addFieldsIf( 'af_user_text', $fld_user );
+ $this->addFieldsIf( array( 'af_user', 'af_user_text' ),
$fld_user );
$this->addFieldsIf( 'af_timestamp', $fld_time );
$this->addOption( 'LIMIT', $params['limit'] + 1 );
@@ -96,6 +96,14 @@
$showhidden = $user->isAllowed( 'abusefilter-modify' );
+ if ( $fld_user ) {
+ $userIds = array();
+ foreach ( $res as $row ) {
+ $userIds[] = $row->af_user;
+ }
+ UserCache::singleton()->doQuery( $userIds, array(),
__METHOD__ );
+ }
+
$count = 0;
foreach ( $res as $row ) {
if ( ++$count > $params['limit'] ) {
@@ -123,7 +131,7 @@
$entry['comments'] = $row->af_comments;
}
if ( $fld_user ) {
- $entry['lasteditor'] = $row->af_user_text;
+ $entry['lasteditor'] =
UserCache::singleton()->getUserName( $row->af_user, $row->af_user_text );
}
if ( $fld_time ) {
$ts = new MWTimestamp( $row->af_timestamp );
diff --git a/api/ApiQueryAbuseLog.php b/api/ApiQueryAbuseLog.php
index ada0564..63d8295 100644
--- a/api/ApiQueryAbuseLog.php
+++ b/api/ApiQueryAbuseLog.php
@@ -84,7 +84,7 @@
$this->addFields( 'afl_deleted' );
$this->addFields( 'afl_filter' );
$this->addFieldsIf( 'afl_id', $fld_ids );
- $this->addFieldsIf( 'afl_user_text', $fld_user );
+ $this->addFieldsIf( array( 'afl_user', 'afl_user_text' ),
$fld_user );
$this->addFieldsIf( 'afl_ip', $fld_ip );
$this->addFieldsIf( array( 'afl_namespace', 'afl_title' ),
$fld_title );
$this->addFieldsIf( 'afl_action', $fld_action );
@@ -120,6 +120,12 @@
}
$res = $this->select( __METHOD__ );
+ $userIds = array();
+ foreach ( $res as $row ) {
+ $userIds[] = $row->afl_user;
+ }
+ UserCache::singleton()->doQuery( $userIds, array(), __METHOD__
);
+
$count = 0;
foreach ( $res as $row ) {
if ( ++$count > $params['limit'] ) {
@@ -145,7 +151,7 @@
$entry['filter'] = $row->af_public_comments;
}
if ( $fld_user ) {
- $entry['user'] = $row->afl_user_text;
+ $entry['user'] =
UserCache::singleton()->getUserName( $row->afl_user, $row->afl_user_text );
}
if ( $fld_ip ) {
$entry['ip'] = $row->afl_ip;
diff --git a/special/SpecialAbuseLog.php b/special/SpecialAbuseLog.php
index 1de7254..555e5ea 100644
--- a/special/SpecialAbuseLog.php
+++ b/special/SpecialAbuseLog.php
@@ -403,6 +403,17 @@
return $wgUser->isAllowed( 'abusefilter-hidden-log' );
}
+ function doBatchLookups() {
+ $this->mResult->seek( 0 );
+
+ $userIds = array();
+ foreach ( $this->mResult as $row ) {
+ $userIds[] = $row->afl_user;
+ }
+
+ UserCache::singleton()->doQuery( $userIds, array( 'userpage',
'usertalk' ), __METHOD__ );
+ }
+
/**
* @param $row
* @param $li bool
@@ -442,12 +453,14 @@
}
}
+ $name = UserCache::singleton()->getUserName( $row->afl_user,
$row->afl_user_text );
+
if ( !$row->afl_wiki ) {
// Local user
- $userLink = Linker::userLink( $row->afl_user,
$row->afl_user_text ) .
- Linker::userToolLinks( $row->afl_user,
$row->afl_user_text, true );
+ $userLink = Linker::userLink( $row->afl_user, $name ) .
+ Linker::userToolLinks( $row->afl_user,
$name, true );
} else {
- $userLink = WikiMap::foreignUserLink( $row->afl_wiki,
$row->afl_user_text );
+ $userLink = WikiMap::foreignUserLink( $row->afl_wiki,
$name );
$userLink .= ' (' . WikiMap::getWikiName(
$row->afl_wiki ) . ')';
}
--
To view, visit https://gerrit.wikimedia.org/r/34032
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I51210ff91366a3a1610d34ca20e8966aaded89a0
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/AbuseFilter
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>
Gerrit-Reviewer: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Alex Monk <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits