';
} elseif ( isset($_POST['wp_http_referer']) ) {
$redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), urlencode(stripslashes($_POST['wp_http_referer'])));
$referer = '';
} else {
$redirect = 'users.php';
}
// WP_User_Search class
// by Mark Jaquith
class WP_User_Search {
var $results;
var $search_term;
var $page;
var $raw_page;
var $users_per_page = 50;
var $first_user;
var $last_user;
var $query_limit;
var $query_from_where;
var $total_users_for_query = 0;
var $too_many_total_users = false;
var $search_errors;
function WP_User_Search ($search_term = '', $page = '') { // constructor
$this->search_term = $search_term;
$this->raw_page = ( '' == $page ) ? false : (int) $page;
$this->page = (int) ( '' == $page ) ? 1 : $page;
$this->prepare_query();
$this->query();
$this->prepare_vars_for_template_usage();
$this->do_paging();
}
function prepare_query() {
global $wpdb;
$this->first_user = ($this->page - 1) * $this->users_per_page;
$this->query_limit = 'LIMIT ' . $this->first_user . ',' . $this->users_per_page;
if ( $this->search_term ) {
$searches = array();
$search_sql = 'AND (';
foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col )
$searches[] = $col . " LIKE '%$this->search_term%'";
$search_sql .= implode(' OR ', $searches);
$search_sql .= ')';
}
$this->query_from_where = "FROM $wpdb->users WHERE 1=1 $search_sql";
if ( !$_GET['update'] && !$this->search_term && !$this->raw_page && $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users") > $this->users_per_page )
$this->too_many_total_users = sprintf(__('Because this blog has more than %s users, they cannot all be shown on one page. Use the paging or search functionality in order to find the user you want to edit.'), $this->users_per_page);
}
function query() {
global $wpdb;
$this->results = $wpdb->get_col('SELECT ID ' . $this->query_from_where . $this->query_limit);
if ( $this->results )
$this->total_users_for_query = $wpdb->get_var('SELECT COUNT(ID) ' . $this->query_from_where); // no limit
else
$this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!'));
}
function prepare_vars_for_template_usage() {
$this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone
}
function do_paging() {
if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results
$prev_page = ( $this->page > 1) ? true : false;
$next_page = ( ($this->page * $this->users_per_page) < $this->total_users_for_query ) ? true : false;
$this->paging_text = '';
if ( $prev_page )
$this->paging_text .= '
« Previous Page
';
if ( $next_page )
$this->paging_text .= 'Next Page »
';
if ( $prev_page || $next_page )
$this->paging_text .= '
';
}
}
function get_results() {
return (array) $this->results;
}
function page_links() {
echo $this->paging_text;
}
function results_are_paged() {
if ( $this->paging_text )
return true;
return false;
}
function is_search() {
if ( $this->search_term )
return true;
return false;
}
}
switch ($action) {
case 'promote':
check_admin_referer('bulk-users');
if (empty($_POST['users'])) {
wp_redirect($redirect);
}
if ( !current_user_can('edit_users') )
wp_die(__('You can’t edit users.'));
$userids = $_POST['users'];
$update = 'promote';
foreach($userids as $id) {
if ( ! current_user_can('edit_user', $id) )
wp_die(__('You can’t edit that user.'));
// The new role of the current user must also have edit_users caps
if($id == $current_user->id && !$wp_roles->role_objects[$_POST['new_role']]->has_cap('edit_users')) {
$update = 'err_admin_role';
continue;
}
$user = new WP_User($id);
$user->set_role($_POST['new_role']);
}
wp_redirect(add_query_arg('update', $update, $redirect));
break;
case 'dodelete':
check_admin_referer('delete-users');
if ( empty($_POST['users']) ) {
wp_redirect($redirect);
}
if ( !current_user_can('delete_users') )
wp_die(__('You can’t delete users.'));
$userids = $_POST['users'];
$update = 'del';
$delete_count = 0;
foreach ( (array) $userids as $id) {
if ( ! current_user_can('delete_user', $id) )
wp_die(__('You can’t delete that user.'));
if($id == $current_user->id) {
$update = 'err_admin_del';
continue;
}
switch($_POST['delete_option']) {
case 'delete':
wp_delete_user($id);
break;
case 'reassign':
wp_delete_user($id, $_POST['reassign_user']);
break;
}
++$delete_count;
}
$redirect = add_query_arg('delete_count', $delete_count, $redirect);
wp_redirect(add_query_arg('update', $update, $redirect));
break;
case 'delete':
check_admin_referer('bulk-users');
if ( empty($_POST['users']) )
wp_redirect($redirect);
if ( !current_user_can('delete_users') )
$errors = new WP_Error('edit_users', __('You can’t delete users.'));
$userids = $_POST['users'];
include ('admin-header.php');
?>
get_results() as $userid ) {
$tmp_user = new WP_User($userid);
$roles = $tmp_user->roles;
$role = array_shift($roles);
$roleclasses[$role][$tmp_user->user_login] = $tmp_user;
}
if ( isset($_GET['update']) ) :
switch($_GET['update']) {
case 'del':
case 'del_many':
?>
get_error_messages() as $message )
echo "- $message
";
?>
too_many_total_users ) : ?>
is_search() ) : ?>
search_term)); ?>
search_errors ) ) : ?>
search_errors->get_error_messages() as $message )
echo "- $message
";
?>
get_results() ) : ?>
is_search() ) : ?>
first_user + 1, min($wp_user_search->first_user + $wp_user_search->users_per_page, $wp_user_search->total_users_for_query), $wp_user_search->total_users_for_query); ?>
results_are_paged() ) : ?>
page_links(); ?>
'user_login', 'first_name' => 'user_firstname', 'last_name' => 'user_lastname', 'email' => 'user_email', 'url' => 'user_uri', 'role' => 'user_role') as $formpost => $var ) {
$var = 'new_' . $var;
$$var = wp_specialchars(stripslashes($_POST[$formpost]));
}
unset($name);
}
?>
'.sprintf(__('Users can
register themselves or you can manually create users here.'), get_option('siteurl').'/wp-register.php').''; ?>
get_error_messages() as $message )
echo "
$message
";
?>