X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/b311bee4b7600bfbf2500bfae0f994719c620a8e..d57edfddd6c01f0ed6b1a84019649cdf6cddd5f8:/includes/api/ApiParamInfo.php diff --git a/includes/api/ApiParamInfo.php b/includes/api/ApiParamInfo.php index d710c206..8ba3f127 100644 --- a/includes/api/ApiParamInfo.php +++ b/includes/api/ApiParamInfo.php @@ -1,11 +1,10 @@ .@home.nl + * Created on Dec 01, 2007 + * + * Copyright © 2008 Roan Kattouw .@home.nl * * 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 @@ -19,13 +18,15 @@ * * 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. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html + * + * @file */ -if (!defined('MEDIAWIKI')) { +if ( !defined( 'MEDIAWIKI' ) ) { // Eclipse helper - will be ignored in production - require_once ("ApiBase.php"); + require_once( "ApiBase.php" ); } /** @@ -33,123 +34,150 @@ if (!defined('MEDIAWIKI')) { */ class ApiParamInfo extends ApiBase { - public function __construct($main, $action) { - parent :: __construct($main, $action); + public function __construct( $main, $action ) { + parent::__construct( $main, $action ); } public function execute() { // Get parameters $params = $this->extractRequestParams(); $result = $this->getResult(); - $queryObj = new ApiQuery($this->getMain(), 'query'); + $queryObj = new ApiQuery( $this->getMain(), 'query' ); $r = array(); - if(is_array($params['modules'])) - { + if ( is_array( $params['modules'] ) ) { $modArr = $this->getMain()->getModules(); - foreach($params['modules'] as $m) - { - if(!isset($modArr[$m])) - { - $r['modules'][] = array('name' => $m, 'missing' => ''); + $r['modules'] = array(); + foreach ( $params['modules'] as $m ) { + if ( !isset( $modArr[$m] ) ) { + $r['modules'][] = array( 'name' => $m, 'missing' => '' ); continue; } - $obj = new $modArr[$m]($this->getMain(), $m); - $a = $this->getClassInfo($obj); + $obj = new $modArr[$m]( $this->getMain(), $m ); + $a = $this->getClassInfo( $obj ); $a['name'] = $m; $r['modules'][] = $a; } - $result->setIndexedTagName($r['modules'], 'module'); + $result->setIndexedTagName( $r['modules'], 'module' ); } - if(is_array($params['querymodules'])) - { + if ( is_array( $params['querymodules'] ) ) { $qmodArr = $queryObj->getModules(); - foreach($params['querymodules'] as $qm) - { - if(!isset($qmodArr[$qm])) - { - $r['querymodules'][] = array('name' => $qm, 'missing' => ''); + $r['querymodules'] = array(); + foreach ( $params['querymodules'] as $qm ) { + if ( !isset( $qmodArr[$qm] ) ) { + $r['querymodules'][] = array( 'name' => $qm, 'missing' => '' ); continue; } - $obj = new $qmodArr[$qm]($this, $qm); - $a = $this->getClassInfo($obj); + $obj = new $qmodArr[$qm]( $this, $qm ); + $a = $this->getClassInfo( $obj ); $a['name'] = $qm; $r['querymodules'][] = $a; } - $result->setIndexedTagName($r['querymodules'], 'module'); + $result->setIndexedTagName( $r['querymodules'], 'module' ); } - if($params['mainmodule']) - $r['mainmodule'] = $this->getClassInfo($this->getMain()); - if($params['pagesetmodule']) - { - $pageSet = new ApiPageSet($queryObj); - $r['pagesetmodule'] = $this->getClassInfo($pageSet); + if ( $params['mainmodule'] ) { + $r['mainmodule'] = $this->getClassInfo( $this->getMain() ); } - $result->addValue(null, $this->getModuleName(), $r); + if ( $params['pagesetmodule'] ) { + $pageSet = new ApiPageSet( $queryObj ); + $r['pagesetmodule'] = $this->getClassInfo( $pageSet ); + } + $result->addValue( null, $this->getModuleName(), $r ); } - function getClassInfo($obj) - { + function getClassInfo( $obj ) { $result = $this->getResult(); - $retval['classname'] = get_class($obj); - $retval['description'] = (is_array($obj->getDescription()) ? implode("\n", $obj->getDescription()) : $obj->getDescription()); + $retval['classname'] = get_class( $obj ); + $retval['description'] = implode( "\n", (array)$obj->getDescription() ); + $retval['examples'] = implode( "\n", (array)$obj->getExamples() ); + $retval['version'] = implode( "\n", (array)$obj->getVersion() ); $retval['prefix'] = $obj->getModulePrefix(); - if($obj->isReadMode()) + + if ( $obj->isReadMode() ) { $retval['readrights'] = ''; - if($obj->isWriteMode()) + } + if ( $obj->isWriteMode() ) { $retval['writerights'] = ''; - if($obj->mustBePosted()) + } + if ( $obj->mustBePosted() ) { $retval['mustbeposted'] = ''; + } + if ( $obj instanceof ApiQueryGeneratorBase ) { + $retval['generator'] = ''; + } + $allowedParams = $obj->getFinalParams(); - if(!is_array($allowedParams)) + if ( !is_array( $allowedParams ) ) { return $retval; + } + $retval['parameters'] = array(); $paramDesc = $obj->getFinalParamDescription(); - foreach($allowedParams as $n => $p) - { - $a = array('name' => $n); - if(!is_array($p)) - { - if(is_bool($p)) - { + foreach ( $allowedParams as $n => $p ) { + $a = array( 'name' => $n ); + if ( isset( $paramDesc[$n] ) ) { + $a['description'] = implode( "\n", (array)$paramDesc[$n] ); + } + if ( isset( $p[ApiBase::PARAM_DEPRECATED] ) && $p[ApiBase::PARAM_DEPRECATED] ) { + $a['deprecated'] = ''; + } + if ( isset( $p[ApiBase::PARAM_REQUIRED] ) && $p[ApiBase::PARAM_REQUIRED] ) { + $a['required'] = ''; + } + + if ( !is_array( $p ) ) { + if ( is_bool( $p ) ) { $a['type'] = 'bool'; - $a['default'] = ($p ? 'true' : 'false'); + $a['default'] = ( $p ? 'true' : 'false' ); + } elseif ( is_string( $p ) || is_null( $p ) ) { + $a['type'] = 'string'; + $a['default'] = strval( $p ); + } elseif ( is_int( $p ) ) { + $a['type'] = 'integer'; + $a['default'] = intval( $p ); } - if(is_string($p)) - $a['default'] = $p; $retval['parameters'][] = $a; continue; } - if(isset($p[ApiBase::PARAM_DFLT])) + if ( isset( $p[ApiBase::PARAM_DFLT] ) ) { $a['default'] = $p[ApiBase::PARAM_DFLT]; - if(isset($p[ApiBase::PARAM_ISMULTI])) - if($p[ApiBase::PARAM_ISMULTI]) - { - $a['multi'] = ''; - $a['limit'] = $this->getMain()->canApiHighLimits() ? - ApiBase::LIMIT_SML2 : - ApiBase::LIMIT_SML1; - } - if(isset($p[ApiBase::PARAM_ALLOW_DUPLICATES])) - if($p[ApiBase::PARAM_ALLOW_DUPLICATES]) - $a['allowsduplicates'] = ''; - if(isset($p[ApiBase::PARAM_TYPE])) - { + } + if ( isset( $p[ApiBase::PARAM_ISMULTI] ) && $p[ApiBase::PARAM_ISMULTI] ) { + $a['multi'] = ''; + $a['limit'] = $this->getMain()->canApiHighLimits() ? + ApiBase::LIMIT_SML2 : + ApiBase::LIMIT_SML1; + } + + if ( isset( $p[ApiBase::PARAM_ALLOW_DUPLICATES] ) && $p[ApiBase::PARAM_ALLOW_DUPLICATES] ) { + $a['allowsduplicates'] = ''; + } + + if ( isset( $p[ApiBase::PARAM_TYPE] ) ) { $a['type'] = $p[ApiBase::PARAM_TYPE]; - if(is_array($a['type'])) - $result->setIndexedTagName($a['type'], 't'); + if ( is_array( $a['type'] ) ) { + $a['type'] = array_values( $a['type'] ); // to prevent sparse arrays from being serialized to JSON as objects + $result->setIndexedTagName( $a['type'], 't' ); + } } - if(isset($p[ApiBase::PARAM_MAX])) + if ( isset( $p[ApiBase::PARAM_MAX] ) ) { $a['max'] = $p[ApiBase::PARAM_MAX]; - if(isset($p[ApiBase::PARAM_MAX2])) + } + if ( isset( $p[ApiBase::PARAM_MAX2] ) ) { $a['highmax'] = $p[ApiBase::PARAM_MAX2]; - if(isset($p[ApiBase::PARAM_MIN])) + } + if ( isset( $p[ApiBase::PARAM_MIN] ) ) { $a['min'] = $p[ApiBase::PARAM_MIN]; - if(isset($paramDesc[$n])) - $a['description'] = (is_array($paramDesc[$n]) ? implode("\n", $paramDesc[$n]) : $paramDesc[$n]); + } $retval['parameters'][] = $a; } - $result->setIndexedTagName($retval['parameters'], 'param'); + $result->setIndexedTagName( $retval['parameters'], 'param' ); + + // Errors + $retval['errors'] = $this->parseErrors( $obj->getPossibleErrors() ); + + $result->setIndexedTagName( $retval['errors'], 'error' ); + return $retval; } @@ -158,12 +186,12 @@ class ApiParamInfo extends ApiBase { } public function getAllowedParams() { - return array ( + return array( 'modules' => array( - ApiBase :: PARAM_ISMULTI => true + ApiBase::PARAM_ISMULTI => true ), 'querymodules' => array( - ApiBase :: PARAM_ISMULTI => true + ApiBase::PARAM_ISMULTI => true ), 'mainmodule' => false, 'pagesetmodule' => false, @@ -171,7 +199,7 @@ class ApiParamInfo extends ApiBase { } public function getParamDescription() { - return array ( + return array( 'modules' => 'List of module names (value of the action= parameter)', 'querymodules' => 'List of query module names (value of prop=, meta= or list= parameter)', 'mainmodule' => 'Get information about the main (top-level) module as well', @@ -180,16 +208,16 @@ class ApiParamInfo extends ApiBase { } public function getDescription() { - return 'Obtain information about certain API parameters'; + return 'Obtain information about certain API parameters and errors'; } protected function getExamples() { - return array ( + return array( 'api.php?action=paraminfo&modules=parse&querymodules=allpages|siteinfo' ); } public function getVersion() { - return __CLASS__ . ': $Id: ApiParamInfo.php 48091 2009-03-06 13:49:44Z catrope $'; + return __CLASS__ . ': $Id$'; } }