diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index cfed96a9..89a5313d 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -48,7 +48,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) { /** * @var array */ - public $field_icons = array(); + public $field_icons = ''; /** * @var array @@ -2089,14 +2089,13 @@ if ( ! class_exists( 'um\core\Fields' ) ) { return $arr_restricted_fields; } - /** * Gets a field in 'input mode' * * @param string $key - * @param array $data - * @param bool $rule - * @param array $args + * @param array $data + * @param bool $rule + * @param array $args * * @return string|null * @throws \Exception @@ -2116,11 +2115,11 @@ if ( ! class_exists( 'um\core\Fields' ) ) { $_um_profile_id = um_user( 'ID' ); } - if ( ! is_user_logged_in() && isset( $data['is_block'] ) && 1 === (int) $data['is_block'] ) { + if ( isset( $data['is_block'] ) && 1 === (int) $data['is_block'] && ! is_user_logged_in() ) { $_um_profile_id = 0; } - // get whole field data + // Get whole field data. if ( isset( $data ) && is_array( $data ) ) { $origin_data = $this->get_field( $key ); if ( is_array( $origin_data ) ) { @@ -2132,6 +2131,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) { if ( ! isset( $data['type'] ) ) { return ''; } + $type = $data['type']; if ( isset( $data['in_group'] ) && '' !== $data['in_group'] && 'group' !== $rule ) { return ''; @@ -2151,19 +2151,17 @@ if ( ! class_exists( 'um\core\Fields' ) ) { } // required user permission 'required_perm' - it's field attribute predefined in the field data in code - if ( isset( $data['required_perm'] ) ) { - if ( ! UM()->roles()->um_user_can( $data['required_perm'] ) ) { - return ''; - } + if ( isset( $data['required_perm'] ) && ! UM()->roles()->um_user_can( $data['required_perm'] ) ) { + return ''; } // fields that need to be disabled in edit mode (profile) (email, username, etc.) $arr_restricted_fields = $this->get_restricted_fields_for_edit( $_um_profile_id ); - if ( in_array( $key, $arr_restricted_fields, true ) && true === $this->editing && 'profile' === $this->set_mode ) { + if ( true === $this->editing && 'profile' === $this->set_mode && in_array( $key, $arr_restricted_fields, true ) ) { return ''; } - if ( 'view' === $data['visibility'] && 'register' !== $this->set_mode ) { + if ( 'register' !== $this->set_mode && array_key_exists( 'visibility', $data ) && 'view' === $data['visibility'] ) { return ''; } @@ -2175,8 +2173,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) { // Stop return empty values build field attributes: - if ( 'view' === $data['visibility'] && 'register' === $this->set_mode ) { - + if ( 'register' === $this->set_mode && array_key_exists( 'visibility', $data ) && 'view' === $data['visibility'] ) { um_fetch_user( get_current_user_id() ); if ( ! um_user( 'can_edit_everyone' ) ) { $disabled = ' disabled="disabled" '; @@ -2199,38 +2196,56 @@ if ( ! class_exists( 'um\core\Fields' ) ) { } } + /** + * Filters a field disabled attribute. + * + * @since 2.0 + * @hook um_is_field_disabled + * + * @param {string} $disabled Disable global CSS. + * @param {array} $data Field data. + * + * @return {string} Set string to ' disabled="disabled" ' to make a field disabled. + * + * @example