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_TYPE => $modules), 'querymodules' => array(ApiBase::PARAM_ISMULTI => true, ApiBase::PARAM_TYPE => $querymodules), 'mainmodule' => false, 'pagesetmodule' => false, 'formatmodules' => array(ApiBase::PARAM_ISMULTI => true, ApiBase::PARAM_TYPE => $formatmodules)); }
public function execute() { // Get parameters $params = $this->extractRequestParams(); $result = $this->getResult(); $queryObj = new ApiQuery($this->getMain(), 'query'); $r = 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' => ''); continue; } $obj = new $modArr[$m]($this->getMain(), $m); $a = $this->getClassInfo($obj); $a['name'] = $m; $r['modules'][] = $a; } $result->setIndexedTagName($r['modules'], 'module'); } if (is_array($params['querymodules'])) { $qmodArr = $queryObj->getModules(); $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); $a['name'] = $qm; $a['querytype'] = $queryObj->getModuleType($qm); $r['querymodules'][] = $a; } $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); } $result->addValue(null, $this->getModuleName(), $r); }
public function testPrefixes() { $main = new ApiMain(new FauxRequest()); $query = new ApiQuery($main, 'foo', 'bar'); $modules = $query->getModules(); $prefixes = array(); foreach ($modules as $name => $class) { $module = new $class($main, $name); $prefix = $module->getModulePrefix(); if (isset($prefixes[$prefix])) { $this->fail("Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}"); } $prefixes[$module->getModulePrefix()] = $class; } $this->assertTrue(true); // dummy call to make this test non-incomplete }
/** * Module for displaying help */ public function execute() { // Get parameters $params = $this->extractRequestParams(); if (!isset($params['modules']) && !isset($params['querymodules'])) { $this->dieUsage('', 'help'); } $this->getMain()->setHelp(); $result = $this->getResult(); $queryObj = new ApiQuery($this->getMain(), 'query'); $r = array(); if (is_array($params['modules'])) { $modArr = $this->getMain()->getModules(); foreach ($params['modules'] as $m) { if (!isset($modArr[$m])) { $r[] = array('name' => $m, 'missing' => ''); continue; } $module = new $modArr[$m]($this->getMain(), $m); $r[] = $this->buildModuleHelp($module, 'action'); } } if (is_array($params['querymodules'])) { $qmodArr = $queryObj->getModules(); foreach ($params['querymodules'] as $qm) { if (!isset($qmodArr[$qm])) { $r[] = array('name' => $qm, 'missing' => ''); continue; } $module = new $qmodArr[$qm]($this, $qm); $type = $queryObj->getModuleType($qm); if ($type === null) { $r[] = array('name' => $qm, 'missing' => ''); continue; } $r[] = $this->buildModuleHelp($module, $type); } } $result->setIndexedTagName($r, 'module'); $result->addValue(null, $this->getModuleName(), $r); }