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' ) );
2016-01-01 18:47:54 +02:00
2014-12-15 22:38:07 +02:00
add_action ( 'manage_users_custom_column' , array ( & $this , 'manage_users_custom_column' ), 10 , 3 );
2016-01-01 18:47:54 +02:00
2014-12-15 22:38:07 +02:00
add_action ( 'restrict_manage_users' , array ( & $this , 'restrict_manage_users' ) );
2016-01-01 18:47:54 +02:00
2014-12-15 22:38:07 +02:00
add_action ( 'admin_init' , array ( & $this , 'um_bulk_users_edit' ), 9 );
2016-01-01 18:47:54 +02:00
2014-12-15 22:38:07 +02:00
add_filter ( 'views_users' , array ( & $this , 'views_users' ) );
2016-01-01 18:47:54 +02:00
2015-02-15 20:31:41 +02:00
add_filter ( 'pre_user_query' , array ( & $this , 'sort_by_newest' ) );
2016-01-01 18:47:54 +02:00
2015-02-13 02:05:04 +02:00
add_filter ( 'pre_user_query' , array ( & $this , 'custom_users_filter' ) );
2016-01-01 18:47:54 +02:00
2014-12-15 22:38:07 +02:00
add_filter ( 'user_row_actions' , array ( & $this , 'user_row_actions' ), 10 , 2 );
2016-01-01 18:47:54 +02:00
2014-12-15 22:38:07 +02:00
}
/***
*** @Custom row actions for users page
***/
function user_row_actions ( $actions , $user_object ) {
2015-02-13 02:05:04 +02:00
$user_id = $user_object -> ID ;
um_fetch_user ( $user_id );
2014-12-15 22:38:07 +02:00
2016-01-01 18:47:54 +02:00
$actions [ 'frontend_profile' ] = " <a class='' href=' " . um_user_profile_url () . " '> " . __ ( 'View profile' , 'ultimatemember' ) . " </a> " ;
2014-12-15 22:38:07 +02:00
2015-02-13 02:05:04 +02:00
if ( um_user ( 'submitted' ) ) {
2015-04-07 20:10:23 +02:00
$actions [ 'view_info' ] = '<a href="#" data-modal="UM_preview_registration" data-modal-size="smaller" data-dynamic-content="um_admin_review_registration" data-arg1="' . $user_id . '" data-arg2="edit_registration">' . __ ( 'Info' , 'ultimatemember' ) . '</a>' ;
2015-02-13 02:05:04 +02:00
}
2016-01-01 18:47:54 +02:00
2015-11-05 19:51:31 +08:00
$actions = apply_filters ( 'um_admin_user_row_actions' , $actions , $user_id );
2016-01-01 18:47:54 +02:00
2014-12-15 22:38:07 +02:00
return $actions ;
}
2015-02-15 20:31:41 +02:00
/***
*** @sort users by newest first
***/
function sort_by_newest ( $query ){
2015-11-05 19:51:31 +08:00
global $wpdb , $pagenow ;
2015-02-15 20:31:41 +02:00
if ( is_admin () && $pagenow == 'users.php' ) {
if ( ! isset ( $_REQUEST [ 'orderby' ])) {
$query -> query_vars [ " order " ] = 'desc' ;
$query -> query_orderby = " ORDER BY user_registered " . ( $query -> query_vars [ " order " ] == " desc " ? " desc " : " asc " ); //set sort order
}
}
return $query ;
}
2014-12-15 22:38:07 +02:00
/***
2015-02-13 02:05:04 +02:00
*** @custom users filter
2014-12-15 22:38:07 +02:00
***/
2015-02-13 02:05:04 +02:00
function custom_users_filter ( $query ){
2015-11-05 19:51:31 +08:00
global $wpdb , $pagenow ;
2014-12-15 22:38:07 +02:00
if ( is_admin () && $pagenow == 'users.php' && isset ( $_GET [ $this -> custom_role ]) && $_GET [ $this -> custom_role ] != '' ) {
2015-11-05 19:51:31 +08:00
$role = $_GET [ $this -> custom_role ];
2014-12-15 22:38:07 +02:00
$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'
2015-04-25 21:41:47 +02:00
AND { $wpdb -> usermeta } .meta_value = ' { $role } ') " ,
2014-12-15 22:38:07 +02:00
$query -> query_where
);
}
2015-02-13 02:05:04 +02:00
if ( is_admin () && $pagenow == 'users.php' && isset ( $_GET [ 'status' ]) && $_GET [ 'status' ] != '' ) {
2015-04-25 21:41:47 +02:00
$status = urldecode ( $_GET [ 'status' ]);
2015-11-05 19:51:31 +08:00
if ( $status == 'needs-verification' ) {
$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 = '_um_verified'
AND { $wpdb -> usermeta } .meta_value = 'pending') " ,
$query -> query_where
2015-02-13 02:05:04 +02:00
);
2015-11-05 19:51:31 +08:00
} else {
$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 = 'account_status'
AND { $wpdb -> usermeta } .meta_value = ' { $status } ') " ,
$query -> query_where
);
}
2015-02-13 02:05:04 +02:00
}
2014-12-15 22:38:07 +02:00
return $query ;
}
/***
*** @Change the roles with UM roles
***/
function views_users ( $views ) {
global $ultimatemember , $query ;
2015-02-13 02:05:04 +02:00
remove_filter ( 'pre_user_query' , array ( & $this , 'custom_users_filter' ) );
2014-12-15 22:38:07 +02:00
$views = array ();
2015-02-13 02:05:04 +02:00
if ( ! isset ( $_REQUEST [ $this -> custom_role ]) && ! isset ( $_REQUEST [ 'status' ]) ) {
$views [ 'all' ] = '<a href="' . admin_url ( 'users.php' ) . '" class="current">All <span class="count">(' . $ultimatemember -> query -> count_users () . ')</span></a>' ;
2014-12-15 22:38:07 +02:00
} else {
2015-02-13 02:05:04 +02:00
$views [ 'all' ] = '<a href="' . admin_url ( 'users.php' ) . '">All <span class="count">(' . $ultimatemember -> query -> count_users () . ')</span></a>' ;
2014-12-15 22:38:07 +02:00
}
2015-02-13 02:05:04 +02:00
$status = array (
'approved' => __ ( 'Approved' , 'ultimatemember' ),
'awaiting_admin_review' => __ ( 'Pending review' , 'ultimatemember' ),
'awaiting_email_confirmation' => __ ( 'Waiting e-mail confirmation' , 'ultimatemember' ),
'inactive' => __ ( 'Inactive' , 'ultimatemember' ),
2015-11-05 19:51:31 +08:00
'rejected' => __ ( 'Rejected' , 'ultimatemember' )
2015-02-13 02:05:04 +02:00
);
2014-12-15 22:38:07 +02:00
2015-11-05 19:51:31 +08:00
$ultimatemember -> query -> count_users_by_status ( 'unassigned' );
2015-02-13 02:05:04 +02:00
foreach ( $status as $k => $v ) {
if ( isset ( $_REQUEST [ 'status' ]) && $_REQUEST [ 'status' ] == $k ) {
$current = 'class="current"' ;
2014-12-15 22:38:07 +02:00
} else {
2015-02-13 02:05:04 +02:00
$current = '' ;
2014-12-15 22:38:07 +02:00
}
2015-02-13 02:05:04 +02:00
$views [ $k ] = '<a href="' . admin_url ( 'users.php' ) . '?status=' . $k . '" ' . $current . '>' . $v . ' <span class="count">(' . $ultimatemember -> query -> count_users_by_status ( $k ) . ')</span></a>' ;
2014-12-15 22:38:07 +02:00
}
2015-11-05 19:51:31 +08:00
$views = apply_filters ( 'um_admin_views_users' , $views );
2014-12-15 22:38:07 +02:00
return $views ;
}
/***
*** @Bulk user editing actions
***/
function um_bulk_users_edit (){
global $ultimatemember ;
$admin_err = 0 ;
2015-12-09 15:51:19 +08:00
2014-12-15 22:38:07 +02:00
if ( isset ( $_REQUEST ) && ! empty ( $_REQUEST ) ){
2015-12-09 15:51:19 +08:00
2014-12-15 22:38:07 +02:00
// 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' ];
2015-12-09 15:51:19 +08:00
$new_role = current ( array_filter ( $_REQUEST [ 'um_change_role' ] ) );
2014-12-15 22:38:07 +02:00
foreach ( $users as $user_id ){
$ultimatemember -> user -> set ( $user_id );
2015-02-01 01:30:04 +02:00
// change role for non-wp admins or non-community admins only
if ( ! um_user ( 'super_admin' ) || um_user ( 'role' ) != 'admin' ) {
2014-12-15 22:38:07 +02:00
$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
2015-02-13 02:05:04 +02:00
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' ]) ){
2014-12-15 22:38:07 +02:00
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' ];
2015-12-09 15:51:19 +08:00
$bulk_action = current ( array_filter ( $_REQUEST [ 'um_bulk_action' ]) );
2015-02-14 02:06:43 +02:00
2014-12-15 22:38:07 +02:00
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 ;
}
}
2015-02-14 02:06:43 +02:00
// Finished. redirect now
2014-12-15 22:38:07 +02:00
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 ;
}
2015-02-13 15:26:36 +02:00
// filter by user role
2015-12-10 10:45:58 +08:00
if ( isset ( $_REQUEST [ 'um_filter_role' ]) && ! isset ( $_REQUEST [ 'um_filter_processed' ] ) && ( ! isset ( $_REQUEST [ 'new_role' ] ) || empty ( $_REQUEST [ 'new_role' ] ) ) && $_REQUEST [ 'um_filter_role' ] ) {
2015-12-09 15:51:19 +08:00
$filter_role = current ( array_filter ( $_REQUEST [ 'um_filter_role' ] ) );
2015-12-10 10:45:58 +08:00
$uri = add_query_arg ( 'um_role' , $filter_role );
$uri = add_query_arg ( 's' , $_REQUEST [ 's' ], $uri );
$uri = add_query_arg ( 'um_filter_processed' , true , $uri );
exit ( wp_redirect ( $uri ) );
2015-02-13 15:26:36 +02:00
}
2014-12-15 22:38:07 +02:00
}
}
/***
*** @Add UM roles to users admin
***/
function restrict_manage_users () {
global $ultimatemember ;
?>
2016-01-01 18:47:54 +02:00
<div style="float:right;margin:0 4px">
2015-02-13 02:05:04 +02:00
<label class="screen-reader-text" for="um_filter_role"><?php _e('Filter by','ultimatemember'); ?></label>
2016-01-01 18:47:54 +02:00
<select name="um_filter_role[]" id="um_filter_role" class="" style="width: 120px">
2015-02-13 02:05:04 +02:00
<option value="0"><?php _e('Filter by','ultimatemember'); ?></option>
<?php
$roles = $ultimatemember->query->get_roles();
2015-12-10 10:45:58 +08:00
$um_filter_role = isset( $_REQUEST['um_filter_role'] )? current( array_filter($_REQUEST['um_filter_role']) ):'';
2015-02-13 02:05:04 +02:00
foreach( $roles as $role => $role_name ) { ?>
2015-12-10 10:45:58 +08:00
<option value="<?php echo urlencode( $role ); ?>" <?php selected($role,$um_filter_role); ?>><?php echo $role_name; ?></option>
2015-02-13 02:05:04 +02:00
<?php } ?>
</select>
<input name="um_role" id="um_role" class="button" value="<?php _e('Filter'); ?>" type="submit" />
</div>
2016-01-01 18:47:54 +02:00
<div style="float:right;margin:0 4px">
2014-12-15 22:38:07 +02:00
2016-01-01 18:47:54 +02:00
<label class="screen-reader-text" for="um_bulk_action"><?php _e('UM Action','ultimatemember'); ?></label>
<select name="um_bulk_action[]" id="um_bulk_action" class="" style="width: 200px">
<option value="0"><?php _e('UM 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>
2016-01-01 18:47:54 +02:00
<div style="float:right;margin:0 4px">
2014-12-15 22:38:07 +02:00
<label class="screen-reader-text" for="um_change_role"><?php _e('Community role…','ultimatemember'); ?></label>
2016-01-01 18:47:54 +02:00
<select name="um_change_role[]" id="um_change_role" class="" style="width: 160px">
2014-12-15 22:38:07 +02:00
<?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();
2015-11-05 19:51:31 +08:00
2014-12-15 22:38:07 +02:00
$columns['um_role'] = __('Community Role','ultimatemember') . $admin->_tooltip( __('This is the membership role set by Ultimate Member plugin','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 ( $this->custom_role == $column_name ) {
2015-11-05 19:51:31 +08:00
if ( get_option( "um_cache_userdata_{$user_id}" ) ) {
delete_option( "um_cache_userdata_{$user_id}" );
}
2014-12-15 22:38:07 +02:00
um_fetch_user( $user_id );
2015-11-05 19:51:31 +08:00
return $ultimatemember->user->get_role_name( um_user('role') );
2014-12-15 22:38:07 +02:00
}
return $value;
}
}