MediaWiki master
ApiQueryPageProps.php
Go to the documentation of this file.
1<?php
9namespace MediaWiki\Api;
10
14
21
22 public function __construct(
23 ApiQuery $query,
24 string $moduleName,
25 private readonly PageProps $pageProps,
26 ) {
27 parent::__construct( $query, $moduleName, 'pp' );
28 }
29
30 public function execute() {
31 # Only operate on existing pages
32 $pages = $this->getPageSet()->getGoodPages();
33
34 $params = $this->extractRequestParams();
35 if ( $params['continue'] ) {
36 $cont = $this->parseContinueParamOrDie( $params['continue'], [ 'int' ] );
37 $continueValue = $cont[0];
38 $filteredPages = [];
39 foreach ( $pages as $id => $page ) {
40 if ( $id >= $continueValue ) {
41 $filteredPages[$id] = $page;
42 }
43 }
44 $pages = $filteredPages;
45 }
46
47 if ( $pages === [] ) {
48 # Nothing to do
49 return;
50 }
51
52 if ( $params['prop'] ) {
53 $properties = $this->pageProps->getProperties( $pages, $params['prop'] );
54 } else {
55 $properties = $this->pageProps->getAllProperties( $pages );
56 }
57
58 ksort( $properties );
59
60 $result = $this->getResult();
61 foreach ( $properties as $pageid => $props ) {
62 if ( !$this->addPageProps( $result, $pageid, $props ) ) {
63 break;
64 }
65 }
66 }
67
77 private function addPageProps( $result, $page, $props ) {
78 ApiResult::setArrayType( $props, 'assoc' );
79 $fit = $result->addValue( [ 'query', 'pages', $page ], 'pageprops', $props );
80
81 if ( !$fit ) {
82 $this->setContinueEnumParameter( 'continue', $page );
83 }
84
85 return $fit;
86 }
87
89 public function getCacheMode( $params ) {
90 return 'public';
91 }
92
94 public function getAllowedParams() {
95 return [
96 'continue' => [
97 ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
98 ],
99 'prop' => [
100 ParamValidator::PARAM_ISMULTI => true,
101 ],
102 ];
103 }
104
106 protected function getExamplesMessages() {
107 $title = Title::newMainPage()->getPrefixedText();
108 $mp = rawurlencode( $title );
109
110 return [
111 "action=query&prop=pageprops&titles={$mp}|MediaWiki"
112 => 'apihelp-query+pageprops-example-simple',
113 ];
114 }
115
117 public function getHelpUrls() {
118 return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Pageprops';
119 }
120}
121
123class_alias( ApiQueryPageProps::class, 'ApiQueryPageProps' );
parseContinueParamOrDie(string $continue, array $types)
Parse the 'continue' parameter in the usual format and validate the types of each part,...
Definition ApiBase.php:1707
getResult()
Get the result object.
Definition ApiBase.php:696
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
This is a base class for all Query modules.
getPageSet()
Get the PageSet object to work on.
setContinueEnumParameter( $paramName, $paramValue)
Set a query-continue value.
A query module to show basic page information.
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
__construct(ApiQuery $query, string $moduleName, private readonly PageProps $pageProps,)
getHelpUrls()
Return links to more detailed help pages about the module.1.25, returning boolean false is deprecated...
getExamplesMessages()
Returns usage examples for this module.Return value has query strings as keys, with values being eith...
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
getCacheMode( $params)
Get the cache mode for the data generated by this module.Override this in the module subclass....
This is the main query class.
Definition ApiQuery.php:36
static setArrayType(array &$arr, $type, $kvpKeyName=null)
Set the array data type.
Gives access to properties of a page.
Definition PageProps.php:20
Represents a title within MediaWiki.
Definition Title.php:69
Service for formatting and validating API parameters.