From db3b233e8d9a8f273719c7e6475195be0e810b97 Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Fri, 2 Jul 2021 21:55:55 +0200 Subject: [PATCH] api: Inject services into ApiQueryFileRepoInfo Removed self::getInitialisedRepoGroup RepoGroup class itself should be aware of initalise and does it in RepoGroup::forEachForeignRepo Bug: T259960 Change-Id: I5163d02bf345b7922ac4ec8b755c7cf8425a9c37 --- includes/api/ApiQuery.php | 7 +++++- includes/api/ApiQueryFileRepoInfo.php | 35 ++++++++++++++------------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/includes/api/ApiQuery.php b/includes/api/ApiQuery.php index 57b334ed742..57ca4ff5baf 100644 --- a/includes/api/ApiQuery.php +++ b/includes/api/ApiQuery.php @@ -218,7 +218,12 @@ class ApiQuery extends ApiBase { 'UserGroupManager', ] ], - 'filerepoinfo' => ApiQueryFileRepoInfo::class, + 'filerepoinfo' => [ + 'class' => ApiQueryFileRepoInfo::class, + 'services' => [ + 'RepoGroup', + ] + ], 'tokens' => ApiQueryTokens::class, 'languageinfo' => [ 'class' => ApiQueryLanguageinfo::class, diff --git a/includes/api/ApiQueryFileRepoInfo.php b/includes/api/ApiQueryFileRepoInfo.php index ba1097ba420..cef5edac82c 100644 --- a/includes/api/ApiQueryFileRepoInfo.php +++ b/includes/api/ApiQueryFileRepoInfo.php @@ -21,8 +21,6 @@ * @since 1.22 */ -use MediaWiki\MediaWikiServices; - /** * A query action to return meta information about the foreign file repos * configured on the wiki. @@ -31,15 +29,21 @@ use MediaWiki\MediaWikiServices; */ class ApiQueryFileRepoInfo extends ApiQueryBase { - public function __construct( ApiQuery $query, $moduleName ) { + /** @var RepoGroup */ + private $repoGroup; + + /** + * @param ApiQuery $query + * @param string $moduleName + * @param RepoGroup $repoGroup + */ + public function __construct( + ApiQuery $query, + $moduleName, + RepoGroup $repoGroup + ) { parent::__construct( $query, $moduleName, 'fri' ); - } - - protected function getInitialisedRepoGroup() { - $repoGroup = MediaWikiServices::getInstance()->getRepoGroup(); - $repoGroup->initialiseRepos(); - - return $repoGroup; + $this->repoGroup = $repoGroup; } public function execute() { @@ -50,10 +54,9 @@ class ApiQueryFileRepoInfo extends ApiQueryBase { $repos = []; - $repoGroup = $this->getInitialisedRepoGroup(); $foreignTargets = $conf->get( 'ForeignUploadTargets' ); - $repoGroup->forEachForeignRepo( + $this->repoGroup->forEachForeignRepo( static function ( FileRepo $repo ) use ( &$repos, $props, $foreignTargets ) { $repoProps = $repo->getInfo(); $repoProps['canUpload'] = in_array( $repoProps['name'], $foreignTargets ); @@ -62,7 +65,7 @@ class ApiQueryFileRepoInfo extends ApiQueryBase { } ); - $localInfo = $repoGroup->getLocalRepo()->getInfo(); + $localInfo = $this->repoGroup->getLocalRepo()->getInfo(); $localInfo['canUpload'] = $conf->get( 'EnableUploads' ); $repos[] = array_intersect_key( $localInfo, $props ); @@ -92,15 +95,13 @@ class ApiQueryFileRepoInfo extends ApiQueryBase { public function getProps() { $props = []; - $repoGroup = $this->getInitialisedRepoGroup(); - - $repoGroup->forEachForeignRepo( static function ( FileRepo $repo ) use ( &$props ) { + $this->repoGroup->forEachForeignRepo( static function ( FileRepo $repo ) use ( &$props ) { $props = array_merge( $props, array_keys( $repo->getInfo() ) ); } ); $propValues = array_values( array_unique( array_merge( $props, - array_keys( $repoGroup->getLocalRepo()->getInfo() ) + array_keys( $this->repoGroup->getLocalRepo()->getInfo() ) ) ) ); $propValues[] = 'canUpload';