From bb7f8624d190c1be551ca02be159e786d3df1e6d Mon Sep 17 00:00:00 2001 From: Roan Kattouw Date: Tue, 15 Jan 2008 21:33:08 +0000 Subject: [PATCH] API: * Removing action=render module (which was deprecated) in favor of action=parse * Added prop parameter to action=parse so certain parts of the output can be left out * action=parse&prop=text behaves pretty much exactly like action=render used to --- RELEASE-NOTES | 2 +- includes/AutoLoader.php | 1 - includes/api/ApiMain.php | 1 - includes/api/ApiParse.php | 49 +++++++++++++++----- includes/api/ApiRender.php | 94 -------------------------------------- 5 files changed, 38 insertions(+), 109 deletions(-) delete mode 100644 includes/api/ApiRender.php diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 3220351c7b..a60bdfc5b7 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -420,7 +420,7 @@ Full API documentation is available at http://www.mediawiki.org/wiki/API * Make prop=info check for restrictions in the old format too. * Add apihighlimits permission, default for sysops and bots * Add limit=max to use maximal limit -* Add action=parse to render parser output. Use it instead of action=render which is deprecated. +* Add action=parse to render parser output. Use it instead of action=render which has been removed * Add rvtoken=rollback to prop=revisions * Add meta=allmessages to get messages from site's messages cache. * Use bold and italics highlighting only in API help diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 9bb88fdc5a..e18b0350a5 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -346,7 +346,6 @@ function __autoload($className) { 'ApiQuerySiteinfo' => 'includes/api/ApiQuerySiteinfo.php', 'ApiQueryUserInfo' => 'includes/api/ApiQueryUserInfo.php', 'ApiQueryWatchlist' => 'includes/api/ApiQueryWatchlist.php', - 'ApiRender' => 'includes/api/ApiRender.php', 'ApiResult' => 'includes/api/ApiResult.php', # apiedit branch diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php index 43621255b2..be1dcede70 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -56,7 +56,6 @@ class ApiMain extends ApiBase { 'logout' => 'ApiLogout', 'query' => 'ApiQuery', 'expandtemplates' => 'ApiExpandTemplates', - 'render' => 'ApiRender', 'parse' => 'ApiParse', 'opensearch' => 'ApiOpenSearch', 'feedwatchlist' => 'ApiFeedWatchlist', diff --git a/includes/api/ApiParse.php b/includes/api/ApiParse.php index 4e9475462b..04915e5045 100644 --- a/includes/api/ApiParse.php +++ b/includes/api/ApiParse.php @@ -42,6 +42,7 @@ class ApiParse extends ApiBase { $params = $this->extractRequestParams(); $text = $params['text']; $title = $params['title']; + $prop = array_flip($params['prop']); //Create title for parser $title_obj = Title :: newFromText($params['title']); @@ -54,16 +55,26 @@ class ApiParse extends ApiBase { // Return result $result = $this->getResult(); - $result_array = array( - 'text' => array(), - 'langlinks' => $this->formatLangLinks( $p_result->getLanguageLinks() ), - 'categories' => $this->formatCategoryLinks( $p_result->getCategories() ), - 'links' => $this->formatLinks( $p_result->getLinks() ), - 'templates' => $this->formatLinks( $p_result->getTemplates() ), - 'images' => array_keys( $p_result->getImages() ), - 'externallinks' => array_keys( $p_result->getExternalLinks() ), - 'sections' => $p_result->getSections(), - ); + $result_array = array(); + if(isset($prop['text'])) { + $result_array['text'] = array(); + $result->setContent($result_array['text'], $p_result->getText()); + } + if(isset($prop['langlinks'])) + $result_array['langlinks'] = $this->formatLangLinks($p_result->getLanguageLinks()); + if(isset($prop['categories'])) + $result_array['categories'] = $this->formatCategoryLinks($p_result->getCategories()); + if(isset($prop['links'])) + $result_array['links'] = $this->formatLinks($p_result->getLinks()); + if(isset($prop['templates'])) + $result_array['templates'] = $this->formatLinks($p_result->getTemplates()); + if(isset($prop['images'])) + $result_array['images'] = array_keys($p_result->getImages()); + if(isset($prop['externallinks'])) + $result_array['externallinks'] = array_keys($p_result->getExternalLinks()); + if(isset($prop['sections'])) + $result_array['sections'] = $p_result->getSections(); + $result_mapping = array( 'langlinks' => 'll', 'categories' => 'cl', @@ -74,7 +85,6 @@ class ApiParse extends ApiBase { 'sections' => 's', ); $this->setIndexedTagNames( $result_array, $result_mapping ); - $result->setContent( $result_array['text'], $p_result->getText() ); $result->addValue( null, $this->getModuleName(), $result_array ); } @@ -128,7 +138,21 @@ class ApiParse extends ApiBase { 'title' => array( ApiBase :: PARAM_DFLT => 'API', ), - 'text' => null + 'text' => null, + 'prop' => array( + ApiBase :: PARAM_DFLT => 'text|langlinks|categories|links|templates|images|externallinks|sections', + ApiBase :: PARAM_ISMULTI => true, + ApiBase :: PARAM_TYPE => array( + 'text', + 'langlinks', + 'categories', + 'links', + 'templates', + 'images', + 'externallinks', + 'sections' + ) + ) ); } @@ -136,6 +160,7 @@ class ApiParse extends ApiBase { return array ( 'text' => 'Wikitext to parse', 'title' => 'Title of page', + 'prop' => 'Which pieces of information to get' ); } diff --git a/includes/api/ApiRender.php b/includes/api/ApiRender.php deleted file mode 100644 index 9302da392a..0000000000 --- a/includes/api/ApiRender.php +++ /dev/null @@ -1,94 +0,0 @@ -@gmail.com - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * http://www.gnu.org/copyleft/gpl.html - */ - -if (!defined('MEDIAWIKI')) { - // Eclipse helper - will be ignored in production - require_once ("ApiBase.php"); -} - -/** - * @addtogroup API - */ -class ApiRender extends ApiBase { - - public function __construct($main, $action) { - parent :: __construct($main, $action); - } - - public function execute() { - // Get parameters - $params = $this->extractRequestParams(); - $text = $params['text']; - $title = $params['title']; - $retval = ''; - - //Create title for parser - $title_obj = Title :: newFromText($params['title']); - if(!$title_obj) - $title_obj = Title :: newFromText("API"); // Default title is "API". For example, ExpandTemplates uses "ExpendTemplates" for it - - // Parse text - global $wgParser; - $p_result = $wgParser->parse( $text, $title_obj, new ParserOptions() ); - $retval = $p_result->getText(); - - // Return result - $result = $this->getResult(); - $retval_array = array(); - $result->setContent( $retval_array, $retval ); - $result->addValue( null, $this->getModuleName(), $retval_array ); - } - - protected function getAllowedParams() { - return array ( - 'title' => array( - ApiBase :: PARAM_DFLT => 'API', - ), - 'text' => null - ); - } - - protected function getParamDescription() { - return array ( - 'text' => 'Wikitext to render', - 'title' => 'Title of page', - ); - } - - protected function getDescription() { - return 'This module allows to get rendered wikitext'; - } - - protected function getExamples() { - return array ( - 'api.php?action=render&text={{Project:Sandbox}}' - ); - } - - public function getVersion() { - return __CLASS__ . ': $Id$'; - } -} - -- 2.20.1