LLMS_Form_Validator::validate_matching_fields( array $posted_data, array[] $fields )
Ensure matching fields match one another.
Parameters Parameters
- $posted_data
-
(array) (Required) Array of posted data.
- $fields
-
(array[]) (Required) Array of LifterLMS form fields.
Return Return
(WP_Error|true)
Source Source
File: includes/forms/class-llms-form-validator.php
public function validate_matching_fields( $posted_data, $fields ) {
$err = new WP_Error();
$err_data = array();
$matches = array();
foreach ( $fields as $field ) {
// Field doesn't have a match to check or it was already checked by it's match.
if ( empty( $field['match'] ) || in_array( $field['id'], $matches, true ) ) {
continue;
}
$field_name = isset( $field['label'] ) ? $field['label'] : $field['name'];
$name = $field['name'];
$match_field = LLMS_Forms::instance()->get_field_by( $fields, 'id', $field['match'] );
if ( ! $match_field ) {
continue;
}
$match = $match_field['name'];
$val = isset( $posted_data[ $name ] ) ? $posted_data[ $name ] : '';
$match = isset( $posted_data[ $match ] ) ? $posted_data[ $match ] : '';
if ( $val !== $match ) {
$match_name = isset( $match_field['label'] ) ? $match_field['label'] : $match_field['name'];
$err->add( 'llms-form-field-not-matched', sprintf( __( '%1$s must match %2$s.', 'lifterlms' ), $field_name, $match_name ) );
$err_data[] = array( $field, $match_field );
}
// Fields reference each other so we only need to check the pair one time.
$matches[] = $match_field['id'];
}
if ( $err->errors ) {
$err->add_data( $err_data, 'llms-form-field-not-matched' );
return $err;
}
return true;
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 5.0.0 | Introduced. |