From 53ada5c4431924332b8c1ad7dc5ba7ae70b879e0 Mon Sep 17 00:00:00 2001 From: nikitozzzzzzz Date: Thu, 7 Jun 2018 12:40:41 +0300 Subject: [PATCH] - fixed profile tab privacy; - code reviewed; --- includes/core/class-profile.php | 55 ++++++++++++++++------------ includes/core/um-actions-profile.php | 3 +- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/includes/core/class-profile.php b/includes/core/class-profile.php index ebfb4ec7..5ea09603 100644 --- a/includes/core/class-profile.php +++ b/includes/core/class-profile.php @@ -118,18 +118,20 @@ if ( ! class_exists( 'um\core\Profile' ) ) { // disable private tabs if ( ! is_admin() ) { - if( is_user_logged_in() ) { - $user_id = um_user('ID'); - um_fetch_user( get_current_user_id() ); - } + if ( is_user_logged_in() ) { + $user_id = um_user('ID'); + um_fetch_user( get_current_user_id() ); + } + foreach ( $tabs as $id => $tab ) { if ( ! $this->can_view_tab( $id ) ) { - unset( $tabs[$id] ); + unset( $tabs[ $id ] ); } } - if( is_user_logged_in() ) { - um_fetch_user( $user_id ); - } + + if ( is_user_logged_in() ) { + um_fetch_user( $user_id ); + } } return $tabs; @@ -143,10 +145,13 @@ if ( ! class_exists( 'um\core\Profile' ) ) { */ function tabs_active() { $tabs = $this->tabs(); - foreach( $tabs as $id => $info ) { - if ( ! UM()->options()->get('profile_tab_'.$id) && !isset( $info['_builtin'] ) && !isset( $info['custom'] ) ) + + foreach ( $tabs as $id => $info ) { + if ( ! UM()->options()->get( 'profile_tab_' . $id ) && ! isset( $info['_builtin'] ) && ! isset( $info['custom'] ) ) { unset( $tabs[ $id ] ); + } } + return $tabs; } @@ -212,20 +217,20 @@ if ( ! class_exists( 'um\core\Profile' ) ) { * @return bool */ function can_view_tab( $tab ) { - - $target_id = UM()->user()->target_id; - if( empty($target_id) ) { - return true; - } - + + $target_id = UM()->user()->target_id; + if ( empty( $target_id ) ) { + return true; + } + $can_view = false; - $privacy = intval( UM()->options()->get( 'profile_tab_' . $tab . '_privacy' ) ); - switch( $privacy ) { - case 0: - $can_view = true; - break; - + $privacy = intval( UM()->options()->get( 'profile_tab_' . $tab . '_privacy' ) ); + switch ( $privacy ) { + case 0: + $can_view = true; + break; + case 1: $can_view = ! is_user_logged_in(); break; @@ -239,9 +244,11 @@ if ( ! class_exists( 'um\core\Profile' ) ) { break; case 4: - if( is_user_logged_in() ) { + if ( is_user_logged_in() ) { $roles = (array) UM()->options()->get( 'profile_tab_' . $tab . '_roles' ); - if( in_array( UM()->user()->get_role(), $roles ) ) { + + $current_user_roles = um_user( 'roles' ); + if ( ! empty( $current_user_roles ) && count( array_intersect( $current_user_roles, $roles ) ) > 0 ) { $can_view = true; } } diff --git a/includes/core/um-actions-profile.php b/includes/core/um-actions-profile.php index 4e035551..a70c47f3 100644 --- a/includes/core/um-actions-profile.php +++ b/includes/core/um-actions-profile.php @@ -1277,8 +1277,9 @@ add_action( 'um_after_profile_fields', 'um_add_submit_button_to_profile', 1000 ) * @param array $args */ function um_profile_menu( $args ) { - if ( ! UM()->options()->get( 'profile_menu' ) ) + if ( ! UM()->options()->get( 'profile_menu' ) ) { return; + } // get active tabs $tabs = UM()->profile()->tabs_active();