This commit is contained in:
Mykyta Synelnikov
2024-11-13 17:20:52 +02:00
parent 7414e10efd
commit b4becdbcf5
4 changed files with 62 additions and 77 deletions
+14 -27
View File
@@ -687,7 +687,6 @@ if ( ! class_exists( 'um\core\Roles_Capabilities' ) ) {
return $roles;
}
/**
* Current user can
*
@@ -696,11 +695,13 @@ if ( ! class_exists( 'um\core\Roles_Capabilities' ) ) {
*
* @return bool|int
*/
function um_current_user_can( $cap, $user_id ) {
public function um_current_user_can( $cap, $user_id ) {
if ( ! is_user_logged_in() ) {
return false;
}
$user_id = absint( $user_id ); // typecast
$return = 1;
if ( get_current_user_id() !== um_user( 'ID' ) ) {
@@ -712,37 +713,23 @@ if ( ! class_exists( 'um\core\Roles_Capabilities' ) ) {
switch( $cap ) {
case 'edit':
if ( get_current_user_id() == $user_id ) {
if ( um_user( 'can_edit_profile' ) ) {
$return = 1;
} else {
$return = 0;
}
} else {
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;
} else {
$return = 1;
}
}
}
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;
}
break;
case 'delete':
if ( ! um_user( 'can_delete_everyone' ) )
if ( ! um_user( 'can_delete_everyone' ) ) {
$return = 0;
elseif ( um_user( 'can_delete_roles' ) && ( empty( $current_user_roles ) || count( array_intersect( $current_user_roles, um_user( 'can_delete_roles' ) ) ) <= 0 ) )
} elseif ( um_user( 'can_delete_roles' ) && ( empty( $current_user_roles ) || count( array_intersect( $current_user_roles, um_user( 'can_delete_roles' ) ) ) <= 0 ) ) {
$return = 0;
}
break;
}
+9 -9
View File
@@ -14,27 +14,28 @@ function um_avatar_defaults( $avatar_defaults ) {
}
add_filter( 'avatar_defaults', 'um_avatar_defaults', 99999 );
/**
* Get user UM avatars
* Get user UM avatars.
* @param string $avatar
* @param string $id_or_email
* @param string $size
* @param string $avatar_class
* @param string $default
* @param string $alt
* @hooks filter `get_avatar`
* @return string returns avatar in image html elements
*/
function um_get_avatar( $avatar = '', $id_or_email='', $size = '96', $avatar_class = '', $default = '', $alt = '' ) {
if ( is_numeric($id_or_email) )
if ( is_numeric( $id_or_email ) ) {
$user_id = (int) $id_or_email;
elseif ( is_string( $id_or_email ) && ( $user = get_user_by( 'email', $id_or_email ) ) )
} elseif ( is_string( $id_or_email ) && ( $user = get_user_by( 'email', $id_or_email ) ) ) {
$user_id = $user->ID;
elseif ( is_object( $id_or_email ) && ! empty( $id_or_email->user_id ) )
} elseif ( is_object( $id_or_email ) && ! empty( $id_or_email->user_id ) ) {
$user_id = (int) $id_or_email->user_id;
if ( empty( $user_id ) )
}
if ( empty( $user_id ) ) {
return $avatar;
}
if ( $user_id !== um_user( 'ID' ) ) {
$temp_id = um_user( 'ID' );
@@ -51,7 +52,6 @@ function um_get_avatar( $avatar = '', $id_or_email='', $size = '96', $avatar_cla
}
add_filter( 'get_avatar', 'um_get_avatar', 99999, 5 );
if ( ! function_exists( 'um_filter_get_avatar_url' ) ) {
/**
@@ -76,4 +76,4 @@ if ( ! function_exists( 'um_filter_get_avatar_url' ) ) {
// hooked in the get_avatar_data function
add_filter( 'get_avatar_url', 'um_filter_get_avatar_url', 20, 3 );
}
}