2003-12-08 01:28:41 +00:00
<? php
2008-08-16 07:27:34 +00:00
/**
* Users administration panel.
*
* @package WordPress
* @subpackage Administration
*/
/** WordPress Administration Bootstrap */
2010-08-11 21:54:51 +00:00
require_once ( './admin.php' );
2008-08-16 07:27:34 +00:00
2010-12-16 08:43:22 +00:00
if ( ! current_user_can ( 'list_users' ) )
wp_die ( __ ( 'Cheatin’ uh?' ) );
2011-01-16 21:47:24 +00:00
$wp_list_table = _get_list_table ( 'WP_Users_List_Table' );
2011-01-25 19:20:20 +00:00
$pagenum = $wp_list_table -> get_pagenum ();
2006-11-18 07:31:29 +00:00
$title = __ ( 'Users' );
2006-11-30 18:38:06 +00:00
$parent_file = 'users.php' ;
2006-11-18 07:31:29 +00:00
2010-10-07 19:34:18 +00:00
add_screen_option ( 'per_page' , array ( 'label' => _x ( 'Users' , 'users per page (screen options)' )) );
2010-05-27 23:10:26 +00:00
// contextual help - choose Help on the top right of admin panel to preview this.
add_contextual_help ( $current_screen ,
2010-12-16 06:37:03 +00:00
'<p>' . __ ( 'This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role.' ) . '</p>' .
2010-06-02 20:04:07 +00:00
'<p>' . __ ( 'You can customize the display of information on this screen as you can on other screens, by using the Screen Options tab and the on-screen filters.' ) . '</p>' .
'<p>' . __ ( 'To add a new user for your site, click the Add New button at the top of the screen or Add New in the Users menu section.' ) . '</p>' .
2010-05-27 23:10:26 +00:00
'<p><strong>' . __ ( 'For more information:' ) . '</strong></p>' .
2011-04-28 15:24:49 +00:00
'<p>' . __ ( '<a href="http://codex.wordpress.org/Users_Screen" target="_blank">Documentation on Managing Users</a>' ) . '</p>' .
2010-12-16 06:37:03 +00:00
'<p>' . __ ( '<a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank">Descriptions of Roles and Capabilities</a>' ) . '</p>' .
2010-06-04 03:42:43 +00:00
'<p>' . __ ( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
2010-05-27 23:10:26 +00:00
);
2008-02-16 21:44:50 +00:00
if ( empty ( $_REQUEST ) ) {
2009-05-05 19:43:53 +00:00
$referer = '<input type="hidden" name="wp_http_referer" value="' . esc_attr ( stripslashes ( $_SERVER [ 'REQUEST_URI' ])) . '" />' ;
2008-02-16 21:44:50 +00:00
} elseif ( isset ( $_REQUEST [ 'wp_http_referer' ]) ) {
$redirect = remove_query_arg ( array ( 'wp_http_referer' , 'updated' , 'delete_count' ), stripslashes ( $_REQUEST [ 'wp_http_referer' ]));
2009-05-05 19:43:53 +00:00
$referer = '<input type="hidden" name="wp_http_referer" value="' . esc_attr ( $redirect ) . '" />' ;
2006-06-08 18:36:05 +00:00
} else {
$redirect = 'users.php' ;
2008-08-14 17:00:37 +00:00
$referer = '' ;
2006-06-08 18:36:05 +00:00
}
2010-09-22 00:10:39 +00:00
$update = '' ;
2011-01-13 00:50:35 +00:00
switch ( $wp_list_table -> current_action () ) {
2005-07-12 15:53:13 +00:00
2009-01-06 22:00:05 +00:00
/* Bulk Dropdown menu Role changes */
2005-07-12 15:53:13 +00:00
case 'promote' :
2006-05-02 22:36:06 +00:00
check_admin_referer ( 'bulk-users' );
2004-05-17 20:34:05 +00:00
2011-02-09 17:30:26 +00:00
if ( ! current_user_can ( 'promote_users' ) )
wp_die ( __ ( 'You can’t edit that user.' ) );
2011-01-13 00:50:35 +00:00
if ( empty ( $_REQUEST [ 'users' ]) ) {
wp_redirect ( $redirect );
exit ();
}
2003-12-23 20:21:29 +00:00
2009-01-06 22:00:05 +00:00
$editable_roles = get_editable_roles ();
2010-04-03 08:08:12 +00:00
if ( empty ( $editable_roles [ $_REQUEST [ 'new_role' ]] ) )
2009-01-06 22:00:05 +00:00
wp_die ( __ ( 'You can’t give users that role.' ));
2003-12-23 20:21:29 +00:00
2008-02-16 21:44:50 +00:00
$userids = $_REQUEST [ 'users' ];
2005-11-13 04:40:18 +00:00
$update = 'promote' ;
2010-01-18 22:21:36 +00:00
foreach ( $userids as $id ) {
2010-06-06 15:12:47 +00:00
$id = ( int ) $id ;
2010-04-21 17:58:10 +00:00
if ( ! current_user_can ( 'promote_user' , $id ) )
2006-07-05 22:00:03 +00:00
wp_die ( __ ( 'You can’t edit that user.' ));
2010-04-21 17:58:10 +00:00
// The new role of the current user must also have promote_users caps
2011-01-13 00:50:35 +00:00
if ( $id == $current_user -> ID && ! $wp_roles -> role_objects [ $_REQUEST [ 'new_role' ]] -> has_cap ( 'promote_users' ) ) {
2005-11-13 04:40:18 +00:00
$update = 'err_admin_role' ;
continue ;
}
2010-06-06 15:05:18 +00:00
// If the user doesn't already belong to the blog, bail.
2010-06-06 15:25:27 +00:00
if ( is_multisite () && ! is_user_member_of_blog ( $id ) )
2010-06-06 15:05:18 +00:00
wp_die ( __ ( 'Cheatin’ uh?' ));
2006-06-08 18:36:05 +00:00
$user = new WP_User ( $id );
2008-02-16 21:44:50 +00:00
$user -> set_role ( $_REQUEST [ 'new_role' ]);
2006-06-08 18:36:05 +00:00
}
2006-02-12 07:53:23 +00:00
2011-01-13 00:50:35 +00:00
wp_redirect ( add_query_arg ( 'update' , $update , $redirect ));
exit ();
2005-03-09 22:49:42 +00:00
2005-07-12 15:53:13 +00:00
break ;
2003-12-23 20:21:29 +00:00
2005-07-12 15:53:13 +00:00
case 'dodelete' :
2010-04-21 17:43:53 +00:00
if ( is_multisite () )
wp_die ( __ ( 'User deletion is not allowed from this screen.' ) );
2003-12-23 20:21:29 +00:00
2006-05-02 22:36:06 +00:00
check_admin_referer ( 'delete-users' );
2005-07-12 15:53:13 +00:00
2011-01-13 00:50:35 +00:00
if ( empty ( $_REQUEST [ 'users' ]) ) {
wp_redirect ( $redirect );
exit ();
}
2003-12-23 20:21:29 +00:00
2010-04-21 17:43:53 +00:00
if ( ! current_user_can ( 'delete_users' ) )
wp_die ( __ ( 'You can’t delete users.' ));
2003-12-23 20:21:29 +00:00
2008-02-16 21:44:50 +00:00
$userids = $_REQUEST [ 'users' ];
2005-11-13 04:40:18 +00:00
$update = 'del' ;
2006-06-08 18:36:05 +00:00
$delete_count = 0 ;
foreach ( ( array ) $userids as $id ) {
2010-06-06 15:12:47 +00:00
$id = ( int ) $id ;
2010-04-21 17:43:53 +00:00
if ( ! current_user_can ( 'delete_user' , $id ) )
wp_die ( __ ( 'You can’t delete that user.' ) );
2006-06-08 18:36:05 +00:00
2010-01-18 22:21:36 +00:00
if ( $id == $current_user -> ID ) {
2005-11-13 04:40:18 +00:00
$update = 'err_admin_del' ;
continue ;
}
2010-01-18 22:21:36 +00:00
switch ( $_REQUEST [ 'delete_option' ] ) {
2005-07-12 15:53:13 +00:00
case 'delete' :
2010-04-21 17:43:53 +00:00
if ( current_user_can ( 'delete_user' , $id ) )
2010-01-14 02:02:19 +00:00
wp_delete_user ( $id );
2010-05-03 23:04:42 +00:00
break ;
2005-07-12 15:53:13 +00:00
case 'reassign' :
2010-04-21 17:43:53 +00:00
if ( current_user_can ( 'delete_user' , $id ) )
2010-01-14 02:02:19 +00:00
wp_delete_user ( $id , $_REQUEST [ 'reassign_user' ]);
2005-07-12 15:53:13 +00:00
break ;
}
2006-06-08 18:36:05 +00:00
++ $delete_count ;
2005-07-12 15:53:13 +00:00
}
2003-12-23 20:21:29 +00:00
2006-11-08 21:14:53 +00:00
$redirect = add_query_arg ( array ( 'delete_count' => $delete_count , 'update' => $update ), $redirect );
2011-01-13 00:50:35 +00:00
wp_redirect ( $redirect );
exit ();
2003-12-23 20:21:29 +00:00
break ;
2005-07-12 15:53:13 +00:00
case 'delete' :
2010-04-21 17:58:10 +00:00
if ( is_multisite () )
wp_die ( __ ( 'User deletion is not allowed from this screen.' ) );
2006-05-02 22:36:06 +00:00
check_admin_referer ( 'bulk-users' );
2004-05-17 20:34:05 +00:00
2011-01-13 00:50:35 +00:00
if ( empty ( $_REQUEST [ 'users' ]) && empty ( $_REQUEST [ 'user' ]) ) {
wp_redirect ( $redirect );
exit ();
}
2003-12-08 01:28:41 +00:00
2010-04-21 17:43:53 +00:00
if ( ! current_user_can ( 'delete_users' ) )
2010-04-03 05:14:34 +00:00
$errors = new WP_Error ( 'edit_users' , __ ( 'You can’t delete users.' ) );
2003-12-08 01:28:41 +00:00
2008-09-17 04:39:08 +00:00
if ( empty ( $_REQUEST [ 'users' ]) )
$userids = array ( intval ( $_REQUEST [ 'user' ]));
else
2011-04-21 16:48:12 +00:00
$userids = ( array ) $_REQUEST [ 'users' ];
2005-07-09 01:27:46 +00:00
2005-07-12 15:53:13 +00:00
include ( 'admin-header.php' );
?>
<form action="" method="post" name="updateusers" id="updateusers">
2006-05-02 22:36:06 +00:00
<?php wp_nonce_field('delete-users') ?>
2006-06-08 18:36:05 +00:00
<?php echo $referer; ?>
2008-01-07 20:38:49 +00:00
2005-07-12 15:53:13 +00:00
<div class="wrap">
2008-11-26 23:35:23 +00:00
<?php screen_icon(); ?>
2005-11-13 04:40:18 +00:00
<h2><?php _e('Delete Users'); ?></h2>
2011-04-21 16:48:12 +00:00
<p><?php echo _n( 'You have specified this user for deletion:', 'You have specified these users for deletion:', count( $userids ) ); ?></p>
2005-11-13 04:40:18 +00:00
<ul>
<?php
2011-04-21 16:48:12 +00:00
$go_delete = 0;
foreach ( $userids as $id ) {
2008-11-20 17:26:52 +00:00
$id = (int) $id;
2006-06-08 18:36:05 +00:00
$user = new WP_User($id);
2006-11-20 04:29:06 +00:00
if ( $id == $current_user->ID ) {
2005-12-12 22:48:30 +00:00
echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be deleted.</strong>'), $id, $user->user_login) . "</li>\n";
2005-11-13 04:40:18 +00:00
} else {
2009-05-05 19:43:53 +00:00
echo "<li><input type=\"hidden\" name=\"users[]\" value=\"" . esc_attr($id) . "\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
2011-04-21 16:48:12 +00:00
$go_delete++;
2005-07-12 15:53:13 +00:00
}
2006-06-08 18:36:05 +00:00
}
?>
</ul>
<?php if ( $go_delete ) : ?>
2011-04-21 16:48:12 +00:00
<fieldset><p><legend><?php echo _n( 'What should be done with posts and links owned by this user?', 'What should be done with posts and links owned by these users?', $go_delete ); ?></legend></p>
2005-07-12 15:53:13 +00:00
<ul style="list-style:none;">
<li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" checked="checked" />
<?php _e('Delete all posts and links.'); ?></label></li>
<li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
2010-12-16 23:40:46 +00:00
<?php echo '<label for="delete_option1">'.__('Attribute all posts and links to:').'</label>';
2011-01-25 19:36:50 +00:00
wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
2008-05-04 10:37:06 +00:00
</ul></fieldset>
2005-07-12 15:53:13 +00:00
<input type="hidden" name="action" value="dodelete" />
2010-10-17 18:24:34 +00:00
<?php submit_button( __('Confirm Deletion'), 'secondary' ); ?>
2005-11-13 04:40:18 +00:00
<?php else : ?>
<p><?php _e('There are no valid users selected for deletion.'); ?></p>
<?php endif; ?>
2005-07-12 15:53:13 +00:00
</div>
</form>
<?php
2003-12-08 01:28:41 +00:00
break;
2010-04-21 17:43:53 +00:00
case 'doremove':
check_admin_referer('remove-users');
2011-02-10 20:37:26 +00:00
if ( ! is_multisite() )
wp_die( __( 'You can’t remove users.' ) );
2011-01-13 00:50:35 +00:00
if ( empty($_REQUEST['users']) ) {
wp_redirect($redirect);
exit;
}
2010-04-21 17:43:53 +00:00
2011-02-10 20:37:26 +00:00
if ( ! current_user_can( 'remove_users' ) )
wp_die( __( 'You can’t remove users.' ) );
2010-04-21 17:43:53 +00:00
$userids = $_REQUEST['users'];
$update = 'remove';
foreach ( $userids as $id ) {
$id = (int) $id;
2011-08-04 03:09:27 +00:00
if ( $id == $current_user->ID && !is_super_admin() ) {
2010-04-21 17:43:53 +00:00
$update = 'err_admin_remove';
continue;
}
2010-05-15 14:43:13 +00:00
if ( !current_user_can('remove_user', $id) ) {
2010-04-21 17:43:53 +00:00
$update = 'err_admin_remove';
continue;
}
remove_user_from_blog($id, $blog_id);
}
$redirect = add_query_arg( array('update' => $update), $redirect);
2011-01-13 00:50:35 +00:00
wp_redirect($redirect);
exit;
2010-04-21 17:43:53 +00:00
break;
case 'remove':
check_admin_referer('bulk-users');
2011-02-10 20:37:26 +00:00
if ( ! is_multisite() )
wp_die( __( 'You can’t remove users.' ) );
2011-01-13 00:50:35 +00:00
if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) {
wp_redirect($redirect);
exit();
}
2010-04-21 17:43:53 +00:00
if ( !current_user_can('remove_users') )
$error = new WP_Error('edit_users', __('You can’t remove users.'));
if ( empty($_REQUEST['users']) )
$userids = array(intval($_REQUEST['user']));
else
$userids = $_REQUEST['users'];
include ('admin-header.php');
?>
<form action="" method="post" name="updateusers" id="updateusers">
<?php wp_nonce_field('remove-users') ?>
<?php echo $referer; ?>
<div class="wrap">
<?php screen_icon(); ?>
2010-04-30 03:17:49 +00:00
<h2><?php _e('Remove Users from Site'); ?></h2>
2010-04-21 17:43:53 +00:00
<p><?php _e('You have specified these users for removal:'); ?></p>
<ul>
<?php
$go_remove = false;
foreach ( $userids as $id ) {
$id = (int) $id;
$user = new WP_User($id);
2011-08-04 03:09:27 +00:00
if ( $id == $current_user->ID && !is_super_admin() ) {
2010-04-21 17:43:53 +00:00
echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be removed.</strong>'), $id, $user->user_login) . "</li>\n";
} elseif ( !current_user_can('remove_user', $id) ) {
echo "<li>" . sprintf(__('ID #%1s: %2s <strong>You don\'t have permission to remove this user.</strong>'), $id, $user->user_login) . "</li>\n";
} else {
echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
$go_remove = true;
}
}
?>
<?php if ( $go_remove ) : ?>
<input type="hidden" name="action" value="doremove" />
2010-10-17 18:24:34 +00:00
<?php submit_button( __('Confirm Removal'), 'secondary' ); ?>
2010-04-21 17:43:53 +00:00
<?php else : ?>
<p><?php _e('There are no valid users selected for removal.'); ?></p>
<?php endif; ?>
</div>
</form>
<?php
break;
2003-12-08 01:28:41 +00:00
default:
2008-02-20 05:45:16 +00:00
2011-01-13 00:50:35 +00:00
if ( !empty($_GET['_wp_http_referer']) ) {
2008-02-20 05:45:16 +00:00
wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI'])));
2008-03-02 20:17:30 +00:00
exit;
2011-01-13 00:50:35 +00:00
}
2008-02-20 05:45:16 +00:00
2010-08-22 11:22:46 +00:00
$wp_list_table->prepare_items();
2011-01-25 19:20:20 +00:00
$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
2011-01-26 09:56:17 +00:00
if ( $pagenum > $total_pages && $total_pages > 0 ) {
2011-01-25 19:20:20 +00:00
wp_redirect( add_query_arg( 'paged', $total_pages ) );
exit;
}
2010-08-11 21:54:51 +00:00
include('./admin-header.php');
2010-03-03 19:08:30 +00:00
2008-09-11 18:54:05 +00:00
$messages = array();
2006-06-08 18:36:05 +00:00
if ( isset($_GET['update']) ) :
2005-07-12 15:53:13 +00:00
switch($_GET['update']) {
case 'del':
2006-06-08 18:36:05 +00:00
case 'del_many':
2008-09-11 18:54:05 +00:00
$delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
2009-12-26 09:00:58 +00:00
$messages[] = '<div id="message" class="updated"><p>' . sprintf(_n('%s user deleted', '%s users deleted', $delete_count), $delete_count) . '</p></div>';
2005-07-12 15:53:13 +00:00
break;
case 'add':
2009-12-26 09:00:58 +00:00
$messages[] = '<div id="message" class="updated"><p>' . __('New user created.') . '</p></div>';
2005-07-12 15:53:13 +00:00
break;
case 'promote':
2009-12-26 09:00:58 +00:00
$messages[] = '<div id="message" class="updated"><p>' . __('Changed roles.') . '</p></div>';
2005-07-12 15:53:13 +00:00
break;
2005-11-13 04:40:18 +00:00
case 'err_admin_role':
2009-05-05 04:28:05 +00:00
$messages[] = '<div id="message" class="error"><p>' . __('The current user’s role must have user editing capabilities.') . '</p></div>';
2009-12-26 09:00:58 +00:00
$messages[] = '<div id="message" class="updated"><p>' . __('Other user roles have been changed.') . '</p></div>';
2005-11-13 04:40:18 +00:00
break;
case 'err_admin_del':
2009-05-05 04:28:05 +00:00
$messages[] = '<div id="message" class="error"><p>' . __('You can’t delete the current user.') . '</p></div>';
2009-12-26 09:00:58 +00:00
$messages[] = '<div id="message" class="updated"><p>' . __('Other users have been deleted.') . '</p></div>';
2005-11-13 04:40:18 +00:00
break;
2010-04-21 17:43:53 +00:00
case 'remove':
2010-04-30 03:17:49 +00:00
$messages[] = '<div id="message" class="updated fade"><p>' . __('User removed from this site.') . '</p></div>';
2010-04-21 17:43:53 +00:00
break;
case 'err_admin_remove':
$messages[] = '<div id="message" class="error"><p>' . __("You can't remove the current user.") . '</p></div>';
$messages[] = '<div id="message" class="updated fade"><p>' . __('Other users have been removed.') . '</p></div>';
break;
2005-07-12 15:53:13 +00:00
}
2006-06-08 18:36:05 +00:00
endif; ?>
2008-08-14 17:00:37 +00:00
<?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
2005-07-12 15:53:13 +00:00
<div class="error">
<ul>
<?php
2008-09-11 18:54:05 +00:00
foreach ( $errors->get_error_messages() as $err )
echo "<li>$err</li>\n";
2005-07-12 15:53:13 +00:00
?>
</ul>
</div>
2008-09-29 09:26:21 +00:00
<?php endif;
2008-09-11 18:54:05 +00:00
if ( ! empty($messages) ) {
foreach ( $messages as $msg )
echo $msg;
} ?>
2006-06-08 18:36:05 +00:00
<div class="wrap">
2008-11-26 13:51:25 +00:00
<?php screen_icon(); ?>
2010-12-19 22:27:30 +00:00
<h2>
<?php
echo esc_html( $title );
2011-05-10 19:18:16 +00:00
if ( current_user_can( 'create_users' ) ) { ?>
2011-05-12 00:22:22 +00:00
<a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
2011-05-10 19:18:16 +00:00
<?php } elseif ( is_multisite() && current_user_can( 'promote_users' ) ) { ?>
2011-05-12 00:22:22 +00:00
<a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add Existing', 'user' ); ?></a>
2011-05-10 19:18:16 +00:00
<?php }
2010-08-11 21:54:51 +00:00
if ( $usersearch )
printf( '<span class="subtitle">' . __('Search results for “%s”') . '</span>', esc_html( $usersearch ) ); ?>
2008-12-05 01:18:19 +00:00
</h2>
2008-09-19 05:31:00 +00:00
2010-09-05 21:26:27 +00:00
<?php $wp_list_table->views(); ?>
2008-08-20 21:42:31 +00:00
2011-01-22 01:31:21 +00:00
<form action="" method="get">
2010-12-10 20:22:34 +00:00
2010-12-16 20:45:10 +00:00
<?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
2010-12-10 20:22:34 +00:00
2010-08-22 11:22:46 +00:00
<?php $wp_list_table->display(); ?>
2008-03-30 16:48:31 +00:00
</form>
2006-06-08 18:36:05 +00:00
2008-03-14 23:58:31 +00:00
<br class="clear" />
2010-11-19 19:05:04 +00:00
</div>
2007-09-03 23:32:58 +00:00
<?php
2011-01-13 00:50:35 +00:00
break;
} // end of the $doaction switch
2004-08-22 23:24:50 +00:00
2010-04-18 06:14:45 +00:00
include('./admin-footer.php');