/** @var CommentStore */
private $commentStore;
+ /** @var ActorMigration */
+ private $actorMigration;
+
public function __construct(
LoadBalancer $loadBalancer,
- CommentStore $commentStore
+ CommentStore $commentStore,
+ ActorMigration $actorMigration
) {
$this->loadBalancer = $loadBalancer;
$this->commentStore = $commentStore;
+ $this->actorMigration = $actorMigration;
}
/**
if ( in_array( self::INCLUDE_TAGS, $options['includeFields'] ) ) {
$tables[] = 'tag_summary';
}
+ if ( in_array( self::INCLUDE_USER, $options['includeFields'] ) ||
+ in_array( self::INCLUDE_USER_ID, $options['includeFields'] ) ||
+ in_array( self::FILTER_ANON, $options['filters'] ) ||
+ in_array( self::FILTER_NOT_ANON, $options['filters'] ) ||
+ array_key_exists( 'onlyByUser', $options ) || array_key_exists( 'notByUser', $options )
+ ) {
+ $tables += $this->actorMigration->getJoin( 'rc_user' )['tables'];
+ }
return $tables;
}
$fields = array_merge( $fields, [ 'rc_type', 'rc_minor', 'rc_bot' ] );
}
if ( in_array( self::INCLUDE_USER, $options['includeFields'] ) ) {
- $fields[] = 'rc_user_text';
+ $fields['rc_user_text'] = $this->actorMigration->getJoin( 'rc_user' )['fields']['rc_user_text'];
}
if ( in_array( self::INCLUDE_USER_ID, $options['includeFields'] ) ) {
- $fields[] = 'rc_user';
+ $fields['rc_user'] = $this->actorMigration->getJoin( 'rc_user' )['fields']['rc_user'];
}
if ( in_array( self::INCLUDE_COMMENT, $options['includeFields'] ) ) {
$fields += $this->commentStore->getJoin( 'rc_comment' )['fields'];
}
if ( in_array( self::FILTER_ANON, $options['filters'] ) ) {
- $conds[] = 'rc_user = 0';
+ $conds[] = $this->actorMigration->isAnon(
+ $this->actorMigration->getJoin( 'rc_user' )['fields']['rc_user']
+ );
} elseif ( in_array( self::FILTER_NOT_ANON, $options['filters'] ) ) {
- $conds[] = 'rc_user != 0';
+ $conds[] = $this->actorMigration->isNotAnon(
+ $this->actorMigration->getJoin( 'rc_user' )['fields']['rc_user']
+ );
}
if ( $user->useRCPatrol() || $user->useNPPatrol() ) {
$conds = [];
if ( array_key_exists( 'onlyByUser', $options ) ) {
- $conds['rc_user_text'] = $options['onlyByUser'];
+ $byUser = User::newFromName( $options['onlyByUser'], false );
+ $conds[] = $this->actorMigration->getWhere( $db, 'rc_user', $byUser )['conds'];
} elseif ( array_key_exists( 'notByUser', $options ) ) {
- $conds[] = 'rc_user_text != ' . $db->addQuotes( $options['notByUser'] );
+ $byUser = User::newFromName( $options['notByUser'], false );
+ $conds[] = 'NOT(' . $this->actorMigration->getWhere( $db, 'rc_user', $byUser )['conds'] . ')';
}
// Avoid brute force searches (T19342)
if ( in_array( self::INCLUDE_TAGS, $options['includeFields'] ) ) {
$joinConds['tag_summary'] = [ 'LEFT JOIN', [ 'rc_id=ts_rc_id' ] ];
}
+ if ( in_array( self::INCLUDE_USER, $options['includeFields'] ) ||
+ in_array( self::INCLUDE_USER_ID, $options['includeFields'] ) ||
+ in_array( self::FILTER_ANON, $options['filters'] ) ||
+ in_array( self::FILTER_NOT_ANON, $options['filters'] ) ||
+ array_key_exists( 'onlyByUser', $options ) || array_key_exists( 'notByUser', $options )
+ ) {
+ $joinConds += $this->actorMigration->getJoin( 'rc_user' )['joins'];
+ }
return $joinConds;
}