X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryAllImages.php;h=14f1cc4f845f769d54bae79a303ae7767f1ea84e;hb=a6b9f44d2d7a430afc4bd78bb9a5b1e271b6abe7;hp=250bee667ff19309a4d5033d69e401e1273d4b9d;hpb=841e78dfbc92270a59062f152f29c3c543ab619f;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryAllImages.php b/includes/api/ApiQueryAllImages.php index 250bee667f..14f1cc4f84 100644 --- a/includes/api/ApiQueryAllImages.php +++ b/includes/api/ApiQueryAllImages.php @@ -3,8 +3,6 @@ /** * API for MediaWiki 1.12+ * - * Created on Mar 16, 2008 - * * Copyright © 2008 Vasiliev Victor vasilvv@gmail.com, * based on ApiQueryAllPages.php * @@ -87,13 +85,14 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { $db = $this->getDB(); $params = $this->extractRequestParams(); - $userId = !is_null( $params['user'] ) ? User::idFromName( $params['user'] ) : null; // Table and return fields - $this->addTables( 'image' ); - $prop = array_flip( $params['prop'] ); - $this->addFields( LocalFile::selectFields() ); + + $fileQuery = LocalFile::getQueryInfo(); + $this->addTables( $fileQuery['tables'] ); + $this->addFields( $fileQuery['fields'] ); + $this->addJoinConds( $fileQuery['joins'] ); $ascendingOrder = true; if ( $params['dir'] == 'descending' || $params['dir'] == 'older' ) { @@ -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 ); }