MediaWiki fundraising/REL1_35
ApiQueryFileRepoInfo.php
Go to the documentation of this file.
1<?php
25
33
34 public function __construct( ApiQuery $query, $moduleName ) {
35 parent::__construct( $query, $moduleName, 'fri' );
36 }
37
38 protected function getInitialisedRepoGroup() {
39 $repoGroup = MediaWikiServices::getInstance()->getRepoGroup();
40 $repoGroup->initialiseRepos();
41
42 return $repoGroup;
43 }
44
45 public function execute() {
46 $conf = $this->getConfig();
47
48 $params = $this->extractRequestParams();
49 $props = array_flip( $params['prop'] );
50
51 $repos = [];
52
53 $repoGroup = $this->getInitialisedRepoGroup();
54 $foreignTargets = $conf->get( 'ForeignUploadTargets' );
55
56 $repoGroup->forEachForeignRepo(
57 function ( FileRepo $repo ) use ( &$repos, $props, $foreignTargets ) {
58 $repoProps = $repo->getInfo();
59 $repoProps['canUpload'] = in_array( $repoProps['name'], $foreignTargets );
60
61 $repos[] = array_intersect_key( $repoProps, $props );
62 }
63 );
64
65 $localInfo = $repoGroup->getLocalRepo()->getInfo();
66 $localInfo['canUpload'] = $conf->get( 'EnableUploads' );
67 $repos[] = array_intersect_key( $localInfo, $props );
68
69 $result = $this->getResult();
70 ApiResult::setIndexedTagName( $repos, 'repo' );
71 ApiResult::setArrayTypeRecursive( $repos, 'assoc' );
72 ApiResult::setArrayType( $repos, 'array' );
73 $result->addValue( [ 'query' ], 'repos', $repos );
74 }
75
76 public function getCacheMode( $params ) {
77 return 'public';
78 }
79
80 public function getAllowedParams() {
81 $props = $this->getProps();
82
83 return [
84 'prop' => [
85 ApiBase::PARAM_DFLT => implode( '|', $props ),
87 ApiBase::PARAM_TYPE => $props,
89 ],
90 ];
91 }
92
93 public function getProps() {
94 $props = [];
95 $repoGroup = $this->getInitialisedRepoGroup();
96
97 $repoGroup->forEachForeignRepo( function ( FileRepo $repo ) use ( &$props ) {
98 $props = array_merge( $props, array_keys( $repo->getInfo() ) );
99 } );
100
101 $propValues = array_values( array_unique( array_merge(
102 $props,
103 array_keys( $repoGroup->getLocalRepo()->getInfo() )
104 ) ) );
105
106 $propValues[] = 'canUpload';
107
108 sort( $propValues );
109 return $propValues;
110 }
111
112 protected function getExamplesMessages() {
113 $examples = [];
114
115 $props = array_intersect( [ 'apiurl', 'name', 'displayname' ], $this->getProps() );
116 if ( $props ) {
117 $examples['action=query&meta=filerepoinfo&friprop=' . implode( '|', $props )] =
118 'apihelp-query+filerepoinfo-example-simple';
119 }
120
121 return $examples;
122 }
123
124 public function getHelpUrls() {
125 return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Filerepoinfo';
126 }
127}
const PARAM_TYPE
Definition ApiBase.php:78
const PARAM_DFLT
Definition ApiBase.php:70
const PARAM_HELP_MSG_PER_VALUE
((string|array|Message)[]) When PARAM_TYPE is an array, this is an array mapping those values to $msg...
Definition ApiBase.php:195
getResult()
Get the result object.
Definition ApiBase.php:620
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user,...
Definition ApiBase.php:772
const PARAM_ISMULTI
Definition ApiBase.php:74
This is a base class for all Query modules.
A query action to return meta information about the foreign file repos configured on the wiki.
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
getExamplesMessages()
Returns usage examples for this module.
getHelpUrls()
Return links to more detailed help pages about the module.
__construct(ApiQuery $query, $moduleName)
getCacheMode( $params)
Get the cache mode for the data generated by this module.
This is the main query class.
Definition ApiQuery.php:37
Base class for file repositories.
Definition FileRepo.php:41
getInfo()
Return information about the repository.
MediaWikiServices is the service locator for the application scope of MediaWiki.