API:
authorRoan Kattouw <catrope@users.mediawiki.org>
Wed, 23 Jan 2008 18:40:40 +0000 (18:40 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Wed, 23 Jan 2008 18:40:40 +0000 (18:40 +0000)
* Fixing buggy class instantiation in ApiParamInfo
* Adding getModules() method to ApiMain and ApiQuery

includes/api/ApiMain.php
includes/api/ApiParamInfo.php
includes/api/ApiQuery.php

index dff4ab9..ce69502 100644 (file)
@@ -570,6 +570,13 @@ class ApiMain extends ApiBase {
        protected function addFormat( $fmtName, $fmtClass ) {
                $this->mFormats[$fmtName] = $fmtClass;
        }
+       
+       /**
+        * Get the array mapping module names to class names
+        */
+       function getModules() {
+               return $this->mModules;
+       }
 }
 
 /**
index 2c9ef2e..b14fafc 100644 (file)
@@ -43,30 +43,35 @@ class ApiParamInfo extends ApiBase {
                $result = $this->getResult();\r
                $r = array();\r
                if(is_array($params['modules']))\r
+               {\r
+                       $modArr = $this->getMain()->getModules();\r
                        foreach($params['modules'] as $m)\r
                        {\r
-                               $className = "Api$m";\r
-                               if(!class_exists($className))\r
+                               if(!isset($modArr[$m]))\r
                                {\r
-                                       $mods[$m] = array('missing' => '');\r
+                                       $r['modules'][$m] = array('missing' => '');\r
                                        continue;\r
                                }\r
-                               $obj = new $className($this->getMain(), $m);\r
+                               $obj = new $modArr[$m]($this->getMain(), $m);\r
                                $r['modules'][$m] = $this->getClassInfo($obj);                          \r
                        }\r
+               }\r
                if(is_array($params['querymodules']))\r
+               {\r
+                       $queryObj = new ApiQuery($this->getMain(), 'query');\r
+                       $qmodArr = $queryObj->getModules();\r
                        foreach($params['querymodules'] as $qm)\r
                        {\r
-                               $className = "ApiQuery$qm";\r
-                               if(!class_exists($className))\r
+                               if(!isset($qmodArr[$qm]))\r
                                {\r
-                                       $qmods[$qm] = array('missing' => '');\r
+                                       $r['querymodules'][$qm] = array('missing' => '');\r
                                        continue;\r
                                }\r
-                               $obj = new $className($this, $qm);\r
+                               $obj = new $qmodArr[$qm]($this, $qm);\r
                                $r['querymodules'][$qm] = $this->getClassInfo($obj);\r
                        }\r
-               $result->addValue( null, $this->getModuleName(), $r );\r
+               }\r
+               $result->addValue(null, $this->getModuleName(), $r);\r
        }\r
 \r
        function getClassInfo($obj)\r
index c42e7c9..7ff6e67 100644 (file)
@@ -147,6 +147,13 @@ class ApiQuery extends ApiBase {
        public function getPageSet() {
                return $this->mPageSet;
        }
+       
+       /**
+        * Get the array mapping module names to class names
+        */
+       function getModules() {
+               return array_merge($this->mQueryPropModules, $this->mQueryListModules, $this->mQueryMetaModules);
+       }
 
        /**
         * Query execution happens in the following steps: