LLMS_Form_Handler::maybe_modify_edit_account_field_settings( array $posted_data, string $location, array[] $fields )
Modify LifterLMS Fields prior to performing submit handler validations.
Parameters Parameters
- $posted_data
-
(array) (Required) User submitted form data (passed by reference).
- $location
-
(string) (Required) Form location ID.
- $fields
-
(array[]) (Required) Array of LifterLMS Form Fields (passed by reference).
Return Return
(void)
Source Source
File: includes/forms/class-llms-form-handler.php
public function maybe_modify_edit_account_field_settings( &$posted_data, $location, &$fields ) { if ( 'account' !== $location ) { return; } /** * If email address and passwords aren't submitted we can mark them as "optional" fields. * * These fields are dynamically toggled and disabled if they're not modified. * Process `password_current` as last as it depends on `password` field submission. */ foreach ( array( 'email_address', 'password', 'password_current' ) as $field_id ) { // If the field exists and it's not included (or empty) in the posted data. $index = LLMS_Forms::instance()->get_field_by( $fields, 'id', $field_id, 'index' ); if ( false !== $index && empty( $posted_data[ $fields[ $index ]['name'] ] ) ) { // When updating a password, the `password_current` is mandatory. if ( 'account' === $location && 'password_current' === $field_id ) { // Get `password` field. $password_index = LLMS_Forms::instance()->get_field_by( $fields, 'id', 'password', 'index' ); // If a `passowrd` feld has been submitted then the `password_current` cannot be skipped. if ( false !== $password_index && ! empty( $posted_data[ $fields[ $password_index ]['name'] ] ) ) { continue; } } // Remove the field so we don't accidentally save an empty value later. unset( $posted_data[ $fields[ $index ]['name'] ] ); // Mark the field as optional (for validation purposes). $fields[ $index ]['required'] = false; // Check if there's a confirm field and do the same. $con_index = LLMS_Forms::instance()->get_field_by( $fields, 'id', "{$field_id}_confirm", 'index' ); if ( false !== $con_index && empty( $posted_data[ $fields[ $con_index ]['name'] ] ) ) { unset( $posted_data[ $fields[ $con_index ]['name'] ] ); $fields[ $con_index ]['required'] = false; } } } }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
5.1.0 | Do not allow submitting a password change without providing a password_current |
5.0.0 | Introduced. |