API:
authorRoan Kattouw <catrope@users.mediawiki.org>
Tue, 15 Jan 2008 21:33:08 +0000 (21:33 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Tue, 15 Jan 2008 21:33:08 +0000 (21:33 +0000)
* 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
includes/AutoLoader.php
includes/api/ApiMain.php
includes/api/ApiParse.php
includes/api/ApiRender.php [deleted file]

index 3220351..a60bdfc 100644 (file)
@@ -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
index 9bb88fd..e18b035 100644 (file)
@@ -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
index 4362125..be1dced 100644 (file)
@@ -56,7 +56,6 @@ class ApiMain extends ApiBase {
                'logout' => 'ApiLogout',
                'query' => 'ApiQuery',
                'expandtemplates' => 'ApiExpandTemplates',
-               'render' => 'ApiRender',
                'parse' => 'ApiParse',
                'opensearch' => 'ApiOpenSearch',
                'feedwatchlist' => 'ApiFeedWatchlist',
index 4e94754..04915e5 100644 (file)
@@ -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 (file)
index 9302da3..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-/*
- * Created on Oct 06, 2007
- *
- * API for MediaWiki 1.8+
- *
- * Copyright (C) 2007 Yuri Astrakhan <Firstname><Lastname>@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$';
-       }
-}
-