From d9022f63880ce039446fba8364f68e656b7bf4cb Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 3 May 2012 13:01:35 +0200 Subject: Update to MediaWiki 1.19.0 --- includes/api/ApiParamInfo.php | 137 ++++++++++++++++++++++++++++++------------ 1 file changed, 97 insertions(+), 40 deletions(-) (limited to 'includes/api/ApiParamInfo.php') diff --git a/includes/api/ApiParamInfo.php b/includes/api/ApiParamInfo.php index ad098920..f2263476 100644 --- a/includes/api/ApiParamInfo.php +++ b/includes/api/ApiParamInfo.php @@ -24,65 +24,86 @@ * @file */ -if ( !defined( 'MEDIAWIKI' ) ) { - // Eclipse helper - will be ignored in production - require_once( "ApiBase.php" ); -} - /** * @ingroup API */ class ApiParamInfo extends ApiBase { + /** + * @var ApiQuery + */ + protected $queryObj; + public function __construct( $main, $action ) { parent::__construct( $main, $action ); + $this->queryObj = new ApiQuery( $this->getMain(), 'query' ); } public function execute() { // Get parameters $params = $this->extractRequestParams(); $result = $this->getResult(); - $queryObj = new ApiQuery( $this->getMain(), 'query' ); - $r = array(); + + $res = array(); if ( is_array( $params['modules'] ) ) { - $modArr = $this->getMain()->getModules(); - $r['modules'] = array(); - foreach ( $params['modules'] as $m ) { - if ( !isset( $modArr[$m] ) ) { - $r['modules'][] = array( 'name' => $m, 'missing' => '' ); + $modules = $this->getMain()->getModules(); + $res['modules'] = array(); + foreach ( $params['modules'] as $mod ) { + if ( !isset( $modules[$mod] ) ) { + $res['modules'][] = array( 'name' => $mod, 'missing' => '' ); continue; } - $obj = new $modArr[$m]( $this->getMain(), $m ); - $a = $this->getClassInfo( $obj ); - $a['name'] = $m; - $r['modules'][] = $a; + $obj = new $modules[$mod]( $this->getMain(), $mod ); + + $item = $this->getClassInfo( $obj ); + $item['name'] = $mod; + $res['modules'][] = $item; } - $result->setIndexedTagName( $r['modules'], 'module' ); + $result->setIndexedTagName( $res['modules'], 'module' ); } + if ( is_array( $params['querymodules'] ) ) { - $qmodArr = $queryObj->getModules(); - $r['querymodules'] = array(); + $queryModules = $this->queryObj->getModules(); + $res['querymodules'] = array(); foreach ( $params['querymodules'] as $qm ) { - if ( !isset( $qmodArr[$qm] ) ) { - $r['querymodules'][] = array( 'name' => $qm, 'missing' => '' ); + if ( !isset( $queryModules[$qm] ) ) { + $res['querymodules'][] = array( 'name' => $qm, 'missing' => '' ); continue; } - $obj = new $qmodArr[$qm]( $this, $qm ); - $a = $this->getClassInfo( $obj ); - $a['name'] = $qm; - $a['querytype'] = $queryObj->getModuleType( $qm ); - $r['querymodules'][] = $a; + $obj = new $queryModules[$qm]( $this, $qm ); + $item = $this->getClassInfo( $obj ); + $item['name'] = $qm; + $item['querytype'] = $this->queryObj->getModuleType( $qm ); + $res['querymodules'][] = $item; } - $result->setIndexedTagName( $r['querymodules'], 'module' ); + $result->setIndexedTagName( $res['querymodules'], 'module' ); } + if ( $params['mainmodule'] ) { - $r['mainmodule'] = $this->getClassInfo( $this->getMain() ); + $res['mainmodule'] = $this->getClassInfo( $this->getMain() ); } + if ( $params['pagesetmodule'] ) { - $pageSet = new ApiPageSet( $queryObj ); - $r['pagesetmodule'] = $this->getClassInfo( $pageSet ); + $pageSet = new ApiPageSet( $this->queryObj ); + $res['pagesetmodule'] = $this->getClassInfo( $pageSet ); + } + + if ( is_array( $params['formatmodules'] ) ) { + $formats = $this->getMain()->getFormats(); + $res['formatmodules'] = array(); + foreach ( $params['formatmodules'] as $f ) { + if ( !isset( $formats[$f] ) ) { + $res['formatmodules'][] = array( 'name' => $f, 'missing' => '' ); + continue; + } + $obj = new $formats[$f]( $this, $f ); + $item = $this->getClassInfo( $obj ); + $item['name'] = $f; + $res['formatmodules'][] = $item; + } + $result->setIndexedTagName( $res['formatmodules'], 'module' ); } - $result->addValue( null, $this->getModuleName(), $r ); + $result->addValue( null, $this->getModuleName(), $res ); } /** @@ -92,9 +113,10 @@ class ApiParamInfo extends ApiBase { function getClassInfo( $obj ) { $result = $this->getResult(); $retval['classname'] = get_class( $obj ); - $retval['description'] = implode( "\n", (array)$obj->getDescription() ); - $examples = (array)$obj->getExamples(); - $retval['examples'] = implode( "\n", $examples ); + $retval['description'] = implode( "\n", (array)$obj->getFinalDescription() ); + + $retval['examples'] = ''; + $retval['version'] = implode( "\n", (array)$obj->getVersion() ); $retval['prefix'] = $obj->getModulePrefix(); @@ -122,9 +144,31 @@ class ApiParamInfo extends ApiBase { } $result->setIndexedTagName( $retval['helpurls'], 'helpurl' ); - $retval['allexamples'] = $examples; - if ( isset( $retval['allexamples'][0] ) && $retval['allexamples'][0] === false ) { - $retval['allexamples'] = array(); + $examples = $obj->getExamples(); + $retval['allexamples'] = array(); + if ( $examples !== false ) { + if ( is_string( $examples ) ) { + $examples = array( $examples ); + } + foreach( $examples as $k => $v ) { + if ( strlen( $retval['examples'] ) ) { + $retval['examples'] .= ' '; + } + $item = array(); + if ( is_numeric( $k ) ) { + $retval['examples'] .= $v; + $result->setContent( $item, $v ); + } else { + if ( !is_array( $v ) ) { + $item['description'] = $v; + } else { + $item['description'] = implode( $v, "\n" ); + } + $retval['examples'] .= $item['description'] . ' ' . $k; + $result->setContent( $item, $k ); + } + $retval['allexamples'][] = $item; + } } $result->setIndexedTagName( $retval['allexamples'], 'example' ); @@ -219,15 +263,27 @@ class ApiParamInfo extends ApiBase { } public function getAllowedParams() { + $modules = array_keys( $this->getMain()->getModules() ); + sort( $modules ); + $querymodules = array_keys( $this->queryObj->getModules() ); + sort( $querymodules ); + $formatmodules = array_keys( $this->getMain()->getFormats() ); + sort( $formatmodules ); return array( 'modules' => array( - ApiBase::PARAM_ISMULTI => true + ApiBase::PARAM_ISMULTI => true, + ApiBase::PARAM_TYPE => $modules, ), 'querymodules' => array( - ApiBase::PARAM_ISMULTI => true + ApiBase::PARAM_ISMULTI => true, + ApiBase::PARAM_TYPE => $querymodules, ), 'mainmodule' => false, 'pagesetmodule' => false, + 'formatmodules' => array( + ApiBase::PARAM_ISMULTI => true, + ApiBase::PARAM_TYPE => $formatmodules, + ) ); } @@ -237,6 +293,7 @@ class ApiParamInfo extends ApiBase { 'querymodules' => 'List of query module names (value of prop=, meta= or list= parameter)', 'mainmodule' => 'Get information about the main (top-level) module as well', 'pagesetmodule' => 'Get information about the pageset module (providing titles= and friends) as well', + 'formatmodules' => 'List of format module names (value of format= parameter)', ); } @@ -244,7 +301,7 @@ class ApiParamInfo extends ApiBase { return 'Obtain information about certain API parameters and errors'; } - protected function getExamples() { + public function getExamples() { return array( 'api.php?action=paraminfo&modules=parse&querymodules=allpages|siteinfo' ); -- cgit v1.2.2