mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-06-05 15:09:37 +09:00
- added some roles getting functions;
- fixed displaying role at profile page;
This commit is contained in:
@@ -243,6 +243,69 @@ if ( ! class_exists( 'Roles_Capabilities' ) ) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
function get_editable_user_roles() {
|
||||
// User has roles so look for a UM Role one
|
||||
$um_roles_keys = get_option( 'um_roles' );
|
||||
|
||||
if ( ! empty( $um_roles_keys ) ) {
|
||||
$um_roles_keys = array_map( function( $item ) {
|
||||
return 'um_' . $item;
|
||||
}, $um_roles_keys );
|
||||
}
|
||||
|
||||
return array_merge( $um_roles_keys, array( 'subscriber' ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $user_id
|
||||
*
|
||||
* @return bool|mixed
|
||||
*/
|
||||
function get_editable_priority_user_role( $user_id ) {
|
||||
$user = get_userdata( $user_id );
|
||||
|
||||
if ( empty( $user->roles ) )
|
||||
return false;
|
||||
|
||||
// User has roles so look for a UM Role one
|
||||
$um_roles_keys = get_option( 'um_roles' );
|
||||
|
||||
if ( ! empty( $um_roles_keys ) ) {
|
||||
$um_roles_keys = array_map( function( $item ) {
|
||||
return 'um_' . $item;
|
||||
}, $um_roles_keys );
|
||||
}
|
||||
|
||||
$orders = array();
|
||||
foreach ( array_values( $user->roles ) as $userrole ) {
|
||||
if ( ! empty( $um_roles_keys ) && in_array( $userrole, $um_roles_keys ) ) {
|
||||
$userrole_metakey = substr( $userrole, 3 );
|
||||
} else {
|
||||
$userrole_metakey = $userrole;
|
||||
}
|
||||
|
||||
$rolemeta = get_option( "um_role_{$userrole_metakey}_meta", false );
|
||||
|
||||
if ( ! $rolemeta ) {
|
||||
$orders[ $userrole ] = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
$orders[ $userrole ] = ! empty( $rolemeta['_um_priority'] ) ? $rolemeta['_um_priority'] : 0;
|
||||
}
|
||||
|
||||
arsort( $orders );
|
||||
$roles_in_priority = array_keys( $orders );
|
||||
$roles_in_priority = array_intersect( $roles_in_priority, $this->get_editable_user_roles() );
|
||||
|
||||
return array_shift( $roles_in_priority );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $user_id
|
||||
*
|
||||
|
||||
@@ -384,7 +384,6 @@ if ( ! class_exists( 'User' ) ) {
|
||||
if ( ! current_user_can( 'edit_user', $userdata->ID ) )
|
||||
return $content;
|
||||
|
||||
//$user_role = UM()->roles()->um_get_user_role( $userdata->ID );
|
||||
$user_role = UM()->roles()->get_um_user_role( $userdata->ID );
|
||||
if ( $user_role && ! empty( $userdata->roles ) && count( $userdata->roles ) == 1 )
|
||||
$style = 'style="display:none;"';
|
||||
@@ -587,9 +586,7 @@ if ( ! class_exists( 'User' ) ) {
|
||||
}
|
||||
|
||||
// add permissions
|
||||
//$user_role = UM()->roles()->um_get_user_role( $this->id );
|
||||
$user_role = UM()->roles()->get_priority_user_role( $this->id );
|
||||
//$this->profile['role'] = ( strpos( $user_role, 'um_' ) === 0 ) ? str_replace( 'um_', '', $user_role ) : $user_role;
|
||||
$this->profile['role'] = $user_role;
|
||||
$this->profile['roles'] = UM()->roles()->get_all_user_roles( $this->id );
|
||||
|
||||
|
||||
@@ -1646,7 +1646,8 @@ function um_user( $data, $attrs = null ) {
|
||||
|
||||
case 'role_select':
|
||||
case 'role_radio':
|
||||
return UM()->roles()->get_role_name( um_user( 'role' ) );
|
||||
|
||||
return UM()->roles()->get_role_name( UM()->roles()->get_editable_priority_user_role( um_user( 'ID' ) ) );
|
||||
break;
|
||||
|
||||
case 'submitted':
|
||||
|
||||
Reference in New Issue
Block a user