Fix HTMLForm noData logic in trySubmit
authorGergő Tisza <gtisza@wikimedia.org>
Mon, 2 May 2016 19:20:00 +0000 (19:20 +0000)
committerGergő Tisza <gtisza@wikimedia.org>
Mon, 2 May 2016 22:23:13 +0000 (22:23 +0000)
This was missed in If4e0dfb and causes missing array key warnings
for fields using skipLoadData.

Change-Id: Ib52ee2bc9af278f03b48730acc1edb30f5ff1f88

includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormFieldCloner.php

index d671029..9cad7bf 100644 (file)
@@ -569,7 +569,7 @@ class HTMLForm extends ContextSource {
 
                # Check for cancelled submission
                foreach ( $this->mFlatFields as $fieldname => $field ) {
-                       if ( !empty( $field->mParams['nodata'] ) ) {
+                       if ( !array_key_exists( $fieldname, $this->mFieldData ) ) {
                                continue;
                        }
                        if ( $field->cancelSubmit( $this->mFieldData[$fieldname], $this->mFieldData ) ) {
@@ -580,7 +580,7 @@ class HTMLForm extends ContextSource {
 
                # Check for validation
                foreach ( $this->mFlatFields as $fieldname => $field ) {
-                       if ( !empty( $field->mParams['nodata'] ) ) {
+                       if ( !array_key_exists( $fieldname, $this->mFieldData ) ) {
                                continue;
                        }
                        if ( $field->isHidden( $this->mFieldData ) ) {
index 3f80884..ec1bd84 100644 (file)
@@ -207,7 +207,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
                foreach ( $values as $key => $value ) {
                        $fields = $this->createFieldsForKey( $key );
                        foreach ( $fields as $fieldname => $field ) {
-                               if ( !empty( $field->mParams['nodata'] ) ) {
+                               if ( !array_key_exists( $fieldname, $value ) ) {
                                        continue;
                                }
                                if ( $field->cancelSubmit( $value[$fieldname], $alldata ) ) {
@@ -237,7 +237,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
                foreach ( $values as $key => $value ) {
                        $fields = $this->createFieldsForKey( $key );
                        foreach ( $fields as $fieldname => $field ) {
-                               if ( !empty( $field->mParams['nodata'] ) ) {
+                               if ( !array_key_exists( $fieldname, $value ) ) {
                                        continue;
                                }
                                $ok = $field->validate( $value[$fieldname], $alldata );