API: Introduce "templated parameters"
[lhc/web/wiklou.git] / includes / api / ApiParamInfo.php
index 2fa20a9..b8a32ae 100644 (file)
@@ -1,9 +1,5 @@
 <?php
 /**
- *
- *
- * Created on Dec 01, 2007
- *
  * Copyright © 2008 Roan Kattouw "<Firstname>.<Lastname>@gmail.com"
  *
  * This program is free software; you can redistribute it and/or modify
@@ -309,16 +305,25 @@ class ApiParamInfo extends ApiBase {
                }
 
                $ret['parameters'] = [];
+               $ret['templatedparameters'] = [];
                $params = $module->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
                $paramDesc = $module->getFinalParamDescription();
+               $index = 0;
                foreach ( $params as $name => $settings ) {
                        if ( !is_array( $settings ) ) {
                                $settings = [ ApiBase::PARAM_DFLT => $settings ];
                        }
 
                        $item = [
-                               'name' => $name
+                               'index' => ++$index,
+                               'name' => $name,
                        ];
+
+                       if ( !empty( $settings[ApiBase::PARAM_TEMPLATE_VARS] ) ) {
+                               $item['templatevars'] = $settings[ApiBase::PARAM_TEMPLATE_VARS];
+                               ApiResult::setIndexedTagName( $item['templatevars'], 'var' );
+                       }
+
                        if ( isset( $paramDesc[$name] ) ) {
                                $this->formatHelpMessages( $item, 'description', $paramDesc[$name], true );
                        }
@@ -471,6 +476,12 @@ class ApiParamInfo extends ApiBase {
                        if ( !empty( $settings[ApiBase::PARAM_RANGE_ENFORCE] ) ) {
                                $item['enforcerange'] = true;
                        }
+                       if ( isset( $settings[self::PARAM_MAX_BYTES] ) ) {
+                               $item['maxbytes'] = $settings[self::PARAM_MAX_BYTES];
+                       }
+                       if ( isset( $settings[self::PARAM_MAX_CHARS] ) ) {
+                               $item['maxchars'] = $settings[self::PARAM_MAX_CHARS];
+                       }
                        if ( !empty( $settings[ApiBase::PARAM_DEPRECATED_VALUES] ) ) {
                                $deprecatedValues = array_keys( $settings[ApiBase::PARAM_DEPRECATED_VALUES] );
                                if ( is_array( $item['type'] ) ) {
@@ -505,9 +516,11 @@ class ApiParamInfo extends ApiBase {
                                ApiResult::setIndexedTagName( $item['info'], 'i' );
                        }
 
-                       $ret['parameters'][] = $item;
+                       $key = empty( $settings[ApiBase::PARAM_TEMPLATE_VARS] ) ? 'parameters' : 'templatedparameters';
+                       $ret[$key][] = $item;
                }
                ApiResult::setIndexedTagName( $ret['parameters'], 'param' );
+               ApiResult::setIndexedTagName( $ret['templatedparameters'], 'param' );
 
                $dynamicParams = $module->dynamicParameterDocumentation();
                if ( $dynamicParams !== null ) {