X-Git-Url: https://git.cyclocoop.org/%28%28?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryAllImages.php;h=6f497b199640d26d8173d67a5481afb033adc74e;hb=28cb34cfae46c29033f10a3b192ec3e5bde3f6b7;hp=ef6bb6ad99434dcb1e0c3e0c351fc4366b46a48d;hpb=31a3445e1cdbaab82cace4c8a26de798fb385858;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryAllImages.php b/includes/api/ApiQueryAllImages.php index ef6bb6ad99..6f497b1996 100644 --- a/includes/api/ApiQueryAllImages.php +++ b/includes/api/ApiQueryAllImages.php @@ -26,6 +26,8 @@ * @file */ +use Wikimedia\Rdbms\IDatabase; + /** * Query module to enumerate all available pages. * @@ -85,12 +87,15 @@ 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' ) { @@ -189,7 +194,11 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { // Image filters if ( !is_null( $params['user'] ) ) { - $this->addWhereFld( 'img_user_text', $params['user'] ); + if ( $userId ) { + $this->addWhereFld( 'img_user', $userId ); + } else { + $this->addWhereFld( 'img_user_text', $params['user'] ); + } } if ( $params['filterbots'] != 'all' ) { $this->addTables( 'user_groups' ); @@ -198,9 +207,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { [ 'ug_group' => User::getGroupsWithPermission( 'bot' ), 'ug_user = img_user', - $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? - '1' : - 'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() ) + 'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() ) ] ] ] ); $groupCond = ( $params['filterbots'] == 'nobots' ? 'NULL' : 'NOT NULL' ); @@ -269,7 +276,11 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { if ( $params['sort'] == 'timestamp' ) { $this->addOption( 'ORDER BY', 'img_timestamp' . $sortFlag ); if ( !is_null( $params['user'] ) ) { - $this->addOption( 'USE INDEX', [ 'image' => 'img_usertext_timestamp' ] ); + 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' ] ); } @@ -417,6 +428,6 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { } public function getHelpUrls() { - return 'https://www.mediawiki.org/wiki/API:Allimages'; + return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Allimages'; } }