X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryAllImages.php;h=14f1cc4f845f769d54bae79a303ae7767f1ea84e;hb=27c61fb1e94da9114314468fd00bcf129ec064b6;hp=dde22d8208ffb3aecaa9ba0377c62fa3778d3364;hpb=8a4a8a8dcbaf454c9f64cd8b5ba90704d7721500;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryAllImages.php b/includes/api/ApiQueryAllImages.php index dde22d8208..14f1cc4f84 100644 --- a/includes/api/ApiQueryAllImages.php +++ b/includes/api/ApiQueryAllImages.php @@ -85,7 +85,6 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { $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'] ); @@ -192,19 +191,22 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { // 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() ) ] ] ] ); @@ -273,15 +275,6 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { } 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 ); }