Files

335 lines
10 KiB
PHP
Raw Permalink Normal View History

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') );
2014-12-15 22:38:07 +02:00
add_action('manage_users_custom_column', array(&$this, 'manage_users_custom_column'), 10, 3);
2014-12-15 22:38:07 +02:00
add_action('restrict_manage_users', array(&$this, 'restrict_manage_users') );
2014-12-15 22:38:07 +02:00
add_action('admin_init', array(&$this, 'um_bulk_users_edit'), 9);
2014-12-15 22:38:07 +02:00
add_filter('views_users', array(&$this, 'views_users') );
2015-02-15 20:31:41 +02:00
add_filter('pre_user_query', array(&$this, 'sort_by_newest') );
2015-02-13 02:05:04 +02:00
add_filter('pre_user_query', array(&$this, 'custom_users_filter') );
2014-12-15 22:38:07 +02:00
add_filter('user_row_actions', array(&$this, 'user_row_actions'), 10, 2);
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
$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
}
2015-11-05 19:51:31 +08:00
$actions = apply_filters('um_admin_user_row_actions', $actions, $user_id );
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
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'] ) );
$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;
?>
<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>
<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();
$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 ) { ?>
<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>
<div style="float:right;margin:0 4px">
2014-12-15 22:38:07 +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>
<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&hellip;','ultimatemember'); ?></label>
<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&hellip;' ) 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;
}
}