X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiParse.php;h=495071abef0dbecdf6b5ef922d749268bb95ec7b;hb=c3b657c6806e57ac1259ec60f2af0cb5208fbb9a;hp=464fde66c05352e50577333c8923dbc2641603e3;hpb=6b942271c7c9f49cee617cc664c6704ba7bedea8;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiParse.php b/includes/api/ApiParse.php index 464fde66c0..495071abef 100644 --- a/includes/api/ApiParse.php +++ b/includes/api/ApiParse.php @@ -186,8 +186,9 @@ class ApiParse extends ApiBase { } $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 " . @@ -200,7 +201,7 @@ class ApiParse extends ApiBase { // 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." ); } @@ -361,6 +362,15 @@ class ApiParse extends ApiBase { $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" ); @@ -389,6 +399,7 @@ class ApiParse extends ApiBase { 'sections' => 's', 'headitems' => 'hi', 'properties' => 'pp', + 'limitreportdata' => 'lr', ); $this->setIndexedTagNames( $result_array, $result_mapping ); $result->addValue( null, $this->getModuleName(), $result_array ); @@ -644,6 +655,25 @@ class ApiParse extends ApiBase { 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] ) ) { @@ -687,6 +717,8 @@ class ApiParse extends ApiBase { 'iwlinks', 'wikitext', 'properties', + 'limitreportdata', + 'limitreporthtml', ) ), 'pst' => false, @@ -710,14 +742,13 @@ class ApiParse extends ApiBase { public function getParamDescription() { $p = $this->getModulePrefix(); - $wikitext = CONTENT_MODEL_WIKITEXT; return array( 'text' => "Text to parse. Use {$p}title or {$p}contentmodel to control the content model", '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", @@ -741,6 +772,10 @@ class ApiParse extends ApiBase { ' 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', @@ -767,8 +802,8 @@ class ApiParse extends ApiBase { "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", ), ); @@ -814,7 +849,7 @@ class ApiParse extends ApiBase { 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',