- fixed editable attribute base on the legacy code;

- if `editable` attribute  doesn't exist then we set `editable` to true by default;
This commit is contained in:
Mykyta Synelnikov
2023-09-05 01:12:16 +03:00
parent 10467d12ce
commit e5b8ff400e
5 changed files with 20 additions and 9 deletions
@@ -2383,6 +2383,11 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
$this->edit_mode_value = true;
}
// Set to true if `editable` doesn't exist (legacy case). It will be saved to DB as `true` after the first field update.
if ( null === $this->edit_mode_value ) {
$this->edit_mode_value = true;
}
if ( empty( $this->edit_mode_value ) ) {
$this->edit_mode_value = false;
}
+6 -3
View File
@@ -2186,7 +2186,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
if ( true === $this->editing && 'profile' === $this->set_mode ) {
if ( ! UM()->roles()->um_user_can( 'can_edit_everyone' ) ) {
if ( empty( $data['editable'] ) ) {
// It's for a legacy case `array_key_exists( 'editable', $data )`.
if ( array_key_exists( 'editable', $data ) && empty( $data['editable'] ) ) {
$disabled = ' disabled="disabled" ';
}
}
@@ -3635,7 +3636,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$class = 'um-icon-android-radio-button-off';
}
if ( empty( $data['editable'] ) ) {
// It's for a legacy case `array_key_exists( 'editable', $data )`.
if ( array_key_exists( 'editable', $data ) && empty( $data['editable'] ) ) {
$col_class .= ' um-field-radio-state-disabled';
}
@@ -3754,7 +3756,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$class = 'um-icon-android-checkbox-outline-blank';
}
if ( empty( $data['editable'] ) ) {
// It's for a legacy case `array_key_exists( 'editable', $data )`.
if ( array_key_exists( 'editable', $data ) && empty( $data['editable'] ) ) {
$col_class .= ' um-field-radio-state-disabled';
}
+2 -1
View File
@@ -1065,7 +1065,8 @@ if ( ! class_exists( 'um\core\Form' ) ) {
if ( strstr( $field_key, 'role_' ) && array_key_exists( 'options', $field_settings ) && is_array( $field_settings['options'] ) ) {
if ( isset( $this->post_form['mode'] ) && 'profile' === $this->post_form['mode'] ) {
if ( empty( $field_settings['editable'] ) || ! um_can_edit_field( $field_settings ) ) {
// It's for a legacy case `array_key_exists( 'editable', $field_settings )`.
if ( ( array_key_exists( 'editable', $field_settings ) && empty( $field_settings['editable'] ) ) || ! um_can_edit_field( $field_settings ) ) {
continue;
}
}
+5 -4
View File
@@ -386,10 +386,11 @@ function um_user_edit_profile( $args, $form_data ) {
}
}
// Secure selected role
if ( ( isset( $fields['role'] ) && ! empty( $fields['role']['editable'] ) && um_can_view_field( $fields['role'] ) ) ||
( isset( $fields['role_select'] ) && ! empty( $fields['role_select']['editable'] ) && um_can_view_field( $fields['role_select'] ) ) ||
( isset( $fields['role_radio'] ) && ! empty( $fields['role_radio']['editable'] ) && um_can_view_field( $fields['role_radio'] ) ) ) {
// Secure selected role.
// It's for a legacy case `array_key_exists( 'editable', $fields['role'] )` and similar.
if ( ( isset( $fields['role'] ) && ( ! array_key_exists( 'editable', $fields['role'] ) || ! empty( $fields['role']['editable'] ) ) && um_can_view_field( $fields['role'] ) ) ||
( isset( $fields['role_select'] ) && ( ! array_key_exists( 'editable', $fields['role_select'] ) || ! empty( $fields['role_select']['editable'] ) ) && um_can_view_field( $fields['role_select'] ) ) ||
( isset( $fields['role_radio'] ) && ( ! array_key_exists( 'editable', $fields['role_radio'] ) || ! empty( $fields['role_radio']['editable'] ) ) && um_can_view_field( $fields['role_radio'] ) ) ) {
if ( ! empty( $args['submitted']['role'] ) ) {
global $wp_roles;
+2 -1
View File
@@ -1667,7 +1667,8 @@ function um_can_edit_field( $data ) {
$can_edit = false;
} else {
if ( ! UM()->roles()->um_user_can( 'can_edit_everyone' ) ) {
if ( empty( $data['editable'] ) ) {
// It's for a legacy case `array_key_exists( 'editable', $data )`.
if ( array_key_exists( 'editable', $data ) && empty( $data['editable'] ) ) {
$can_edit = false;
} else {
if ( ! um_is_user_himself() ) {