aboutsummaryrefslogtreecommitdiffstats
path: root/includes/filerepo/file/ArchivedFile.php
diff options
context:
space:
mode:
authorAmir Sarabadani <ladsgroup@gmail.com>2023-08-01 23:04:32 +0200
committerAmir Sarabadani <ladsgroup@gmail.com>2023-08-07 19:05:34 +0200
commite569aedde5fa83bda2f113d257125bb2ec8cc874 (patch)
tree15e2be28ce1667d3c5861830e6dbe1945034f75e /includes/filerepo/file/ArchivedFile.php
parentc57cdf427659744831d458ea7c18e69ad9ea43cc (diff)
downloadmediawikicore-e569aedde5fa83bda2f113d257125bb2ec8cc874.tar.gz
mediawikicore-e569aedde5fa83bda2f113d257125bb2ec8cc874.zip
Introduce FileSelectQueryBuilder
So much can be cleaned up with this Bug: T311866 Change-Id: Ia4d46679c540c731b2ae8da2f8022fd6f5b931a4
Diffstat (limited to 'includes/filerepo/file/ArchivedFile.php')
-rw-r--r--includes/filerepo/file/ArchivedFile.php51
1 files changed, 12 insertions, 39 deletions
diff --git a/includes/filerepo/file/ArchivedFile.php b/includes/filerepo/file/ArchivedFile.php
index 2f48ba76fa4e..0573f4e2da89 100644
--- a/includes/filerepo/file/ArchivedFile.php
+++ b/includes/filerepo/file/ArchivedFile.php
@@ -18,6 +18,7 @@
* @file
*/
+use MediaWiki\FileRepo\File\FileSelectQueryBuilder;
use MediaWiki\MediaWikiServices;
use MediaWiki\Permissions\Authority;
use MediaWiki\Revision\RevisionRecord;
@@ -25,6 +26,7 @@ use MediaWiki\Title\Title;
use MediaWiki\User\UserIdentity;
use Wikimedia\Rdbms\Blob;
use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\SelectQueryBuilder;
/**
* Deleted file in the 'filearchive' table.
@@ -233,15 +235,10 @@ class ArchivedFile {
if ( !$this->title || $this->title->getNamespace() === NS_FILE ) {
$this->dataLoaded = true; // set it here, to have also true on miss
$dbr = wfGetDB( DB_REPLICA );
- $fileQuery = self::getQueryInfo();
- $row = $dbr->selectRow(
- $fileQuery['tables'],
- $fileQuery['fields'],
- $conds,
- __METHOD__,
- [ 'ORDER BY' => 'fa_timestamp DESC' ],
- $fileQuery['joins']
- );
+ $queryBuilder = FileSelectQueryBuilder::newForArchivedFile( $dbr );
+ $row = $queryBuilder->where( $conds )
+ ->orderBy( 'fa_timestamp', SelectQueryBuilder::SORT_DESC )
+ ->caller( __METHOD__ )->fetchRow();
if ( !$row ) {
// this revision does not exist?
return null;
@@ -281,6 +278,7 @@ class ArchivedFile {
*
* @since 1.31
* @stable to override
+ * @deprecated since 1.41 use FileSelectQueryBuilder instead
* @return array[] With three keys:
* - tables: (string[]) to include in the `$table` to `IDatabase->select()` or `SelectQueryBuilder::tables`
* - fields: (string[]) to include in the `$vars` to `IDatabase->select()` or `SelectQueryBuilder::fields`
@@ -288,37 +286,12 @@ class ArchivedFile {
* @phan-return array{tables:string[],fields:string[],joins:array}
*/
public static function getQueryInfo() {
- $commentQuery = MediaWikiServices::getInstance()->getCommentStore()->getJoin( 'fa_description' );
+ $dbr = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->getReplicaDatabase();
+ $queryInfo = ( FileSelectQueryBuilder::newForArchivedFile( $dbr ) )->getQueryInfo();
return [
- 'tables' => [
- 'filearchive',
- 'filearchive_actor' => 'actor'
- ] + $commentQuery['tables'],
- 'fields' => [
- 'fa_id',
- 'fa_name',
- 'fa_archive_name',
- 'fa_storage_key',
- 'fa_storage_group',
- 'fa_size',
- 'fa_bits',
- 'fa_width',
- 'fa_height',
- 'fa_metadata',
- 'fa_media_type',
- 'fa_major_mime',
- 'fa_minor_mime',
- 'fa_timestamp',
- 'fa_deleted',
- 'fa_deleted_timestamp', /* Used by LocalFileRestoreBatch */
- 'fa_sha1',
- 'fa_actor',
- 'fa_user' => 'filearchive_actor.actor_user',
- 'fa_user_text' => 'filearchive_actor.actor_name'
- ] + $commentQuery['fields'],
- 'joins' => [
- 'filearchive_actor' => [ 'JOIN', 'actor_id=fa_actor' ]
- ] + $commentQuery['joins'],
+ 'tables' => $queryInfo['tables'],
+ 'fields' => $queryInfo['fields'],
+ 'joins' => $queryInfo['join_conds'],
];
}