MediaWiki REL1_34
ApiQueryFileRepoInfo.php
Go to the documentation of this file.
1<?php
31
32 public function __construct( ApiQuery $query, $moduleName ) {
33 parent::__construct( $query, $moduleName, 'fri' );
34 }
35
36 protected function getInitialisedRepoGroup() {
37 $repoGroup = RepoGroup::singleton();
38 $repoGroup->initialiseRepos();
39
40 return $repoGroup;
41 }
42
43 public function execute() {
44 $conf = $this->getConfig();
45
46 $params = $this->extractRequestParams();
47 $props = array_flip( $params['prop'] );
48
49 $repos = [];
50
51 $repoGroup = $this->getInitialisedRepoGroup();
52 $foreignTargets = $conf->get( 'ForeignUploadTargets' );
53
54 $repoGroup->forEachForeignRepo( function ( $repo ) use ( &$repos, $props, $foreignTargets ) {
55 $repoProps = $repo->getInfo();
56 $repoProps['canUpload'] = in_array( $repoProps['name'], $foreignTargets );
57
58 $repos[] = array_intersect_key( $repoProps, $props );
59 } );
60
61 $localInfo = $repoGroup->getLocalRepo()->getInfo();
62 $localInfo['canUpload'] = $conf->get( 'EnableUploads' );
63 $repos[] = array_intersect_key( $localInfo, $props );
64
65 $result = $this->getResult();
66 ApiResult::setIndexedTagName( $repos, 'repo' );
67 ApiResult::setArrayTypeRecursive( $repos, 'assoc' );
68 ApiResult::setArrayType( $repos, 'array' );
69 $result->addValue( [ 'query' ], 'repos', $repos );
70 }
71
72 public function getCacheMode( $params ) {
73 return 'public';
74 }
75
76 public function getAllowedParams() {
77 $props = $this->getProps();
78
79 return [
80 'prop' => [
81 ApiBase::PARAM_DFLT => implode( '|', $props ),
83 ApiBase::PARAM_TYPE => $props,
85 ],
86 ];
87 }
88
89 public function getProps() {
90 $props = [];
91 $repoGroup = $this->getInitialisedRepoGroup();
92
93 $repoGroup->forEachForeignRepo( function ( $repo ) use ( &$props ) {
94 $props = array_merge( $props, array_keys( $repo->getInfo() ) );
95 } );
96
97 $propValues = array_values( array_unique( array_merge(
98 $props,
99 array_keys( $repoGroup->getLocalRepo()->getInfo() )
100 ) ) );
101
102 $propValues[] = 'canUpload';
103
104 sort( $propValues );
105 return $propValues;
106 }
107
108 protected function getExamplesMessages() {
109 $examples = [];
110
111 $props = array_intersect( [ 'apiurl', 'name', 'displayname' ], $this->getProps() );
112 if ( $props ) {
113 $examples['action=query&meta=filerepoinfo&friprop=' . implode( '|', $props )] =
114 'apihelp-query+filerepoinfo-example-simple';
115 }
116
117 return $examples;
118 }
119
120 public function getHelpUrls() {
121 return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Filerepoinfo';
122 }
123}
const PARAM_TYPE
(string|string[]) Either an array of allowed value strings, or a string type as described below.
Definition ApiBase.php:94
const PARAM_DFLT
(null|boolean|integer|string) Default value of the parameter.
Definition ApiBase.php:55
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:164
getResult()
Get the result object.
Definition ApiBase.php:640
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user,...
Definition ApiBase.php:761
const PARAM_ISMULTI
(boolean) Accept multiple pipe-separated values for this parameter (e.g.
Definition ApiBase.php:58
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
static setArrayType(array &$arr, $type, $kvpKeyName=null)
Set the array data type.
static setArrayTypeRecursive(array &$arr, $type, $kvpKeyName=null)
Set the array data type recursively.
static setIndexedTagName(array &$arr, $tag)
Set the tag name for numeric-keyed values in XML format.