From cccce6ebc3e8211ccc1177c3113de5244b7e8bbb Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Fri, 27 Sep 2024 17:55:44 +0300 Subject: [PATCH] * fixed running `UM()->fields()->get_restricted_fields_for_edit()` function in the fields loop; --- includes/core/class-fields.php | 1 - includes/core/class-form.php | 7 ++++++- includes/core/um-actions-form.php | 12 +++++++----- includes/core/um-actions-profile.php | 5 +++-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index 3c443a0c..872dd5e2 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -2110,7 +2110,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) { return apply_filters( 'um_field_non_utf8_value', $option_value ); } - /** * Getting the fields that need to be disabled in edit mode (profile) * diff --git a/includes/core/class-form.php b/includes/core/class-form.php index c7a89c42..7a39efbf 100644 --- a/includes/core/class-form.php +++ b/includes/core/class-form.php @@ -448,6 +448,11 @@ if ( ! class_exists( 'um\core\Form' ) ) { $ignore_keys = array(); + $arr_restricted_fields = array(); + if ( 'profile' === $this->form_data['mode'] ) { + $arr_restricted_fields = UM()->fields()->get_restricted_fields_for_edit(); + } + $field_types_without_metakey = UM()->builtin()->get_fields_without_metakey(); foreach ( $custom_fields as $cf_k => $cf_data ) { if ( ! array_key_exists( 'type', $cf_data ) || in_array( $cf_data['type'], $field_types_without_metakey, true ) ) { @@ -493,7 +498,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { // Column names from wp_users table. $cf_metakeys = array_values( array_diff( $cf_metakeys, array( 'user_login' ) ) ); // Hidden for edit fields - $cf_metakeys = array_values( array_diff( $cf_metakeys, UM()->fields()->get_restricted_fields_for_edit() ) ); + $cf_metakeys = array_values( array_diff( $cf_metakeys, $arr_restricted_fields ) ); $cf_metakeys[] = 'profile_photo'; $cf_metakeys[] = 'cover_photo'; diff --git a/includes/core/um-actions-form.php b/includes/core/um-actions-form.php index d3f60a98..bf3560be 100644 --- a/includes/core/um-actions-form.php +++ b/includes/core/um-actions-form.php @@ -417,13 +417,15 @@ function um_submit_form_errors_hook_( $submitted_data, $form_data ) { um_reset_user(); } + $restricted_fields = array(); + if ( 'profile' === $mode ) { + $restricted_fields = UM()->fields()->get_restricted_fields_for_edit(); + } + foreach ( $fields as $key => $array ) { - if ( 'profile' === $mode ) { - $restricted_fields = UM()->fields()->get_restricted_fields_for_edit(); - if ( is_array( $restricted_fields ) && in_array( $key, $restricted_fields, true ) ) { - continue; - } + if ( 'profile' === $mode && is_array( $restricted_fields ) && in_array( $key, $restricted_fields, true ) ) { + continue; } $can_view = true; diff --git a/includes/core/um-actions-profile.php b/includes/core/um-actions-profile.php index 05a1a43b..e60e5ac8 100644 --- a/includes/core/um-actions-profile.php +++ b/includes/core/um-actions-profile.php @@ -226,6 +226,8 @@ function um_user_edit_profile( $args, $form_data ) { // loop through fields if ( ! empty( $fields ) ) { + $arr_restricted_fields = UM()->fields()->get_restricted_fields_for_edit( $user_id ); + foreach ( $fields as $key => $array ) { if ( ! isset( $array['type'] ) ) { continue; @@ -253,8 +255,7 @@ function um_user_edit_profile( $args, $form_data ) { } // fields that need to be disabled in edit mode (profile) (email, username, etc.) - $arr_restricted_fields = UM()->fields()->get_restricted_fields_for_edit( $user_id ); - if ( in_array( $key, $arr_restricted_fields, true ) ) { + if ( is_array( $arr_restricted_fields ) && in_array( $key, $arr_restricted_fields, true ) ) { continue; }