MediaWiki master
ApiQueryStashImageInfo.php
Go to the documentation of this file.
1<?php
9namespace MediaWiki\Api;
10
17
24
25 public function __construct(
26 ApiQuery $query,
27 string $moduleName,
28 private readonly RepoGroup $repoGroup,
29 Language $contentLanguage,
30 BadFileLookup $badFileLookup,
31 ) {
32 parent::__construct(
33 $query,
34 $moduleName,
35 'sii',
36 $repoGroup,
37 $contentLanguage,
38 $badFileLookup
39 );
40 }
41
42 public function execute() {
43 if ( !$this->getUser()->isRegistered() ) {
44 $this->dieWithError( 'apierror-mustbeloggedin-uploadstash', 'notloggedin' );
45 }
46
47 $params = $this->extractRequestParams();
48 $modulePrefix = $this->getModulePrefix();
49
50 $prop = array_fill_keys( $params['prop'], true );
51
52 $scale = $this->getScale( $params );
53
54 $result = $this->getResult();
55
56 $this->requireAtLeastOneParameter( $params, 'filekey', 'sessionkey' );
57
58 // Alias sessionkey to filekey, but give an existing filekey precedence.
59 if ( !$params['filekey'] && $params['sessionkey'] ) {
60 $params['filekey'] = $params['sessionkey'];
61 }
62
63 try {
64 $stash = $this->repoGroup->getLocalRepo()->getUploadStash( $this->getUser() );
65
66 foreach ( $params['filekey'] as $filekey ) {
67 $file = $stash->getFile( $filekey );
68 $finalThumbParam = $this->mergeThumbParams( $file, $scale, $params['urlparam'] );
69 $imageInfo = ApiQueryImageInfo::getInfo( $file, $prop, $result, $finalThumbParam );
70 $result->addValue( [ 'query', $this->getModuleName() ], null, $imageInfo );
71 $result->addIndexedTagName( [ 'query', $this->getModuleName() ], $modulePrefix );
72 }
73 // @todo Update exception handling here to understand current getFile exceptions
75 $this->dieWithException( $e, [ 'wrap' => 'apierror-stashedfilenotfound' ] );
76 } catch ( UploadStashBadPathException $e ) {
77 $this->dieWithException( $e, [ 'wrap' => 'apierror-stashpathinvalid' ] );
78 }
79 }
80
81 private const PROPERTY_FILTER = [
82 'user', 'userid', 'comment', 'parsedcomment',
83 'mediatype', 'archivename', 'uploadwarning',
84 ];
85
92 public static function getPropertyNames( $filter = null ) {
93 return parent::getPropertyNames( $filter ?? self::PROPERTY_FILTER );
94 }
95
102 public static function getPropertyMessages( $filter = null ) {
103 return parent::getPropertyMessages( $filter ?? self::PROPERTY_FILTER );
104 }
105
107 public function getAllowedParams() {
108 return [
109 'filekey' => [
110 ParamValidator::PARAM_ISMULTI => true,
111 ],
112 'sessionkey' => [
113 ParamValidator::PARAM_ISMULTI => true,
114 ParamValidator::PARAM_DEPRECATED => true,
115 ],
116 'prop' => [
117 ParamValidator::PARAM_ISMULTI => true,
118 ParamValidator::PARAM_DEFAULT => 'timestamp|url',
119 ParamValidator::PARAM_TYPE => self::getPropertyNames(),
120 ApiBase::PARAM_HELP_MSG => 'apihelp-query+imageinfo-param-prop',
122 ],
123 'urlwidth' => [
124 ParamValidator::PARAM_TYPE => 'integer',
125 ParamValidator::PARAM_DEFAULT => -1,
127 'apihelp-query+imageinfo-param-urlwidth',
129 ],
130 ],
131 'urlheight' => [
132 ParamValidator::PARAM_TYPE => 'integer',
133 ParamValidator::PARAM_DEFAULT => -1,
134 ApiBase::PARAM_HELP_MSG => 'apihelp-query+imageinfo-param-urlheight',
135 ],
136 'urlparam' => [
137 ParamValidator::PARAM_TYPE => 'string',
138 ParamValidator::PARAM_DEFAULT => '',
139 ApiBase::PARAM_HELP_MSG => 'apihelp-query+imageinfo-param-urlparam',
140 ],
141 ];
142 }
143
145 protected function getExamplesMessages() {
146 return [
147 'action=query&prop=stashimageinfo&siifilekey=124sd34rsdf567'
148 => 'apihelp-query+stashimageinfo-example-simple',
149 'action=query&prop=stashimageinfo&siifilekey=b34edoe3|bceffd4&' .
150 'siiurlwidth=120&siiprop=url'
151 => 'apihelp-query+stashimageinfo-example-params',
152 ];
153 }
154
156 public function getHelpUrls() {
157 return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Stashimageinfo';
158 }
159}
160
162class_alias( ApiQueryStashImageInfo::class, 'ApiQueryStashImageInfo' );
dieWithError( $msg, $code=null, $data=null, $httpCode=0)
Abort execution with an error.
Definition ApiBase.php:1522
getModulePrefix()
Get parameter prefix (usually two letters or an empty string).
Definition ApiBase.php:566
getModuleName()
Get the name of the module being executed by this instance.
Definition ApiBase.php:557
requireAtLeastOneParameter( $params,... $required)
Die if 0 of a certain set of parameters is set and not false.
Definition ApiBase.php:1039
getResult()
Get the result object.
Definition ApiBase.php:696
const PARAM_HELP_MSG_PER_VALUE
((string|array|Message)[]) When PARAM_TYPE is an array, or 'string' with PARAM_ISMULTI,...
Definition ApiBase.php:206
dieWithException(Throwable $exception, array $options=[])
Abort execution with an error derived from a throwable.
Definition ApiBase.php:1535
const PARAM_HELP_MSG
(string|array|Message) Specify an alternative i18n documentation message for this parameter.
Definition ApiBase.php:166
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user,...
Definition ApiBase.php:837
A query action to get image information and upload history.
mergeThumbParams( $image, $thumbParams, $otherParams)
Validate and merge scale parameters with handler thumb parameters, give error if invalid.
static getInfo( $file, $prop, $result, $thumbParams=null, $opts=false)
Get result information for an image revision.
getScale( $params)
From parameters, construct a 'scale' array.
A query action to get image information from temporarily stashed files.
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
static getPropertyMessages( $filter=null)
Returns messages for all possible parameters to siiprop.
static getPropertyNames( $filter=null)
Returns all possible parameters to siiprop.
getHelpUrls()
Return links to more detailed help pages about the module.1.25, returning boolean false is deprecated...
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
getExamplesMessages()
Returns usage examples for this module.Return value has query strings as keys, with values being eith...
__construct(ApiQuery $query, string $moduleName, private readonly RepoGroup $repoGroup, Language $contentLanguage, BadFileLookup $badFileLookup,)
This is the main query class.
Definition ApiQuery.php:36
Prioritized list of file repositories.
Definition RepoGroup.php:30
Base class for language-specific code.
Definition Language.php:65
Service for formatting and validating API parameters.