Merge "Persist sessions pre-send instead of post-send"
[lhc/web/wiklou.git] / includes / api / ApiBase.php
index 9ea8c6d..21e20c2 100644 (file)
@@ -1157,6 +1157,7 @@ abstract class ApiBase extends ContextSource {
                        }
 
                        $value = $this->getMain()->getCheck( $encParamName );
+                       $provided = $value;
                } elseif ( $type == 'upload' ) {
                        if ( isset( $default ) ) {
                                // Having a default value is not allowed
@@ -1169,6 +1170,7 @@ abstract class ApiBase extends ContextSource {
                                self::dieDebug( __METHOD__, "Multi-values not supported for $encParamName" );
                        }
                        $value = $this->getMain()->getUpload( $encParamName );
+                       $provided = $value->exists();
                        if ( !$value->exists() ) {
                                // This will get the value without trying to normalize it
                                // (because trying to normalize a large binary file
@@ -1183,6 +1185,7 @@ abstract class ApiBase extends ContextSource {
                        }
                } else {
                        $value = $this->getMain()->getVal( $encParamName, $default );
+                       $provided = $this->getMain()->getCheck( $encParamName );
 
                        if ( isset( $value ) && $type == 'namespace' ) {
                                $type = MWNamespace::getValidNamespaces();
@@ -1373,7 +1376,7 @@ abstract class ApiBase extends ContextSource {
                        }
 
                        // Set a warning if a deprecated parameter has been passed
-                       if ( $deprecated && $value !== false ) {
+                       if ( $deprecated && $provided ) {
                                $feature = $encParamName;
                                $m = $this;
                                while ( !$m->isMain() ) {
@@ -1387,7 +1390,7 @@ abstract class ApiBase extends ContextSource {
                        }
 
                        // Set a warning if a deprecated parameter value has been passed
-                       $usedDeprecatedValues = $deprecatedValues && $value !== false
+                       $usedDeprecatedValues = $deprecatedValues && $provided
                                ? array_intersect( array_keys( $deprecatedValues ), (array)$value )
                                : [];
                        if ( $usedDeprecatedValues ) {
@@ -1856,7 +1859,7 @@ abstract class ApiBase extends ContextSource {
                                                'min_id' => "MIN($field)",
                                                'max_id' => "MAX($field)",
                                        ],
-                                       null,
+                                       '',
                                        __METHOD__
                                );
                                self::$filterIDsCache[$table][$field] = $row;
@@ -1949,9 +1952,14 @@ abstract class ApiBase extends ContextSource {
         * @since 1.29
         * @param StatusValue $status
         * @param string[] $types 'warning' and/or 'error'
+        * @param string[] $filter Message keys to filter out (since 1.33)
         */
-       public function addMessagesFromStatus( StatusValue $status, $types = [ 'warning', 'error' ] ) {
-               $this->getErrorFormatter()->addMessagesFromStatus( $this->getModulePath(), $status, $types );
+       public function addMessagesFromStatus(
+               StatusValue $status, $types = [ 'warning', 'error' ], array $filter = []
+       ) {
+               $this->getErrorFormatter()->addMessagesFromStatus(
+                       $this->getModulePath(), $status, $types, $filter
+               );
        }
 
        /**