Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix/adv form number field required message #439

Merged
merged 12 commits into from
Mar 12, 2024
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ dist/
zip/
bin/strauss.phar
.idea
.vscode
/.vscode/
/vendor/
/vendor-prefixed/
bin/pup.phar
Expand Down
16 changes: 15 additions & 1 deletion includes/advanced-form/advanced-form-ajax.php
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@ public function process_fields( $fields ) {
} else {
$required_message = ! empty( $field['required_message'] ) ? $field['required_message'] : __( 'Missing a required field', 'kadence-blocks' );
$this->process_bail( __( 'Submission Failed', 'kadence-blocks' ), $required_message );
break;
}
} else {
continue;
Expand All @@ -261,9 +262,17 @@ public function process_fields( $fields ) {
$value = $this->sanitize_field( $field['type'], isset( $_POST[ $expected_field ] ) ? $_POST[ $expected_field ] : '', empty( $field['multiSelect'] ) ? false : $field['multiSelect'] );

// Fail if this field is empty and is required.
if ( empty( $value ) && ! empty( $field['required'] ) && $field['required'] && $field['type'] !== 'file' ) {
if ( empty( $value ) && ! empty( $field['required'] ) && $field['required'] && $field['type'] !== 'file' && $field['type'] !== 'number') {
$required_message = ! empty( $field['required_message'] ) ? $field['required_message'] : __( 'Missing a required field', 'kadence-blocks' );
$this->process_bail( __( 'Submission Failed', 'kadence-blocks' ), $required_message );
break;
}

// Fail if this field is number and required and value is not numeric.
if(! empty( $field['required'] ) && $field['required'] && !is_numeric($value) && $field['type'] === 'number') {
$required_message = ! empty( $field['required_message'] ) ? $field['required_message'] : __( 'Missing a required field', 'kadence-blocks' );
$this->process_bail( __( 'Submission Failed', 'kadence-blocks' ), $required_message );
break;
}

// If field is file, verify and process the file.
Expand All @@ -280,13 +289,15 @@ public function process_fields( $fields ) {
$max_count = ! empty( $field['multipleLimit'] ) ? absint( $field['multipleLimit'] ) : 5;
if ( isset( $field['multiple'] ) && $field['multiple'] && $file_count > $max_count ) {
$this->process_bail( __( 'Submission Failed. Trying to include too many files.', 'kadence-blocks' ), __( 'Too many files', 'kadence-blocks' ) );
break;
}
foreach ( $post_file as $file ) {
$file_name_array[] = $file['name'];
if ( empty( $file['size'] ) && ! empty( $field['required'] ) && $field['required'] ) {
$required_message = ! empty( $field['required_message'] ) ? $field['required_message'] : __( 'Missing a required field', 'kadence-blocks' );

$this->process_bail( __( 'Submission Failed', 'kadence-blocks' ), $required_message );
break;
} else if ( empty( $file['size'] ) ) {
continue;
}
Expand All @@ -297,10 +308,12 @@ public function process_fields( $fields ) {
// Is file too big.
if ( $file['size'] > $max_upload_size_bytes ) {
$this->process_bail( __( 'Submission Failed. File too large', 'kadence-blocks' ), __( 'File too large', 'kadence-blocks' ) );
break;
}

if ( ! is_uploaded_file( $file['tmp_name'] ) ) {
$this->process_bail( __( 'Submission Failed. File could not be uploaded', 'kadence-blocks' ), __( 'File was not uploaded', 'kadence-blocks' ) );
break;
}

$allowed_file_categories = empty( $field['allowedTypes'] ) ? array( 'images' ) : $field['allowedTypes'];
Expand All @@ -316,6 +329,7 @@ public function process_fields( $fields ) {
$space = get_upload_space_available();
if ( $space < $file_size || upload_is_user_over_quota( false ) ) {
$this->process_bail( __( 'Submission Failed. Not enough disk quota on this website.', 'kadence-blocks' ), __( 'Not enough disk quota on this website.', 'kadence-blocks' ) );
break;
}
}
if ( ! function_exists( 'wp_handle_upload' ) ) {
Expand Down
Loading