Umherirrender has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/216048

Change subject: API: Deprecate generatexml of modules 
revisions/deletedrevisions/parse
......................................................................

API: Deprecate generatexml of modules revisions/deletedrevisions/parse

Deprecate 'generatexml=' by adding 'prop=parsetree' to revisions,
deletedrevisions and action=parse.
'generatexml' of action=expandtemplates is already deprecated and
replaced by 'prop=parsetree'.

Reason: Api parameter to control the output of a module usually gets
added as type to prop=, not added as new parameter. New parameter
usually used as input parameter for the module.

For revisions and deletedrevisions this allows to get the parsetree
without getting the whole content (makes the result smaller, when just
one is needed)

Change-Id: I7403110d7bd07e9eb2a10e1b398d97f0f40298be
---
M includes/api/ApiParse.php
M includes/api/ApiQueryRevisionsBase.php
M includes/api/i18n/en.json
M includes/api/i18n/qqq.json
4 files changed, 30 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/48/216048/1

diff --git a/includes/api/ApiParse.php b/includes/api/ApiParse.php
index 36be777..873cdb6 100644
--- a/includes/api/ApiParse.php
+++ b/includes/api/ApiParse.php
@@ -397,9 +397,12 @@
                        $result_array[ApiResult::META_BC_SUBELEMENTS][] = 
'limitreporthtml';
                }
 
-               if ( $params['generatexml'] ) {
+               if ( isset( $prop['parsetree'] ) || $params['generatexml'] ) {
+                       if ( !isset( $prop['parsetree'] ) ) {
+                               $this->logFeatureUsage( 
'action=parse&generatexml' );
+                       }
                        if ( $this->content->getModel() != 
CONTENT_MODEL_WIKITEXT ) {
-                               $this->dieUsage( "generatexml is only supported 
for wikitext content", "notwikitext" );
+                               $this->dieUsage( "parsetree is only supported 
for wikitext content", "notwikitext" );
                        }
 
                        $wgParser->startExternalParse( $titleObj, $popts, 
Parser::OT_PREPROCESS );
@@ -778,8 +781,11 @@
                                        'properties',
                                        'limitreportdata',
                                        'limitreporthtml',
+                                       'parsetree',
                                ),
-                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(
+                                       'parsetree' => array( 
'apihelp-parse-paramvalue-prop-parsetree', CONTENT_MODEL_WIKITEXT ),
+                               ),
                        ),
                        'pst' => false,
                        'onlypst' => false,
@@ -795,6 +801,7 @@
                                ApiBase::PARAM_HELP_MSG => array(
                                        'apihelp-parse-param-generatexml', 
CONTENT_MODEL_WIKITEXT
                                ),
+                               ApiBase::PARAM_DEPRECATED => true,
                        ),
                        'preview' => false,
                        'sectionpreview' => false,
diff --git a/includes/api/ApiQueryRevisionsBase.php 
b/includes/api/ApiQueryRevisionsBase.php
index 64f6120..d387d91 100644
--- a/includes/api/ApiQueryRevisionsBase.php
+++ b/includes/api/ApiQueryRevisionsBase.php
@@ -37,7 +37,7 @@
        protected $fld_ids = false, $fld_flags = false, $fld_timestamp = false,
                $fld_size = false, $fld_sha1 = false, $fld_comment = false,
                $fld_parsedcomment = false, $fld_user = false, $fld_userid = 
false,
-               $fld_content = false, $fld_tags = false, $fld_contentmodel = 
false;
+               $fld_content = false, $fld_tags = false, $fld_contentmodel = 
false, $fld_parsetree;
 
        public function execute() {
                $this->run();
@@ -104,6 +104,7 @@
                $this->fld_userid = isset( $prop['userid'] );
                $this->fld_user = isset( $prop['user'] );
                $this->fld_tags = isset( $prop['tags'] );
+               $this->fld_parsetree = isset( $prop['parsetree'] );
 
                if ( !empty( $params['contentformat'] ) ) {
                        $this->contentFormat = $params['contentformat'];
@@ -112,7 +113,7 @@
                $this->limit = $params['limit'];
 
                $this->fetchContent = $this->fld_content || !is_null( 
$this->diffto )
-                       || !is_null( $this->difftotext );
+                       || !is_null( $this->difftotext ) || 
$this->fld_parsetree;
 
                $smallLimit = false;
                if ( $this->fetchContent ) {
@@ -273,10 +274,11 @@
                                $vals['textmissing'] = true;
                        }
                }
-               if ( $this->fld_content && $content ) {
-                       $text = null;
-
-                       if ( $this->generateXML ) {
+               if ( $this->fld_parsetree || ( $this->fld_content && 
$this->generateXML ) ) {
+                       if ( !$this->fld_parsetree ) {
+                               $this->logFeatureUsage( 
'action=query&prop=revisions+base&generatexml' );
+                       }
+                       if ( $content ) {
                                if ( $content->getModel() === 
CONTENT_MODEL_WIKITEXT ) {
                                        $t = $content->getNativeData(); # note: 
don't set $text
 
@@ -299,6 +301,10 @@
                                                " uses content model " . 
$content->getModel() );
                                }
                        }
+               }
+
+               if ( $this->fld_content && $content ) {
+                       $text = null;
 
                        if ( $this->expandTemplates && !$this->parseContent ) {
                                #XXX: implement template expansion for all 
content types in ContentHandler?
@@ -431,7 +437,8 @@
                                        'comment',
                                        'parsedcomment',
                                        'content',
-                                       'tags'
+                                       'tags',
+                                       'parsetree',
                                ),
                                ApiBase::PARAM_HELP_MSG => 
'apihelp-query+revisions+base-param-prop',
                        ),
@@ -448,6 +455,7 @@
                        ),
                        'generatexml' => array(
                                ApiBase::PARAM_DFLT => false,
+                               ApiBase::PARAM_DEPRECATED => true,
                                ApiBase::PARAM_HELP_MSG => 
'apihelp-query+revisions+base-param-generatexml',
                        ),
                        'parse' => array(
diff --git a/includes/api/i18n/en.json b/includes/api/i18n/en.json
index f3faf48..bb5360d 100644
--- a/includes/api/i18n/en.json
+++ b/includes/api/i18n/en.json
@@ -295,6 +295,7 @@
        "apihelp-parse-paramvalue-prop-properties": "Gives various properties 
defined in the parsed wikitext.",
        "apihelp-parse-paramvalue-prop-limitreportdata": "Gives the limit 
report in a structured way. Gives no data, when <var>$1disablepp</var> is set.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Gives the HTML 
version of the limit report. Gives no data, when <var>$1disablepp</var> is 
set.",
+       "apihelp-parse-paramvalue-prop-parsetree": "The XML parse tree of 
revision content (requires content model <code>$1</code>)",
        "apihelp-parse-param-pst": "Do a pre-save transform on the input before 
parsing it. Only valid when used with text.",
        "apihelp-parse-param-onlypst": "Do a pre-save transform (PST) on the 
input, but don't parse it. Returns the same wikitext, after a PST has been 
applied. Only valid when used with <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Includes language links 
supplied by extensions (for use with <kbd>$1prop=langlinks</kbd>).",
@@ -302,7 +303,7 @@
        "apihelp-parse-param-sectiontitle": "New section title when 
<var>section</var> is <kbd>new</kbd>.\n\nUnlike page editing, this does not 
fall back to <var>summary</var> when omitted or empty.",
        "apihelp-parse-param-disablepp": "Disable the PP Report from the parser 
output.",
        "apihelp-parse-param-disableeditsection": "Disable edit section links 
from the parser output.",
-       "apihelp-parse-param-generatexml": "Generate XML parse tree (requires 
content model <code>$1</code>).",
+       "apihelp-parse-param-generatexml": "Generate XML parse tree (requires 
content model <code>$1</code>; replaced by $1prop=parsetree).",
        "apihelp-parse-param-preview": "Parse in preview mode.",
        "apihelp-parse-param-sectionpreview": "Parse in section preview mode 
(enables preview mode too).",
        "apihelp-parse-param-disabletoc": "Disable table of contents in 
output.",
@@ -879,10 +880,10 @@
        "apihelp-query+revisions-example-first5-after": "Get first 5 revisions 
of the <kbd>Main Page</kbd> made after 2006-05-01.",
        "apihelp-query+revisions-example-first5-not-localhost": "Get first 5 
revisions of the <kbd>Main Page</kbd> that were not made by anonymous user 
<kbd>127.0.0.1</kbd>.",
        "apihelp-query+revisions-example-first5-user": "Get first 5 revisions 
of the <kbd>Main Page</kbd> that were made by the user <kbd>MediaWiki 
default</kbd>.",
-       "apihelp-query+revisions+base-param-prop": "Which properties to get for 
each revision:\n;ids:The ID of the revision.\n;flags:Revision flags 
(minor).\n;timestamp:The timestamp of the revision.\n;user:User that made the 
revision.\n;userid:User ID of the revision creator.\n;size:Length (bytes) of 
the revision.\n;sha1:SHA-1 (base 16) of the revision.\n;contentmodel:Content 
model ID of the revision.\n;comment:Comment by the user for the 
revision.\n;parsedcomment:Parsed comment by the user for the 
revision.\n;content:Text of the revision.\n;tags:Tags for the revision.",
+       "apihelp-query+revisions+base-param-prop": "Which properties to get for 
each revision:\n;ids:The ID of the revision.\n;flags:Revision flags 
(minor).\n;timestamp:The timestamp of the revision.\n;user:User that made the 
revision.\n;userid:User ID of the revision creator.\n;size:Length (bytes) of 
the revision.\n;sha1:SHA-1 (base 16) of the revision.\n;contentmodel:Content 
model ID of the revision.\n;comment:Comment by the user for the 
revision.\n;parsedcomment:Parsed comment by the user for the 
revision.\n;content:Text of the revision.\n;tags:Tags for the 
revision.\n;parsetree:The XML parse tree of revision content.",
        "apihelp-query+revisions+base-param-limit": "Limit how many revisions 
will be returned.",
        "apihelp-query+revisions+base-param-expandtemplates": "Expand templates 
in revision content (requires $1prop=content).",
-       "apihelp-query+revisions+base-param-generatexml": "Generate XML parse 
tree for revision content (requires $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "Generate XML parse 
tree for revision content (requires $1prop=content; replaced by 
$1prop=parsetree).",
        "apihelp-query+revisions+base-param-parse": "Parse revision content 
(requires $1prop=content). For performance reasons, if this option is used, 
$1limit is enforced to 1.",
        "apihelp-query+revisions+base-param-section": "Only retrieve the 
content of this section number.",
        "apihelp-query+revisions+base-param-diffto": "Revision ID to diff each 
revision to. Use <kbd>prev</kbd>, <kbd>next</kbd> and <kbd>cur</kbd> for the 
previous, next and current revision respectively.",
diff --git a/includes/api/i18n/qqq.json b/includes/api/i18n/qqq.json
index c6ac8fd..69a33a7 100644
--- a/includes/api/i18n/qqq.json
+++ b/includes/api/i18n/qqq.json
@@ -275,6 +275,7 @@
        "apihelp-parse-paramvalue-prop-properties": 
"{{doc-apihelp-paramvalue|parse|prop|properties}}",
        "apihelp-parse-paramvalue-prop-limitreportdata": 
"{{doc-apihelp-paramvalue|parse|prop|limitreportdata}}",
        "apihelp-parse-paramvalue-prop-limitreporthtml": 
"{{doc-apihelp-paramvalue|parse|prop|limitreporthtml}}",
+       "apihelp-parse-paramvalue-prop-parsetree": 
"{{doc-apihelp-paramvalue|params=* $1 - Value of the constant 
CONTENT_MODEL_WIKITEXT|paramstart=2|parse|prop|parsetree}}",
        "apihelp-parse-param-pst": "{{doc-apihelp-param|parse|pst}}",
        "apihelp-parse-param-onlypst": "{{doc-apihelp-param|parse|onlypst}}",
        "apihelp-parse-param-effectivelanglinks": 
"{{doc-apihelp-param|parse|effectivelanglinks}}",

-- 
To view, visit https://gerrit.wikimedia.org/r/216048
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7403110d7bd07e9eb2a10e1b398d97f0f40298be
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Umherirrender <umherirrender_de...@web.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to