diff options
Diffstat (limited to 'includes/api/ApiParamInfo.php')
-rw-r--r-- | includes/api/ApiParamInfo.php | 134 |
1 files changed, 80 insertions, 54 deletions
diff --git a/includes/api/ApiParamInfo.php b/includes/api/ApiParamInfo.php index d710c206..8fe2cad2 100644 --- a/includes/api/ApiParamInfo.php +++ b/includes/api/ApiParamInfo.php @@ -23,9 +23,9 @@ * http://www.gnu.org/copyleft/gpl.html */ -if (!defined('MEDIAWIKI')) { +if ( !defined( 'MEDIAWIKI' ) ) { // Eclipse helper - will be ignored in production - require_once ("ApiBase.php"); + require_once ( "ApiBase.php" ); } /** @@ -33,123 +33,149 @@ 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) + $r['modules'] = array(); + foreach ( $params['modules'] as $m ) { - if(!isset($modArr[$m])) + if ( !isset( $modArr[$m] ) ) { - $r['modules'][] = array('name' => $m, 'missing' => ''); + $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) + $r['querymodules'] = array(); + foreach ( $params['querymodules'] as $qm ) { - if(!isset($qmodArr[$qm])) + if ( !isset( $qmodArr[$qm] ) ) { - $r['querymodules'][] = array('name' => $qm, 'missing' => ''); + $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']) + if ( $params['mainmodule'] ) + $r['mainmodule'] = $this->getClassInfo( $this->getMain() ); + if ( $params['pagesetmodule'] ) { - $pageSet = new ApiPageSet($queryObj); - $r['pagesetmodule'] = $this->getClassInfo($pageSet); + $pageSet = new ApiPageSet( $queryObj ); + $r['pagesetmodule'] = $this->getClassInfo( $pageSet ); } - $result->addValue(null, $this->getModuleName(), $r); + $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['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) + foreach ( $allowedParams as $n => $p ) { - $a = array('name' => $n); - if(!is_array($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 ( !is_array( $p ) ) { - if(is_bool($p)) + if ( is_bool( $p ) ) { $a['type'] = 'bool'; - $a['default'] = ($p ? 'true' : 'false'); + $a['default'] = ( $p ? 'true' : 'false' ); + } + else if ( is_string( $p ) || is_null( $p ) ) + { + $a['type'] = 'string'; + $a['default'] = strval( $p ); + } + else if ( 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]) + 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]) + + 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_TYPE] ) ) { $a['type'] = $p[ApiBase::PARAM_TYPE]; - if(is_array($a['type'])) - $result->setIndexedTagName($a['type'], 't'); + if ( is_array( $a['type'] ) ) + $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; } @@ -190,6 +216,6 @@ class ApiParamInfo extends ApiBase { } public function getVersion() { - return __CLASS__ . ': $Id: ApiParamInfo.php 48091 2009-03-06 13:49:44Z catrope $'; + return __CLASS__ . ': $Id: ApiParamInfo.php 62336 2010-02-11 22:22:20Z reedy $'; } } |