From 1a11581d12c4815a5600f9570b6e570c37e7762b Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Fri, 15 Nov 2024 11:16:55 +0200 Subject: [PATCH] * fixed `um_current_user_can()`; --- includes/core/class-roles-capabilities.php | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/includes/core/class-roles-capabilities.php b/includes/core/class-roles-capabilities.php index 6fde9d99..d0061f36 100644 --- a/includes/core/class-roles-capabilities.php +++ b/includes/core/class-roles-capabilities.php @@ -711,16 +711,25 @@ if ( ! class_exists( 'um\core\Roles_Capabilities' ) ) { $current_user_roles = $this->get_all_user_roles( $user_id ); - switch( $cap ) { + switch ( $cap ) { case 'edit': - if ( get_current_user_id() === $user_id && ! um_user( 'can_edit_profile' ) ) { - $return = 0; - } elseif ( ! um_user( 'can_access_private_profile' ) && UM()->user()->is_private_profile( $user_id ) ) { - $return = 0; - } elseif ( ! um_user( 'can_edit_everyone' ) ) { - $return = 0; - } elseif ( um_user( 'can_edit_roles' ) && ( empty( $current_user_roles ) || count( array_intersect( $current_user_roles, um_user( 'can_edit_roles' ) ) ) <= 0 ) ) { - $return = 0; + if ( get_current_user_id() === $user_id ) { + if ( ! um_user( 'can_edit_profile' ) ) { + $return = 0; + } + } else { + // don't merge these `if` conditions! + if ( ! um_user( 'can_access_private_profile' ) && UM()->user()->is_private_profile( $user_id ) ) { + $return = 0; + } else { + if ( ! um_user( 'can_edit_everyone' ) ) { + $return = 0; + } else { + if ( um_user( 'can_edit_roles' ) && ( empty( $current_user_roles ) || count( array_intersect( $current_user_roles, um_user( 'can_edit_roles' ) ) ) <= 0 ) ) { + $return = 0; + } + } + } } break;