From ba2078a5f7e90c404a713cb4eb5c69d9db69cc33 Mon Sep 17 00:00:00 2001 From: yuriinalivaiko Date: Tue, 16 Mar 2021 14:43:38 +0200 Subject: [PATCH] The code is simplified. The logic has not been changed. --- includes/um-short-functions.php | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/includes/um-short-functions.php b/includes/um-short-functions.php index 09d5d6df..77f60c56 100644 --- a/includes/um-short-functions.php +++ b/includes/um-short-functions.php @@ -1514,6 +1514,7 @@ function um_can_view_field( $data ) { if ( isset( $data['public'] ) && UM()->fields()->set_mode != 'register' ) { + $current_user_roles = []; if ( is_user_logged_in() ) { $previous_user = um_user( 'ID' ); um_fetch_user( get_current_user_id() ); @@ -1523,40 +1524,31 @@ function um_can_view_field( $data ) { } switch ( $data['public'] ) { - case '1': - $can_view = true; + case '1': // Everyone break; - case '2': + case '2': // Members if ( ! is_user_logged_in() ) { $can_view = false; } break; - case '-1': + case '-1': // Only visible to profile owner and admins if ( ! is_user_logged_in() ) { $can_view = false; - } else { - if ( ! um_is_user_himself() && ! UM()->roles()->um_user_can( 'can_edit_everyone' ) ) { - $can_view = false; - } + } elseif ( ! um_is_user_himself() && ! UM()->roles()->um_user_can( 'can_edit_everyone' ) ) { + $can_view = false; } break; - case '-2': + case '-2': // Only specific member roles if ( ! is_user_logged_in() ) { $can_view = false; - } else { - if ( ! empty( $data['roles'] ) ) { - if ( empty( $current_user_roles ) || count( array_intersect( $current_user_roles, $data['roles'] ) ) <= 0 ) { - $can_view = false; - } - } + } elseif ( ! empty( $data['roles'] ) && count( array_intersect( $current_user_roles, $data['roles'] ) ) <= 0 ) { + $can_view = false; } break; case '-3': // Only visible to profile owner and specific roles if ( ! is_user_logged_in() ) { $can_view = false; - } elseif ( um_is_core_page( 'user' ) && um_is_user_himself() ) { - $can_view = true; - } elseif ( empty( $current_user_roles ) || ( ! empty( $data['roles'] ) && count( array_intersect( $current_user_roles, $data['roles'] ) ) <= 0 ) ) { + } elseif ( ! um_is_user_himself() && ! empty( $data['roles'] ) && count( array_intersect( $current_user_roles, $data['roles'] ) ) <= 0 ) { $can_view = false; } break;