2014-12-15 22:38:07 +02:00
< ? php
class UM_Admin_Users {
function __construct () {
$this -> custom_role = 'um_role' ;
add_filter ( 'manage_users_columns' , array ( & $this , 'manage_users_columns' ) );
add_action ( 'manage_users_custom_column' , array ( & $this , 'manage_users_custom_column' ), 10 , 3 );
add_action ( 'restrict_manage_users' , array ( & $this , 'restrict_manage_users' ) );
add_action ( 'admin_init' , array ( & $this , 'um_bulk_users_edit' ), 9 );
add_filter ( 'views_users' , array ( & $this , 'views_users' ) );
add_filter ( 'pre_user_query' , array ( & $this , 'um_role_filter' ) );
add_filter ( 'user_row_actions' , array ( & $this , 'user_row_actions' ), 10 , 2 );
}
/***
*** @Custom row actions for users page
***/
function user_row_actions ( $actions , $user_object ) {
um_fetch_user ( $user_object -> ID );
$actions = array ();
$actions [ 'backend_profile' ] = " <a class='' href=' " . admin_url ( 'user-edit.php?user_id=' . $user_object -> ID ) . " '> " . __ ( 'Edit' , 'ultimatemember' ) . " </a> " ;
$actions [ 'frontend_profile' ] = " <a class='' href=' " . um_user_profile_url () . " '> " . __ ( 'Edit in frontend' , 'ultimatemember' ) . " </a> " ;
return $actions ;
}
/***
*** @Custom role filter
***/
function um_role_filter ( $query ){
global $pagenow ;
if ( is_admin () && $pagenow == 'users.php' && isset ( $_GET [ $this -> custom_role ]) && $_GET [ $this -> custom_role ] != '' ) {
$query -> role = urldecode ( $_GET [ $this -> custom_role ]);
global $wpdb ;
$query -> query_where =
str_replace ( 'WHERE 1=1' ,
" WHERE 1=1 AND { $wpdb -> users } .ID IN (
SELECT { $wpdb -> usermeta } .user_id FROM $wpdb->usermeta
WHERE { $wpdb -> usermeta } .meta_key = 'role'
AND { $wpdb -> usermeta } .meta_value = ' { $query -> role } ') " ,
$query -> query_where
);
}
return $query ;
}
/***
*** @Change the roles with UM roles
***/
function views_users ( $views ) {
global $ultimatemember , $query ;
remove_filter ( 'pre_user_query' , array ( & $this , 'um_role_filter' ) );
$views = array ();
if ( ! isset ( $_REQUEST [ $this -> custom_role ]) ) {
$views [ 'all' ] = '<a href="' . admin_url ( 'users.php' ) . '" class="current">All <span class="count">(' . $ultimatemember -> query -> count_users () . ')</span></a>' ;
} else {
$views [ 'all' ] = '<a href="' . admin_url ( 'users.php' ) . '">All <span class="count">(' . $ultimatemember -> query -> count_users () . ')</span></a>' ;
}
$roles = $ultimatemember -> query -> get_roles ();
foreach ( $roles as $role => $role_name ){
if ( isset ( $_REQUEST [ $this -> custom_role ]) && $_REQUEST [ $this -> custom_role ] == $role ) {
$views [ $role ] = '<a href="' . admin_url ( 'users.php' ) . '?' . $this -> custom_role . '=' . $role . '" class="current">' . $role_name . ' <span class="count">(' . $ultimatemember -> query -> count_users_by_role ( $role ) . ')</span></a>' ;
} else {
$views [ $role ] = '<a href="' . admin_url ( 'users.php' ) . '?' . $this -> custom_role . '=' . $role . '">' . $role_name . ' <span class="count">(' . $ultimatemember -> query -> count_users_by_role ( $role ) . ')</span></a>' ;
}
}
return $views ;
}
/***
*** @Bulk user editing actions
***/
function um_bulk_users_edit (){
global $ultimatemember ;
$admin_err = 0 ;
if ( isset ( $_REQUEST ) && ! empty ( $_REQUEST ) ){
// bulk change role
if ( isset ( $_REQUEST [ 'users' ]) && is_array ( $_REQUEST [ 'users' ]) && isset ( $_REQUEST [ 'um_changeit' ]) && $_REQUEST [ 'um_changeit' ] != '' && isset ( $_REQUEST [ 'um_change_role' ]) && ! empty ( $_REQUEST [ 'um_change_role' ]) ){
if ( ! current_user_can ( 'edit_users' ) )
wp_die ( __ ( 'You do not have enough permissions to do that.' , 'ultimatemember' ) );
check_admin_referer ( 'bulk-users' );
$users = $_REQUEST [ 'users' ];
$new_role = $_REQUEST [ 'um_change_role' ];
foreach ( $users as $user_id ){
$ultimatemember -> user -> set ( $user_id );
if ( ! um_user ( 'super_admin' ) ) {
$ultimatemember -> user -> set_role ( $new_role );
} else {
$admin_err = 1 ;
}
}
if ( $admin_err == 0 ){
wp_redirect ( admin_url ( 'users.php?update=promote' ) );
exit ;
} else {
wp_redirect ( admin_url ( 'users.php?update=err_admin_role' ) );
exit ;
}
} else if ( isset ( $_REQUEST [ 'um_changeit' ]) && $_REQUEST [ 'um_changeit' ] != '' ) {
wp_redirect ( admin_url ( 'users.php' ) );
exit ;
}
// bulk edit users
if ( isset ( $_REQUEST [ 'users' ]) && is_array ( $_REQUEST [ 'users' ]) && isset ( $_REQUEST [ 'um_bulkedit' ]) && $_REQUEST [ 'um_bulkedit' ] != '' && isset ( $_REQUEST [ 'um_bulk_action' ]) && ! empty ( $_REQUEST [ 'um_bulk_action' ]) ){
if ( ! current_user_can ( 'edit_users' ) )
wp_die ( __ ( 'You do not have enough permissions to do that.' , 'ultimatemember' ) );
check_admin_referer ( 'bulk-users' );
$users = $_REQUEST [ 'users' ];
$bulk_action = $_REQUEST [ 'um_bulk_action' ];
foreach ( $users as $user_id ){
$ultimatemember -> user -> set ( $user_id );
if ( ! um_user ( 'super_admin' ) ) {
do_action ( " um_admin_user_action_hook " , $bulk_action );
do_action ( " um_admin_user_action_ { $bulk_action } _hook " );
} else {
$admin_err = 1 ;
}
}
if ( $admin_err == 0 ){
wp_redirect ( admin_url ( 'users.php?update=users_updated' ) );
exit ;
} else {
wp_redirect ( admin_url ( 'users.php?update=err_users_updated' ) );
exit ;
}
} else if ( isset ( $_REQUEST [ 'um_bulkedit' ]) && $_REQUEST [ 'um_bulkedit' ] != '' ) {
wp_redirect ( admin_url ( 'users.php' ) );
exit ;
}
}
}
/***
*** @Add UM roles to users admin
***/
function restrict_manage_users () {
global $ultimatemember ;
?>
<div class="actions">
2015-01-05 01:33:17 +02:00
<label class="screen-reader-text" for="um_bulk_action"><?php _e('Take Action','ultimatemember'); ?></label>
2014-12-15 22:38:07 +02:00
<select name="um_bulk_action" id="um_bulk_action" class="umaf-selectjs" style="width: 200px">
2015-01-05 01:33:17 +02:00
<option value="0"><?php _e('Take Action','ultimatemember'); ?></option>
2014-12-15 22:38:07 +02:00
<?php echo $ultimatemember->user->get_bulk_admin_actions(); ?>
</select>
<input name="um_bulkedit" id="um_bulkedit" class="button" value="<?php _e('Apply'); ?>" type="submit" />
</div>
<div class="actions">
<label class="screen-reader-text" for="um_change_role"><?php _e('Community role…','ultimatemember'); ?></label>
<select name="um_change_role" id="um_change_role" class="umaf-selectjs" style="width: 160px">
<?php foreach($ultimatemember->query->get_roles( $add_default = 'Community role…' ) as $key => $value) { ?>
<option value="<?php echo $key; ?>"><?php echo $value; ?></option>
<?php } ?>
</select>
<input name="um_changeit" id="um_changeit" class="button" value="<?php _e('Change','ultimatemember'); ?>" type="submit" />
</div>
<?php
}
/***
*** @add user columns
***/
function manage_users_columns($columns) {
$admin = new UM_Admin_Metabox();
unset($columns['posts']);
unset($columns['email']);
$columns['um_role'] = __('Community Role','ultimatemember') . $admin->_tooltip( __('This is the membership role set by Ultimate Member plugin','ultimatemember') );
$columns['role'] = __('WordPress Role','ultimatemember') . $admin->_tooltip( __('This is the membership role set by WordPress','ultimatemember') );
$columns['um_status'] = __('Status','ultimatemember') . $admin->_tooltip( __('This is current user status in your membership site','ultimatemember') );
2015-01-05 01:33:17 +02:00
2014-12-15 22:38:07 +02:00
return $columns;
}
/***
*** @show user columns
***/
function manage_users_custom_column($value, $column_name, $user_id) {
global $ultimatemember;
2015-01-05 01:33:17 +02:00
2014-12-15 22:38:07 +02:00
if ( 'um_status' == $column_name ) {
um_fetch_user( $user_id );
if ( um_user('account_status') == 'approved' ) {
$output = '<span class="um-admin-tag small ok">'.um_user('account_status_name').'</span>';
} else {
$output = '<span class="um-admin-tag small pending">'.um_user('account_status_name').'</span>';
}
return $output;
}
if ( $this->custom_role == $column_name ) {
um_fetch_user( $user_id );
return um_user('role_name');
}
return $value;
}
}