38 $this->
getMain()->setCacheMode(
'anon-public-user-private' );
45 if ( $title ===
null ) {
46 $titleProvided =
false;
50 $titleProvided =
true;
53 if (
$params[
'prop'] ===
null ) {
55 'apiwarn-deprecation-expandtemplates-prop',
'action=expandtemplates&!prop'
59 $prop = array_flip(
$params[
'prop'] );
62 $titleObj = Title::newFromText( $title );
63 if ( !$titleObj || $titleObj->isExternal() ) {
69 if ( $revid !==
null ) {
72 $this->
dieWithError( [
'apierror-nosuchrevid', $revid ] );
74 $pTitleObj = $titleObj;
75 $titleObj =
$rev->getTitle();
76 if ( $titleProvided ) {
77 if ( !$titleObj->equals( $pTitleObj ) ) {
84 $titleProvided =
true;
94 if (
$params[
'includecomments'] ) {
95 $options->setRemoveComments(
false );
99 $suppressCache =
false;
100 Hooks::run(
'ApiMakeParserOptions',
105 if ( isset( $prop[
'parsetree'] ) ||
$params[
'generatexml'] ) {
108 if ( is_callable( [ $dom,
'saveXML' ] ) ) {
109 $xml = $dom->saveXML();
111 $xml = $dom->__toString();
113 if ( isset( $prop[
'parsetree'] ) ) {
114 unset( $prop[
'parsetree'] );
118 $result->addValue(
null,
'parsetree', $xml );
125 if ( $prop ||
$params[
'prop'] ===
null ) {
127 $frame =
$wgParser->getPreprocessor()->newFrame();
129 if (
$params[
'prop'] ===
null ) {
134 if ( isset( $prop[
'categories'] ) ) {
135 $categories = $p_output->getCategories();
137 $categories_result = [];
138 foreach ( $categories as $category => $sortkey ) {
140 $entry[
'sortkey'] = $sortkey;
142 $categories_result[] = $entry;
145 $retval[
'categories'] = $categories_result;
148 if ( isset( $prop[
'properties'] ) ) {
149 $properties = $p_output->getProperties();
153 $retval[
'properties'] = $properties;
156 if ( isset( $prop[
'volatile'] ) ) {
157 $retval[
'volatile'] = $frame->isVolatile();
159 if ( isset( $prop[
'ttl'] ) && $frame->getTTL() !==
null ) {
160 $retval[
'ttl'] = $frame->getTTL();
162 if ( isset( $prop[
'wikitext'] ) ) {
163 $retval[
'wikitext'] = $wikitext;
165 if ( isset( $prop[
'modules'] ) ) {
166 $retval[
'modules'] = array_values( array_unique( $p_output->getModules() ) );
167 $retval[
'modulescripts'] = array_values( array_unique( $p_output->getModuleScripts() ) );
168 $retval[
'modulestyles'] = array_values( array_unique( $p_output->getModuleStyles() ) );
170 if ( isset( $prop[
'jsconfigvars'] ) ) {
174 if ( isset( $prop[
'encodedjsconfigvars'] ) ) {
175 $retval[
'encodedjsconfigvars'] = FormatJson::encode(
176 $p_output->getJsConfigVars(),
false, FormatJson::ALL_OK
180 if ( isset( $prop[
'modules'] ) &&
181 !isset( $prop[
'jsconfigvars'] ) && !isset( $prop[
'encodedjsconfigvars'] ) ) {
182 $this->
addWarning(
'apiwarn-moduleswithoutvars' );
209 'encodedjsconfigvars',
215 'includecomments' =>
false,
225 'action=expandtemplates&text={{Project:Sandbox}}'
226 =>
'apihelp-expandtemplates-example-simple',
231 return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Parsing_wikitext#expandtemplates';
wfEscapeWikiText( $text)
Escapes the given text so that it may be output using addWikiText() without any linking,...
This abstract class implements many basic API functions, and is the base of all API classes.
const PARAM_REQUIRED
(boolean) Is the parameter required?
const PARAM_DEPRECATED
(boolean) Is the parameter deprecated (will show a warning)?
dieWithError( $msg, $code=null, $data=null, $httpCode=null)
Abort execution with an error.
getMain()
Get the main module.
const PARAM_TYPE
(string|string[]) Either an array of allowed value strings, or a string type as described below.
extractRequestParams( $parseLimit=true)
Using getAllowedParams(), this function makes an array of the values provided by the user,...
const PARAM_HELP_MSG_PER_VALUE
((string|array|Message)[]) When PARAM_TYPE is an array, this is an array mapping those values to $msg...
addDeprecation( $msg, $feature, $data=[])
Add a deprecation warning for this module.
getResult()
Get the result object.
requireMaxOneParameter( $params, $required)
Die if more than one of a certain set of parameters is set and not false.
addWarning( $msg, $code=null, $data=null)
Add a warning for this module.
getModuleName()
Get the name of the module being executed by this instance.
const PARAM_ISMULTI
(boolean) Accept multiple pipe-separated values for this parameter (e.g.
API module that functions as a shortcut to the wikitext preprocessor.
getExamplesMessages()
Returns usage examples for this module.
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
getHelpUrls()
Return links to more detailed help pages about the module.
static setArrayType(array &$arr, $type, $kvpKeyName=null)
Set the array data type.
static addMetadataToResultVars( $vars, $forceHash=true)
Add the correct metadata to an array of vars we want to export through the API.
const META_SUBELEMENTS
Key for the 'subelements' metadata item.
static setSubelementsList(array &$arr, $names)
Causes the elements with the specified names to be output as subelements rather than attributes.
const META_BC_SUBELEMENTS
Key for the 'BC subelements' metadata item.
static setIndexedTagName(array &$arr, $tag)
Set the tag name for numeric-keyed values in XML format.
static setContentValue(array &$arr, $name, $value, $flags=0)
Add an output value to the array by name and mark as META_CONTENT.
getContext()
Get the base IContextSource object.
static newFromId( $id, $flags=0)
Load a page revision from a given revision ID number.
please add to it if you re going to add events to the MediaWiki code where normally authentication against an external auth plugin would be creating a local account incomplete not yet checked for validity & $retval
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
presenting them properly to the user as errors is done by the caller return true use this to change the list i e etc $rev