mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-09-24 10:48:17 +00:00
Merge "Change AbuseFilter to use UserCache instead of user_text fields"
This commit is contained in:
commit
05b38eb613
|
@ -956,6 +956,13 @@ class AbuseFilter {
|
|||
|
||||
$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' );
|
||||
|
@ -970,7 +977,7 @@ class AbuseFilter {
|
|||
// 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'] ) );
|
||||
|
|
|
@ -185,7 +185,7 @@ class AbuseFilterViewDiff extends AbuseFilterView {
|
|||
'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(
|
||||
|
|
|
@ -477,10 +477,11 @@ class AbuseFilterViewEdit extends AbuseFilterView {
|
|||
)
|
||||
);
|
||||
// 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(
|
||||
|
|
|
@ -115,6 +115,15 @@ class AbuseFilterHistoryPager extends TablePager {
|
|||
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 @@ class AbuseFilterHistoryPager extends TablePager {
|
|||
$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 );
|
||||
|
|
|
@ -225,6 +225,17 @@ class AbuseFilterPager extends TablePager {
|
|||
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 @@ class AbuseFilterPager extends TablePager {
|
|||
}
|
||||
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 @@ class GlobalAbuseFilterPager extends AbuseFilterPager {
|
|||
}
|
||||
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
|
||||
|
|
|
@ -120,8 +120,9 @@ class AbuseFilterViewRevert extends AbuseFilterView {
|
|||
// 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 @@ class AbuseFilterViewRevert extends AbuseFilterView {
|
|||
$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;
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ class ApiQueryAbuseFilters extends ApiQueryBase {
|
|||
$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 @@ class ApiQueryAbuseFilters extends ApiQueryBase {
|
|||
|
||||
$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 @@ class ApiQueryAbuseFilters extends ApiQueryBase {
|
|||
$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 );
|
||||
|
|
|
@ -84,7 +84,7 @@ class ApiQueryAbuseLog extends ApiQueryBase {
|
|||
$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 );
|
||||
|
@ -142,6 +142,12 @@ class ApiQueryAbuseLog extends ApiQueryBase {
|
|||
}
|
||||
$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'] ) {
|
||||
|
@ -167,7 +173,7 @@ class ApiQueryAbuseLog extends ApiQueryBase {
|
|||
$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;
|
||||
|
|
|
@ -406,6 +406,17 @@ class SpecialAbuseLog extends SpecialPage {
|
|||
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
|
||||
|
@ -445,12 +456,14 @@ class SpecialAbuseLog extends SpecialPage {
|
|||
}
|
||||
}
|
||||
|
||||
$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 ) . ')';
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue