<?php
/**
- * Users administration panel.
+ * User administration panel
*
* @package WordPress
* @subpackage Administration
+ * @since 1.0.0
*/
/** WordPress Administration Bootstrap */
-require_once( './admin.php' );
-
-if ( ! current_user_can( 'list_users' ) )
- wp_die( __( 'Cheatin’ uh?' ) );
+require_once( dirname( __FILE__ ) . '/admin.php' );
+
+if ( ! current_user_can( 'list_users' ) ) {
+ wp_die(
+ '<h1>' . __( 'Cheatin’ uh?' ) . '</h1>' .
+ '<p>' . __( 'You are not allowed to browse users.' ) . '</p>',
+ 403
+ );
+}
$wp_list_table = _get_list_table('WP_Users_List_Table');
$pagenum = $wp_list_table->get_pagenum();
$title = __('Users');
$parent_file = 'users.php';
-add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) );
+add_screen_option( 'per_page' );
// contextual help - choose Help on the top right of admin panel to preview this.
get_current_screen()->add_help_tab( array(
'<li>' . __('Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username.') . '</li>';
if ( is_multisite() )
- $help .= '<li>' . __( 'Remove allows you to remove a user from your site. It does not delete their posts. You can also remove multiple users at once by using Bulk Actions.' ) . '</li>';
+ $help .= '<li>' . __( 'Remove allows you to remove a user from your site. It does not delete their content. You can also remove multiple users at once by using Bulk Actions.' ) . '</li>';
else
- $help .= '<li>' . __( 'Delete brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their posts. You can also delete multiple users at once by using Bulk Actions.' ) . '</li>';
+ $help .= '<li>' . __( 'Delete brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their content. You can also delete multiple users at once by using Bulk Actions.' ) . '</li>';
$help .= '</ul>';
get_current_screen()->set_help_sidebar(
'<p><strong>' . __('For more information:') . '</strong></p>' .
- '<p>' . __('<a href="http://codex.wordpress.org/Users_Screen" target="_blank">Documentation on Managing Users</a>') . '</p>' .
- '<p>' . __('<a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank">Descriptions of Roles and Capabilities</a>') . '</p>' .
- '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+ '<p>' . __('<a href="https://codex.wordpress.org/Users_Screen" target="_blank">Documentation on Managing Users</a>') . '</p>' .
+ '<p>' . __('<a href="https://codex.wordpress.org/Roles_and_Capabilities" target="_blank">Descriptions of Roles and Capabilities</a>') . '</p>' .
+ '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
);
+get_current_screen()->set_screen_reader_content( array(
+ 'heading_views' => __( 'Filter users list' ),
+ 'heading_pagination' => __( 'Users list navigation' ),
+ 'heading_list' => __( 'Users list' ),
+) );
+
if ( empty($_REQUEST) ) {
$referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr( wp_unslash( $_SERVER['REQUEST_URI'] ) ) . '" />';
} elseif ( isset($_REQUEST['wp_http_referer']) ) {
$update = '';
-/**
- * @since 3.5.0
- * @access private
- */
-function delete_users_add_js() { ?>
-<script>
-jQuery(document).ready( function($) {
- var submit = $('#submit').prop('disabled', true);
- $('input[name=delete_option]').one('change', function() {
- submit.prop('disabled', false);
- });
- $('#reassign_user').focus( function() {
- $('#delete_option1').prop('checked', true).trigger('change');
- });
-});
-</script>
-<?php
-}
-
switch ( $wp_list_table->current_action() ) {
/* Bulk Dropdown menu Role changes */
}
$editable_roles = get_editable_roles();
- if ( empty( $editable_roles[$_REQUEST['new_role']] ) )
- wp_die(__('You can’t give users that role.'));
+ $role = false;
+ if ( ! empty( $_REQUEST['new_role2'] ) ) {
+ $role = $_REQUEST['new_role2'];
+ } elseif ( ! empty( $_REQUEST['new_role'] ) ) {
+ $role = $_REQUEST['new_role'];
+ }
+
+ if ( ! $role || empty( $editable_roles[ $role ] ) ) {
+ wp_die( __( 'You can’t give users that role.' ) );
+ }
$userids = $_REQUEST['users'];
$update = 'promote';
if ( ! current_user_can('promote_user', $id) )
wp_die(__('You can’t edit that user.'));
// The new role of the current user must also have the promote_users cap or be a multisite super admin
- if ( $id == $current_user->ID && ! $wp_roles->role_objects[ $_REQUEST['new_role'] ]->has_cap('promote_users')
+ if ( $id == $current_user->ID && ! $wp_roles->role_objects[ $role ]->has_cap('promote_users')
&& ! ( is_multisite() && is_super_admin() ) ) {
$update = 'err_admin_role';
continue;
}
// If the user doesn't already belong to the blog, bail.
- if ( is_multisite() && !is_user_member_of_blog( $id ) )
- wp_die(__('Cheatin’ uh?'));
+ if ( is_multisite() && !is_user_member_of_blog( $id ) ) {
+ wp_die(
+ '<h1>' . __( 'Cheatin’ uh?' ) . '</h1>' .
+ '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
+ 403
+ );
+ }
$user = get_userdata( $id );
- $user->set_role($_REQUEST['new_role']);
+ $user->set_role( $role );
}
wp_redirect(add_query_arg('update', $update, $redirect));
exit();
-break;
-
case 'dodelete':
if ( is_multisite() )
wp_die( __('User deletion is not allowed from this screen.') );
wp_redirect($redirect);
exit();
-break;
-
case 'delete':
if ( is_multisite() )
wp_die( __('User deletion is not allowed from this screen.') );
else
$userids = array_map( 'intval', (array) $_REQUEST['users'] );
- add_action( 'admin_head', 'delete_users_add_js' );
+ $users_have_content = false;
+ if ( $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE post_author IN( " . implode( ',', $userids ) . " ) LIMIT 1" ) ) {
+ $users_have_content = true;
+ } elseif ( $wpdb->get_var( "SELECT link_id FROM {$wpdb->links} WHERE link_owner IN( " . implode( ',', $userids ) . " ) LIMIT 1" ) ) {
+ $users_have_content = true;
+ }
+
+ if ( $users_have_content ) {
+ add_action( 'admin_head', 'delete_users_add_js' );
+ }
- include ('admin-header.php');
+ include( ABSPATH . 'wp-admin/admin-header.php' );
?>
-<form action="" method="post" name="updateusers" id="updateusers">
+<form method="post" name="updateusers" id="updateusers">
<?php wp_nonce_field('delete-users') ?>
<?php echo $referer; ?>
<div class="wrap">
-<?php screen_icon(); ?>
-<h2><?php _e('Delete Users'); ?></h2>
+<h1><?php _e( 'Delete Users' ); ?></h1>
<?php if ( isset( $_REQUEST['error'] ) ) : ?>
-<div class="error">
- <p><strong><?php _e( 'ERROR:' ); ?></strong> <?php _e( 'Please select an option.' ); ?></p>
-</div>
+ <div class="error">
+ <p><strong><?php _e( 'ERROR:' ); ?></strong> <?php _e( 'Please select an option.' ); ?></p>
+ </div>
<?php endif; ?>
-<p><?php echo _n( 'You have specified this user for deletion:', 'You have specified these users for deletion:', count( $userids ) ); ?></p>
+
+<?php if ( 1 == count( $userids ) ) : ?>
+ <p><?php _e( 'You have specified this user for deletion:' ); ?></p>
+<?php else : ?>
+ <p><?php _e( 'You have specified these users for deletion:' ); ?></p>
+<?php endif; ?>
+
<ul>
<?php
$go_delete = 0;
}
?>
</ul>
-<?php if ( $go_delete ) : ?>
- <fieldset><p><legend><?php echo _n( 'What should be done with posts owned by this user?', 'What should be done with posts owned by these users?', $go_delete ); ?></legend></p>
- <ul style="list-style:none;">
- <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" />
- <?php _e('Delete all posts.'); ?></label></li>
- <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
- <?php echo '<label for="delete_option1">' . __( 'Attribute all posts to:' ) . '</label> ';
- wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
- </ul></fieldset>
+<?php if ( $go_delete ) :
+
+ if ( ! $users_have_content ) : ?>
+ <input type="hidden" name="delete_option" value="delete" />
+ <?php else: ?>
+ <?php if ( 1 == $go_delete ) : ?>
+ <fieldset><p><legend><?php _e( 'What should be done with content owned by this user?' ); ?></legend></p>
+ <?php else : ?>
+ <fieldset><p><legend><?php _e( 'What should be done with content owned by these users?' ); ?></legend></p>
+ <?php endif; ?>
+ <ul style="list-style:none;">
+ <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" />
+ <?php _e('Delete all content.'); ?></label></li>
+ <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
+ <?php echo '<label for="delete_option1">' . __( 'Attribute all content to:' ) . '</label> ';
+ wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
+ </ul></fieldset>
+ <?php endif;
+ /**
+ * Fires at the end of the delete users form prior to the confirm button.
+ *
+ * @since 4.0.0
+ *
+ * @param WP_User $current_user WP_User object for the user being deleted.
+ */
+ do_action( 'delete_user_form', $current_user );
+ ?>
<input type="hidden" name="action" value="dodelete" />
- <?php submit_button( __('Confirm Deletion'), 'secondary' ); ?>
+ <?php submit_button( __('Confirm Deletion'), 'primary' ); ?>
<?php else : ?>
<p><?php _e('There are no valid users selected for deletion.'); ?></p>
<?php endif; ?>
wp_redirect($redirect);
exit;
-break;
-
case 'remove':
check_admin_referer('bulk-users');
else
$userids = $_REQUEST['users'];
- include ('admin-header.php');
+ include( ABSPATH . 'wp-admin/admin-header.php' );
?>
-<form action="" method="post" name="updateusers" id="updateusers">
+<form method="post" name="updateusers" id="updateusers">
<?php wp_nonce_field('remove-users') ?>
<?php echo $referer; ?>
<div class="wrap">
-<?php screen_icon(); ?>
-<h2><?php _e('Remove Users from Site'); ?></h2>
-<p><?php _e('You have specified these users for removal:'); ?></p>
+<h1><?php _e( 'Remove Users from Site' ); ?></h1>
+
+<?php if ( 1 == count( $userids ) ) : ?>
+ <p><?php _e( 'You have specified this user for removal:' ); ?></p>
+<?php else : ?>
+ <p><?php _e( 'You have specified these users for removal:' ); ?></p>
+<?php endif; ?>
+
<ul>
<?php
$go_remove = false;
}
}
?>
+</ul>
<?php if ( $go_remove ) : ?>
<input type="hidden" name="action" value="doremove" />
- <?php submit_button( __('Confirm Removal'), 'secondary' ); ?>
+ <?php submit_button( __('Confirm Removal'), 'primary' ); ?>
<?php else : ?>
<p><?php _e('There are no valid users selected for removal.'); ?></p>
<?php endif; ?>
exit;
}
- include('./admin-header.php');
+ include( ABSPATH . 'wp-admin/admin-header.php' );
$messages = array();
if ( isset($_GET['update']) ) :
case 'del':
case 'del_many':
$delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
- $messages[] = '<div id="message" class="updated"><p>' . sprintf( _n( 'User deleted.', '%s users deleted.', $delete_count ), number_format_i18n( $delete_count ) ) . '</p></div>';
+ if ( 1 == $delete_count ) {
+ $message = __( 'User deleted.' );
+ } else {
+ $message = _n( '%s user deleted.', '%s users deleted.', $delete_count );
+ }
+ $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf( $message, number_format_i18n( $delete_count ) ) . '</p></div>';
break;
case 'add':
if ( isset( $_GET['id'] ) && ( $user_id = $_GET['id'] ) && current_user_can( 'edit_user', $user_id ) ) {
- $messages[] = '<div id="message" class="updated"><p>' . sprintf( __( 'New user created. <a href="%s">Edit user</a>' ),
+ $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf( __( 'New user created. <a href="%s">Edit user</a>' ),
esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ),
self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ) ) . '</p></div>';
} else {
- $messages[] = '<div id="message" class="updated"><p>' . __( 'New user created.' ) . '</p></div>';
+ $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'New user created.' ) . '</p></div>';
}
break;
case 'promote':
- $messages[] = '<div id="message" class="updated"><p>' . __('Changed roles.') . '</p></div>';
+ $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __('Changed roles.') . '</p></div>';
break;
case 'err_admin_role':
- $messages[] = '<div id="message" class="error"><p>' . __('The current user’s role must have user editing capabilities.') . '</p></div>';
- $messages[] = '<div id="message" class="updated"><p>' . __('Other user roles have been changed.') . '</p></div>';
+ $messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __('The current user’s role must have user editing capabilities.') . '</p></div>';
+ $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __('Other user roles have been changed.') . '</p></div>';
break;
case 'err_admin_del':
- $messages[] = '<div id="message" class="error"><p>' . __('You can’t delete the current user.') . '</p></div>';
- $messages[] = '<div id="message" class="updated"><p>' . __('Other users have been deleted.') . '</p></div>';
+ $messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __('You can’t delete the current user.') . '</p></div>';
+ $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __('Other users have been deleted.') . '</p></div>';
break;
case 'remove':
- $messages[] = '<div id="message" class="updated fade"><p>' . __('User removed from this site.') . '</p></div>';
+ $messages[] = '<div id="message" class="updated notice is-dismissible fade"><p>' . __('User removed from this site.') . '</p></div>';
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>';
+ $messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __("You can't remove the current user.") . '</p></div>';
+ $messages[] = '<div id="message" class="updated notice is-dismissible fade"><p>' . __('Other users have been removed.') . '</p></div>';
break;
}
endif; ?>
} ?>
<div class="wrap">
-<?php screen_icon(); ?>
-<h2>
+<h1>
<?php
echo esc_html( $title );
if ( current_user_can( 'create_users' ) ) { ?>
- <a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
+ <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
<?php } elseif ( is_multisite() && current_user_can( 'promote_users' ) ) { ?>
- <a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add Existing', 'user' ); ?></a>
+ <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user' ); ?></a>
<?php }
if ( $usersearch )
printf( '<span class="subtitle">' . __('Search results for “%s”') . '</span>', esc_html( $usersearch ) ); ?>
-</h2>
+</h1>
<?php $wp_list_table->views(); ?>
-<form action="" method="get">
+<form method="get">
<?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
} // end of the $doaction switch
-include('./admin-footer.php');
+include( ABSPATH . 'wp-admin/admin-footer.php' );