}
$popts = $this->makeParserOptions( $pageObj, $params );
+ $textProvided = !is_null( $text );
- if ( is_null( $text ) ) {
+ if ( !$textProvided ) {
if ( $titleProvided && ( $prop || $params['generatexml'] ) ) {
$this->setWarning(
"'title' used without 'text', and parsed page properties were requested " .
// If we are parsing text, do not use the content model of the default
// API title, but default to wikitext to keep BC.
- if ( !$titleProvided && is_null( $model ) ) {
+ if ( $textProvided && !$titleProvided && is_null( $model ) ) {
$model = CONTENT_MODEL_WIKITEXT;
$this->setWarning( "No 'title' or 'contentmodel' was given, assuming $model." );
}
$result_array['properties'] = $this->formatProperties( $p_result->getProperties() );
}
+ if ( isset( $prop['limitreportdata'] ) ) {
+ $result_array['limitreportdata'] = $this->formatLimitReportData( $p_result->getLimitReportData() );
+ }
+ if ( isset( $prop['limitreporthtml'] ) ) {
+ $limitreportHtml = EditPage::getPreviewLimitReport( $p_result );
+ $result_array['limitreporthtml'] = array();
+ ApiResult::setContent( $result_array['limitreporthtml'], $limitreportHtml );
+ }
+
if ( $params['generatexml'] ) {
if ( $this->content->getModel() != CONTENT_MODEL_WIKITEXT ) {
$this->dieUsage( "generatexml is only supported for wikitext content", "notwikitext" );
'sections' => 's',
'headitems' => 'hi',
'properties' => 'pp',
+ 'limitreportdata' => 'lr',
);
$this->setIndexedTagNames( $result_array, $result_mapping );
$result->addValue( null, $this->getModuleName(), $result_array );
$entry['lang'] = $bits[0];
if ( $title ) {
$entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
+ // localised language name in user language (maybe set by uselang=)
+ $entry['langname'] = Language::fetchLanguageName( $title->getInterwiki(), $this->getLanguage()->getCode() );
+ // native language name
+ $entry['autonym'] = Language::fetchLanguageName( $title->getInterwiki() );
}
ApiResult::setContent( $entry, $bits[1] );
$result[] = $entry;
return $result;
}
+ private function formatLimitReportData( $limitReportData ) {
+ $result = array();
+ $apiResult = $this->getResult();
+
+ foreach ( $limitReportData as $name => $value ) {
+ $entry = array();
+ $entry['name'] = $name;
+ if ( !is_array( $value ) ) {
+ $value = array( $value );
+ }
+ $apiResult->setIndexedTagName( $value, 'param' );
+ $apiResult->setIndexedTagName_recursive( $value, 'param' );
+ $entry = array_merge( $entry, $value );
+ $result[] = $entry;
+ }
+
+ return $result;
+ }
+
private function setIndexedTagNames( &$array, $mapping ) {
foreach ( $mapping as $key => $name ) {
if ( isset( $array[$key] ) ) {
'iwlinks',
'wikitext',
'properties',
+ 'limitreportdata',
+ 'limitreporthtml',
)
),
'pst' => false,
'summary' => 'Summary to parse',
'redirects' => "If the {$p}page or the {$p}pageid parameter is set to a redirect, resolve it",
'title' => "Title of page the text belongs to. " .
- "If omitted, \"API\" is used as the title with content model $wikitext",
+ "If omitted, {$p}contentmodel must be specified, and \"API\" will be used as the title",
'page' => "Parse the content of this page. Cannot be used together with {$p}text and {$p}title",
'pageid' => "Parse the content of this page. Overrides {$p}page",
'oldid' => "Parse the content of this revision. Overrides {$p}page and {$p}pageid",
' iwlinks - Gives interwiki links in the parsed wikitext',
' wikitext - Gives the original wikitext that was parsed',
' properties - Gives various properties defined in the parsed wikitext',
+ ' limitreportdata - Gives the limit report in a structured way.',
+ " Gives no data, when {$p}disablepp is set.",
+ ' limitreporthtml - Gives the HTML version of the limit report.',
+ " Gives no data, when {$p}disablepp is set.",
),
'effectivelanglinks' => array(
'Includes language links supplied by extensions',
"Only valid when used with {$p}text",
),
'contentmodel' => array(
- "Content model of the input text. Default is the model of the " .
- "specified ${p}title, or $wikitext if ${p}title is not specified",
+ "Content model of the input text. If omitted, ${p}title must be specified, " .
+ "and default will be the model of the specified ${p}title",
"Only valid when used with {$p}text",
),
);
$p = $this->getModulePrefix();
return array(
- 'Parses content and returns parser output',
+ 'Parses content and returns parser output.',
'See the various prop-Modules of action=query to get information from the current' .
- 'version of a page',
+ 'version of a page.',
'There are several ways to specify the text to parse:',
"1) Specify a page or revision, using {$p}page, {$p}pageid, or {$p}oldid.",
"2) Specify content explicitly, using {$p}text, {$p}title, and {$p}contentmodel.",
public function getExamples() {
return array(
'api.php?action=parse&page=Project:Sandbox' => 'Parse a page',
- 'api.php?action=parse&text={{Project:Sandbox}}' => 'Parse wikitext',
+ 'api.php?action=parse&text={{Project:Sandbox}}&contentmodel=wikitext' => 'Parse wikitext',
'api.php?action=parse&text={{PAGENAME}}&title=Test'
=> 'Parse wikitext, specifying the page title',
'api.php?action=parse&summary=Some+[[link]]&prop=' => 'Parse a summary',