Merge pull request #105 from jonfalcon/master

Display wp user role filters
This commit is contained in:
Champ Camba
2016-02-29 18:48:22 +08:00
4 changed files with 110 additions and 92 deletions
+6
View File
@@ -251,3 +251,9 @@ p.disabled-on-off .um-admin-yesno *{
border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0;
border: 1px solid #ddd; border: 1px solid #ddd;
} }
.um-admin.users-php .subsubsub li.subsep {
display: block;
visibility: hidden;
height: 0;
}
+89 -77
View File
@@ -23,7 +23,7 @@ class UM_Admin_Users {
add_filter('user_row_actions', array(&$this, 'user_row_actions'), 10, 2); add_filter('user_row_actions', array(&$this, 'user_row_actions'), 10, 2);
} }
/*** /***
*** @Custom row actions for users page *** @Custom row actions for users page
***/ ***/
@@ -42,7 +42,7 @@ class UM_Admin_Users {
return $actions; return $actions;
} }
/*** /***
*** @sort users by newest first *** @sort users by newest first
***/ ***/
@@ -57,7 +57,7 @@ class UM_Admin_Users {
} }
return $query; return $query;
} }
/*** /***
@@ -67,37 +67,37 @@ class UM_Admin_Users {
global $wpdb, $pagenow; global $wpdb, $pagenow;
if ( is_admin() && $pagenow=='users.php' && isset($_GET[ $this->custom_role ]) && $_GET[ $this->custom_role ] != '') { if ( is_admin() && $pagenow=='users.php' && isset($_GET[ $this->custom_role ]) && $_GET[ $this->custom_role ] != '') {
$role = $_GET[ $this->custom_role ]; $role = $_GET[ $this->custom_role ];
$query->query_where = $query->query_where =
str_replace('WHERE 1=1', str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID IN ( "WHERE 1=1 AND {$wpdb->users}.ID IN (
SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta
WHERE {$wpdb->usermeta}.meta_key = 'role' WHERE {$wpdb->usermeta}.meta_key = 'role'
AND {$wpdb->usermeta}.meta_value = '{$role}')", AND {$wpdb->usermeta}.meta_value = '{$role}')",
$query->query_where $query->query_where
); );
} }
if ( is_admin() && $pagenow=='users.php' && isset($_GET[ 'status' ]) && $_GET[ 'status' ] != '') { if ( is_admin() && $pagenow=='users.php' && isset($_GET[ 'status' ]) && $_GET[ 'status' ] != '') {
$status = urldecode($_GET[ 'status' ]); $status = urldecode($_GET[ 'status' ]);
if ( $status == 'needs-verification') { if ( $status == 'needs-verification') {
$query->query_where = str_replace('WHERE 1=1', $query->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID IN ( "WHERE 1=1 AND {$wpdb->users}.ID IN (
SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta
WHERE {$wpdb->usermeta}.meta_key = '_um_verified' WHERE {$wpdb->usermeta}.meta_key = '_um_verified'
AND {$wpdb->usermeta}.meta_value = 'pending')", AND {$wpdb->usermeta}.meta_value = 'pending')",
$query->query_where $query->query_where
); );
} else { } else {
$query->query_where = str_replace('WHERE 1=1', $query->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID IN ( "WHERE 1=1 AND {$wpdb->users}.ID IN (
SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta
WHERE {$wpdb->usermeta}.meta_key = 'account_status' WHERE {$wpdb->usermeta}.meta_key = 'account_status'
AND {$wpdb->usermeta}.meta_value = '{$status}')", AND {$wpdb->usermeta}.meta_value = '{$status}')",
$query->query_where $query->query_where
); );
} }
@@ -105,9 +105,9 @@ class UM_Admin_Users {
} }
return $query; return $query;
} }
/*** /***
*** @Change the roles with UM roles *** @Change the roles with UM roles
***/ ***/
@@ -115,15 +115,16 @@ class UM_Admin_Users {
global $ultimatemember, $query; global $ultimatemember, $query;
remove_filter('pre_user_query', array(&$this, 'custom_users_filter') ); remove_filter('pre_user_query', array(&$this, 'custom_users_filter') );
$views = array(); $old_views = $views;
$views = array();
if ( !isset($_REQUEST[ $this->custom_role ]) && !isset($_REQUEST['status']) ) { 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>'; $views['all'] = '<a href="'.admin_url('users.php').'" class="current">All <span class="count">('.$ultimatemember->query->count_users().')</span></a>';
} else { } else {
$views['all'] = '<a href="'.admin_url('users.php').'">All <span class="count">('.$ultimatemember->query->count_users().')</span></a>'; $views['all'] = '<a href="'.admin_url('users.php').'">All <span class="count">('.$ultimatemember->query->count_users().')</span></a>';
} }
$status = array( $status = array(
'approved' => __('Approved','ultimatemember'), 'approved' => __('Approved','ultimatemember'),
'awaiting_admin_review' => __('Pending review','ultimatemember'), 'awaiting_admin_review' => __('Pending review','ultimatemember'),
@@ -131,45 +132,56 @@ class UM_Admin_Users {
'inactive' => __('Inactive','ultimatemember'), 'inactive' => __('Inactive','ultimatemember'),
'rejected' => __('Rejected','ultimatemember') 'rejected' => __('Rejected','ultimatemember')
); );
$ultimatemember->query->count_users_by_status( 'unassigned' ); $ultimatemember->query->count_users_by_status( 'unassigned' );
foreach( $status as $k => $v ) { foreach( $status as $k => $v ) {
if ( isset($_REQUEST['status']) && $_REQUEST['status'] == $k ) { if ( isset($_REQUEST['status']) && $_REQUEST['status'] == $k ) {
$current = 'class="current"'; $current = 'class="current"';
} else { } else {
$current = ''; $current = '';
} }
$views[ $k ] = '<a href="'.admin_url('users.php').'?status='.$k.'" ' . $current . '>'. $v . ' <span class="count">('.$ultimatemember->query->count_users_by_status( $k ).')</span></a>'; $views[ $k ] = '<a href="'.admin_url('users.php').'?status='.$k.'" ' . $current . '>'. $v . ' <span class="count">('.$ultimatemember->query->count_users_by_status( $k ).')</span></a>';
} }
$views = apply_filters('um_admin_views_users', $views ); $views = apply_filters('um_admin_views_users', $views );
// remove all filters
unset($old_views['all']);
// add separator
$views['subsep'] = '<span></span>';
// merge views
foreach( $old_views as $key => $view ) {
$views[ $key ] = $view;
}
return $views; return $views;
} }
/*** /***
*** @Bulk user editing actions *** @Bulk user editing actions
***/ ***/
function um_bulk_users_edit(){ function um_bulk_users_edit(){
global $ultimatemember; global $ultimatemember;
$admin_err = 0; $admin_err = 0;
if (isset($_REQUEST) && !empty ($_REQUEST) ){ if (isset($_REQUEST) && !empty ($_REQUEST) ){
// bulk change role // 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 (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' ) ) if ( ! current_user_can( 'edit_users' ) )
wp_die( __( 'You do not have enough permissions to do that.','ultimatemember') ); wp_die( __( 'You do not have enough permissions to do that.','ultimatemember') );
check_admin_referer('bulk-users'); check_admin_referer('bulk-users');
$users = $_REQUEST['users']; $users = $_REQUEST['users'];
$new_role = current( array_filter( $_REQUEST['um_change_role'] ) ); $new_role = current( array_filter( $_REQUEST['um_change_role'] ) );
foreach($users as $user_id){ foreach($users as $user_id){
$ultimatemember->user->set( $user_id ); $ultimatemember->user->set( $user_id );
// change role for non-wp admins or non-community admins only // change role for non-wp admins or non-community admins only
@@ -179,7 +191,7 @@ class UM_Admin_Users {
$admin_err = 1; $admin_err = 1;
} }
} }
if ( $admin_err == 0 ){ if ( $admin_err == 0 ){
wp_redirect( admin_url('users.php?update=promote') ); wp_redirect( admin_url('users.php?update=promote') );
exit; exit;
@@ -187,38 +199,38 @@ class UM_Admin_Users {
wp_redirect( admin_url('users.php?update=err_admin_role') ); wp_redirect( admin_url('users.php?update=err_admin_role') );
exit; exit;
} }
} else if ( isset($_REQUEST['um_changeit']) && $_REQUEST['um_changeit'] != '' ) { } else if ( isset($_REQUEST['um_changeit']) && $_REQUEST['um_changeit'] != '' ) {
wp_redirect( admin_url('users.php') ); wp_redirect( admin_url('users.php') );
exit; exit;
} }
// bulk edit users // 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 ( 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' ) ) if ( ! current_user_can( 'edit_users' ) )
wp_die( __( 'You do not have enough permissions to do that.','ultimatemember') ); wp_die( __( 'You do not have enough permissions to do that.','ultimatemember') );
check_admin_referer('bulk-users'); check_admin_referer('bulk-users');
$users = $_REQUEST['users']; $users = $_REQUEST['users'];
$bulk_action = current( array_filter( $_REQUEST['um_bulk_action']) ); $bulk_action = current( array_filter( $_REQUEST['um_bulk_action']) );
foreach($users as $user_id){ foreach($users as $user_id){
$ultimatemember->user->set( $user_id ); $ultimatemember->user->set( $user_id );
if ( !um_user('super_admin') ) { if ( !um_user('super_admin') ) {
do_action("um_admin_user_action_hook", $bulk_action); do_action("um_admin_user_action_hook", $bulk_action);
do_action("um_admin_user_action_{$bulk_action}_hook"); do_action("um_admin_user_action_{$bulk_action}_hook");
} else { } else {
$admin_err = 1; $admin_err = 1;
} }
} }
// Finished. redirect now // Finished. redirect now
if ( $admin_err == 0 ){ if ( $admin_err == 0 ){
wp_redirect( admin_url('users.php?update=users_updated') ); wp_redirect( admin_url('users.php?update=users_updated') );
@@ -227,36 +239,36 @@ class UM_Admin_Users {
wp_redirect( admin_url('users.php?update=err_users_updated') ); wp_redirect( admin_url('users.php?update=err_users_updated') );
exit; exit;
} }
} else if ( isset($_REQUEST['um_bulkedit']) && $_REQUEST['um_bulkedit'] != '' ) { } else if ( isset($_REQUEST['um_bulkedit']) && $_REQUEST['um_bulkedit'] != '' ) {
wp_redirect( admin_url('users.php') ); wp_redirect( admin_url('users.php') );
exit; exit;
} }
// filter by user role // 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'] ) { if ( isset($_REQUEST['um_filter_role']) && ! isset( $_REQUEST['um_filter_processed'] ) && ( ! isset( $_REQUEST['new_role'] ) || empty( $_REQUEST['new_role'] ) ) && $_REQUEST['um_filter_role'] ) {
$filter_role = current( array_filter( $_REQUEST['um_filter_role'] ) ); $filter_role = current( array_filter( $_REQUEST['um_filter_role'] ) );
$uri = add_query_arg('um_role',$filter_role); $uri = add_query_arg('um_role',$filter_role);
$uri = add_query_arg('s',$_REQUEST['s'], $uri); $uri = add_query_arg('s',$_REQUEST['s'], $uri);
$uri = add_query_arg('um_filter_processed',true, $uri); $uri = add_query_arg('um_filter_processed',true, $uri);
exit( wp_redirect( $uri ) ); exit( wp_redirect( $uri ) );
} }
} }
} }
/*** /***
*** @Add UM roles to users admin *** @Add UM roles to users admin
***/ ***/
function restrict_manage_users() { function restrict_manage_users() {
global $ultimatemember; global $ultimatemember;
?> ?>
<div style="float:right;margin:0 4px"> <div style="float:right;margin:0 4px">
<label class="screen-reader-text" for="um_filter_role"><?php _e('Filter by','ultimatemember'); ?></label> <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"> <select name="um_filter_role[]" id="um_filter_role" class="" style="width: 120px">
<option value="0"><?php _e('Filter by','ultimatemember'); ?></option> <option value="0"><?php _e('Filter by','ultimatemember'); ?></option>
@@ -267,52 +279,52 @@ class UM_Admin_Users {
<option value="<?php echo urlencode( $role ); ?>" <?php selected($role,$um_filter_role); ?>><?php echo $role_name; ?></option> <option value="<?php echo urlencode( $role ); ?>" <?php selected($role,$um_filter_role); ?>><?php echo $role_name; ?></option>
<?php } ?> <?php } ?>
</select> </select>
<input name="um_role" id="um_role" class="button" value="<?php _e('Filter'); ?>" type="submit" /> <input name="um_role" id="um_role" class="button" value="<?php _e('Filter'); ?>" type="submit" />
</div> </div>
<div style="float:right;margin:0 4px"> <div style="float:right;margin:0 4px">
<label class="screen-reader-text" for="um_bulk_action"><?php _e('UM Action','ultimatemember'); ?></label> <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"> <select name="um_bulk_action[]" id="um_bulk_action" class="" style="width: 200px">
<option value="0"><?php _e('UM Action','ultimatemember'); ?></option> <option value="0"><?php _e('UM Action','ultimatemember'); ?></option>
<?php echo $ultimatemember->user->get_bulk_admin_actions(); ?> <?php echo $ultimatemember->user->get_bulk_admin_actions(); ?>
</select> </select>
<input name="um_bulkedit" id="um_bulkedit" class="button" value="<?php _e('Apply'); ?>" type="submit" /> <input name="um_bulkedit" id="um_bulkedit" class="button" value="<?php _e('Apply'); ?>" type="submit" />
</div> </div>
<div style="float:right;margin:0 4px"> <div style="float:right;margin:0 4px">
<label class="screen-reader-text" for="um_change_role"><?php _e('Community role&hellip;','ultimatemember'); ?></label> <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"> <select name="um_change_role[]" id="um_change_role" class="" style="width: 160px">
<?php foreach($ultimatemember->query->get_roles( $add_default = 'Community role&hellip;' ) as $key => $value) { ?> <?php foreach($ultimatemember->query->get_roles( $add_default = 'Community role&hellip;' ) as $key => $value) { ?>
<option value="<?php echo $key; ?>"><?php echo $value; ?></option> <option value="<?php echo $key; ?>"><?php echo $value; ?></option>
<?php } ?> <?php } ?>
</select> </select>
<input name="um_changeit" id="um_changeit" class="button" value="<?php _e('Change','ultimatemember'); ?>" type="submit" /> <input name="um_changeit" id="um_changeit" class="button" value="<?php _e('Change','ultimatemember'); ?>" type="submit" />
</div> </div>
<?php <?php
} }
/*** /***
*** @add user columns *** @add user columns
***/ ***/
function manage_users_columns($columns) { function manage_users_columns($columns) {
$admin = new UM_Admin_Metabox(); $admin = new UM_Admin_Metabox();
$columns['um_role'] = __('Community Role','ultimatemember') . $admin->_tooltip( __('This is the membership role set by Ultimate Member plugin','ultimatemember') ); $columns['um_role'] = __('Community Role','ultimatemember') . $admin->_tooltip( __('This is the membership role set by Ultimate Member plugin','ultimatemember') );
return $columns; return $columns;
} }
/*** /***
*** @show user columns *** @show user columns
***/ ***/
@@ -320,16 +332,16 @@ class UM_Admin_Users {
global $ultimatemember; global $ultimatemember;
if ( $this->custom_role == $column_name ) { if ( $this->custom_role == $column_name ) {
if ( get_option( "um_cache_userdata_{$user_id}" ) ) { if ( get_option( "um_cache_userdata_{$user_id}" ) ) {
delete_option( "um_cache_userdata_{$user_id}" ); delete_option( "um_cache_userdata_{$user_id}" );
} }
um_fetch_user( $user_id ); um_fetch_user( $user_id );
return $ultimatemember->user->get_role_name( um_user('role') ); return $ultimatemember->user->get_role_name( um_user('role') );
} }
return $value; return $value;
} }
} }
+3 -3
View File
@@ -1569,7 +1569,7 @@ class UM_Fields {
$option_value = $k; $option_value = $k;
} }
$output .= '<option value="'.$option_value.'" '; $output .= '<option value="' . htmlentities($option_value) . '" ';
if ( $this->is_selected($form_key, $option_value, $data) ) { if ( $this->is_selected($form_key, $option_value, $data) ) {
$output.= 'selected'; $output.= 'selected';
} }
@@ -1639,7 +1639,7 @@ class UM_Fields {
$opt_value = $v; $opt_value = $v;
} }
$output .= '<option value="'.$opt_value.'" '; $output .= '<option value="'.htmlentities($opt_value).'" ';
if ( $this->is_selected($key, $opt_value, $data) ) { if ( $this->is_selected($key, $opt_value, $data) ) {
$output.= 'selected'; $output.= 'selected';
} }
@@ -1721,7 +1721,7 @@ class UM_Fields {
} }
$output .= '<label class="um-field-radio '.$active.' um-field-half '.$col_class.'">'; $output .= '<label class="um-field-radio '.$active.' um-field-half '.$col_class.'">';
$output .= '<input type="radio" name="'.$form_key.'" value="'.$option_value.'" '; $output .= '<input type="radio" name="'.$form_key.'" value="'.htmlentities($option_value).'" ';
if ( $this->is_radio_checked($key, $option_value, $data) ) { if ( $this->is_radio_checked($key, $option_value, $data) ) {
$output.= 'checked'; $output.= 'checked';
+12 -12
View File
@@ -39,25 +39,25 @@ class UM_Mail {
$lang = get_locale(); $lang = get_locale();
if( $lang == 'en_US' ){ if( $lang == 'en_US' ){
$lang = '/'; $lang = '';
}else{ } else {
$lang .= '/'; $lang .= '/';
} }
} }
if ( file_exists( get_stylesheet_directory() . '/ultimate-member/templates/email/' . $lang . $template . '.html' ) ) { if ( file_exists( get_stylesheet_directory() . '/ultimate-member/templates/email/' . $lang . $template . '.html' ) ) {
$template_path = get_stylesheet_directory() . '/ultimate-member/templates/email/' . $lang . $template . '.html'; $template_path = get_stylesheet_directory() . '/ultimate-member/templates/email/' . $lang . $template . '.html';
}
if ( isset( $args['path'] ) ) {
$path = $args['path'] . $lang;
} else { } else {
$path = um_path . 'templates/email/' . $lang; if ( isset( $args['path'] ) ) {
} $path = $args['path'] . $lang;
} else {
$path = um_path . 'templates/email/' . $lang;
}
if ( file_exists( $path . $template . '.html' ) ) { if ( file_exists( $path . $template . '.html' ) ) {
$template_path = $path . $template . '.html'; $template_path = $path . $template . '.html';
}
} }
return apply_filters( 'um_email_template_path', $template_path, $template, $args ); return apply_filters( 'um_email_template_path', $template_path, $template, $args );
@@ -82,7 +82,7 @@ class UM_Mail {
if ( isset( $args['admin'] ) || isset( $args['plain_text'] ) ) { if ( isset( $args['admin'] ) || isset( $args['plain_text'] ) ) {
$this->force_plain_text = 'forced'; $this->force_plain_text = 'forced';
} }
// HTML e-mail or text // HTML e-mail or text
if ( um_get_option('email_html') && $this->email_template( $template, $args ) ) { if ( um_get_option('email_html') && $this->email_template( $template, $args ) ) {