MediaWiki  master
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 ),
86  ApiBase::PARAM_ISMULTI => true,
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 }
ContextSource\getConfig
getConfig()
Definition: ContextSource.php:67
ApiQuery
This is the main query class.
Definition: ApiQuery.php:37
ApiQueryFileRepoInfo\execute
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
Definition: ApiQueryFileRepoInfo.php:45
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition: MediaWikiServices.php:155
ApiQueryFileRepoInfo\getProps
getProps()
Definition: ApiQueryFileRepoInfo.php:93
FileRepo\getInfo
getInfo()
Return information about the repository.
Definition: FileRepo.php:1944
ApiBase\PARAM_TYPE
const PARAM_TYPE
(boolean) Inverse of IntegerDef::PARAM_IGNORE_RANGE
Definition: ApiBase.php:71
ApiResult\setArrayTypeRecursive
static setArrayTypeRecursive(array &$arr, $type, $kvpKeyName=null)
Set the array data type recursively.
Definition: ApiResult.php:747
ApiBase\getResult
getResult()
Get the result object.
Definition: ApiBase.php:565
ApiQueryFileRepoInfo\__construct
__construct(ApiQuery $query, $moduleName)
Definition: ApiQueryFileRepoInfo.php:34
FileRepo
Base class for file repositories.
Definition: FileRepo.php:41
ApiResult\setArrayType
static setArrayType(array &$arr, $type, $kvpKeyName=null)
Set the array data type.
Definition: ApiResult.php:716
ApiQueryBase
This is a base class for all Query modules.
Definition: ApiQueryBase.php:37
ApiQueryFileRepoInfo\getExamplesMessages
getExamplesMessages()
Returns usage examples for this module.
Definition: ApiQueryFileRepoInfo.php:112
ApiBase\extractRequestParams
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user,...
Definition: ApiBase.php:717
ApiQueryFileRepoInfo\getAllowedParams
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
Definition: ApiQueryFileRepoInfo.php:80
ApiResult\setIndexedTagName
static setIndexedTagName(array &$arr, $tag)
Set the tag name for numeric-keyed values in XML format.
Definition: ApiResult.php:604
ApiQueryFileRepoInfo
A query action to return meta information about the foreign file repos configured on the wiki.
Definition: ApiQueryFileRepoInfo.php:32
ApiQueryFileRepoInfo\getInitialisedRepoGroup
getInitialisedRepoGroup()
Definition: ApiQueryFileRepoInfo.php:38
ApiBase\PARAM_DFLT
const PARAM_DFLT
(boolean) Inverse of IntegerDef::PARAM_IGNORE_RANGE
Definition: ApiBase.php:69
ApiBase\PARAM_ISMULTI
const PARAM_ISMULTI
(boolean) Inverse of IntegerDef::PARAM_IGNORE_RANGE
Definition: ApiBase.php:70
ApiQueryFileRepoInfo\getCacheMode
getCacheMode( $params)
Get the cache mode for the data generated by this module.
Definition: ApiQueryFileRepoInfo.php:76
ApiBase\PARAM_HELP_MSG_PER_VALUE
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:140
ApiQueryFileRepoInfo\getHelpUrls
getHelpUrls()
Return links to more detailed help pages about the module.
Definition: ApiQueryFileRepoInfo.php:124