Merge branch 'master' of https://github.com/ultimatemember/ultimatemember into fix/permalink_base

This commit is contained in:
nikitozzzzzzz
2018-02-12 15:41:08 +02:00
8 changed files with 153 additions and 53 deletions
@@ -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
*
-3
View File
@@ -386,7 +386,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;"';
@@ -589,9 +588,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 );
+34 -31
View File
@@ -3,38 +3,41 @@
if ( ! defined( 'ABSPATH' ) ) exit;
/***
*** @checks if user can access the backend
***/
function um_block_wpadmin_by_user_role() {
if ( is_admin() && ! defined('DOING_AJAX') && um_user( 'ID' ) && ! um_user( 'can_access_wpadmin' ) && ! is_super_admin( um_user('ID') ) ) {
um_redirect_home();
}
/**
* Checks if user can access the backend
*/
function um_block_wpadmin_by_user_role() {
if ( is_admin() && ! defined( 'DOING_AJAX' ) && um_user( 'ID' ) && ! um_user( 'can_access_wpadmin' ) && ! is_super_admin( um_user( 'ID' ) ) ) {
um_redirect_home();
}
add_action( 'init', 'um_block_wpadmin_by_user_role', 99 );
/***
*** @hide admin bar appropriately
***/
function um_control_admin_bar( $content ){
if( is_user_logged_in() ){
if ( um_user('can_not_see_adminbar') ){
return false;
}
}
add_action( 'init', 'um_block_wpadmin_by_user_role', 99 );
return true;
}
return $content;
/**
* Hide admin bar appropriately
*
* @param $content
*
* @return bool
*/
function um_control_admin_bar( $content ) {
if ( is_user_logged_in() ) {
if ( um_user( 'can_not_see_adminbar' ) ) {
return false;
}
return true;
}
add_filter( 'show_admin_bar' , 'um_control_admin_bar', 9999, 1 );
/***
*** @fix permission for admin bar
***/
function um_force_admin_bar() {
um_reset_user();
}
add_action( 'wp_footer', 'um_force_admin_bar' );
return $content;
}
add_filter( 'show_admin_bar' , 'um_control_admin_bar', 9999, 1 );
/**
* Fix permission for admin bar
*/
function um_force_admin_bar() {
um_reset_user();
}
add_action( 'wp_footer', 'um_force_admin_bar' );