/**
* API for MediaWiki 1.12+
*
- * Created on Mar 16, 2008
- *
* Copyright © 2008 Vasiliev Victor vasilvv@gmail.com,
* based on ApiQueryAllPages.php
*
$db = $this->getDB();
$params = $this->extractRequestParams();
- $userId = !is_null( $params['user'] ) ? User::idFromName( $params['user'] ) : null;
// Table and return fields
$prop = array_flip( $params['prop'] );
// Image filters
if ( !is_null( $params['user'] ) ) {
- if ( $userId ) {
- $this->addWhereFld( 'img_user', $userId );
- } else {
- $this->addWhereFld( 'img_user_text', $params['user'] );
- }
+ $actorQuery = ActorMigration::newMigration()
+ ->getWhere( $db, 'img_user', User::newFromName( $params['user'], false ) );
+ $this->addTables( $actorQuery['tables'] );
+ $this->addJoinConds( $actorQuery['joins'] );
+ $this->addWhere( $actorQuery['conds'] );
}
if ( $params['filterbots'] != 'all' ) {
+ $actorQuery = ActorMigration::newMigration()->getJoin( 'img_user' );
+ $this->addTables( $actorQuery['tables'] );
$this->addTables( 'user_groups' );
+ $this->addJoinConds( $actorQuery['joins'] );
$this->addJoinConds( [ 'user_groups' => [
'LEFT JOIN',
[
'ug_group' => User::getGroupsWithPermission( 'bot' ),
- 'ug_user = img_user',
+ 'ug_user = ' . $actorQuery['fields']['img_user'],
'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
]
] ] );
}
if ( $params['sort'] == 'timestamp' ) {
$this->addOption( 'ORDER BY', 'img_timestamp' . $sortFlag );
- if ( !is_null( $params['user'] ) ) {
- if ( $userId ) {
- $this->addOption( 'USE INDEX', [ 'image' => 'img_user_timestamp' ] );
- } else {
- $this->addOption( 'USE INDEX', [ 'image' => 'img_usertext_timestamp' ] );
- }
- } else {
- $this->addOption( 'USE INDEX', [ 'image' => 'img_timestamp' ] );
- }
} else {
$this->addOption( 'ORDER BY', 'img_name' . $sortFlag );
}