wp/wp-admin/users.php
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
equal deleted inserted replaced
4:346c88efed21 5:5e2f62d02dcd
     8 
     8 
     9 /** WordPress Administration Bootstrap */
     9 /** WordPress Administration Bootstrap */
    10 require_once( dirname( __FILE__ ) . '/admin.php' );
    10 require_once( dirname( __FILE__ ) . '/admin.php' );
    11 
    11 
    12 if ( ! current_user_can( 'list_users' ) )
    12 if ( ! current_user_can( 'list_users' ) )
    13 	wp_die( __( 'Cheatin’ uh?' ) );
    13 	wp_die( __( 'Cheatin’ uh?' ), 403 );
    14 
    14 
    15 $wp_list_table = _get_list_table('WP_Users_List_Table');
    15 $wp_list_table = _get_list_table('WP_Users_List_Table');
    16 $pagenum = $wp_list_table->get_pagenum();
    16 $pagenum = $wp_list_table->get_pagenum();
    17 $title = __('Users');
    17 $title = __('Users');
    18 $parent_file = 'users.php';
    18 $parent_file = 'users.php';
    19 
    19 
    20 add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) );
    20 add_screen_option( 'per_page' );
    21 
    21 
    22 // contextual help - choose Help on the top right of admin panel to preview this.
    22 // contextual help - choose Help on the top right of admin panel to preview this.
    23 get_current_screen()->add_help_tab( array(
    23 get_current_screen()->add_help_tab( array(
    24 	'id'      => 'overview',
    24 	'id'      => 'overview',
    25 	'title'   => __('Overview'),
    25 	'title'   => __('Overview'),
    41 $help = '<p>' . __('Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:') . '</p>' .
    41 $help = '<p>' . __('Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:') . '</p>' .
    42 	'<ul>' .
    42 	'<ul>' .
    43 	'<li>' . __('Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username.') . '</li>';
    43 	'<li>' . __('Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username.') . '</li>';
    44 
    44 
    45 if ( is_multisite() )
    45 if ( is_multisite() )
    46 	$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>';
    46 	$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>';
    47 else
    47 else
    48 	$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>';
    48 	$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>';
    49 
    49 
    50 $help .= '</ul>';
    50 $help .= '</ul>';
    51 
    51 
    52 get_current_screen()->add_help_tab( array(
    52 get_current_screen()->add_help_tab( array(
    53 	'id'      => 'actions',
    53 	'id'      => 'actions',
    56 ) );
    56 ) );
    57 unset( $help );
    57 unset( $help );
    58 
    58 
    59 get_current_screen()->set_help_sidebar(
    59 get_current_screen()->set_help_sidebar(
    60     '<p><strong>' . __('For more information:') . '</strong></p>' .
    60     '<p><strong>' . __('For more information:') . '</strong></p>' .
    61     '<p>' . __('<a href="http://codex.wordpress.org/Users_Screen" target="_blank">Documentation on Managing Users</a>') . '</p>' .
    61     '<p>' . __('<a href="https://codex.wordpress.org/Users_Screen" target="_blank">Documentation on Managing Users</a>') . '</p>' .
    62     '<p>' . __('<a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank">Descriptions of Roles and Capabilities</a>') . '</p>' .
    62     '<p>' . __('<a href="https://codex.wordpress.org/Roles_and_Capabilities" target="_blank">Descriptions of Roles and Capabilities</a>') . '</p>' .
    63     '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
    63     '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
    64 );
    64 );
    65 
    65 
    66 if ( empty($_REQUEST) ) {
    66 if ( empty($_REQUEST) ) {
    67 	$referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr( wp_unslash( $_SERVER['REQUEST_URI'] ) ) . '" />';
    67 	$referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr( wp_unslash( $_SERVER['REQUEST_URI'] ) ) . '" />';
    68 } elseif ( isset($_REQUEST['wp_http_referer']) ) {
    68 } elseif ( isset($_REQUEST['wp_http_referer']) ) {
   126 				continue;
   126 				continue;
   127 		}
   127 		}
   128 
   128 
   129 		// If the user doesn't already belong to the blog, bail.
   129 		// If the user doesn't already belong to the blog, bail.
   130 		if ( is_multisite() && !is_user_member_of_blog( $id ) )
   130 		if ( is_multisite() && !is_user_member_of_blog( $id ) )
   131 			wp_die(__('Cheatin&#8217; uh?'));
   131 			wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
   132 
   132 
   133 		$user = get_userdata( $id );
   133 		$user = get_userdata( $id );
   134 		$user->set_role($_REQUEST['new_role']);
   134 		$user->set_role($_REQUEST['new_role']);
   135 	}
   135 	}
   136 
   136 
   137 	wp_redirect(add_query_arg('update', $update, $redirect));
   137 	wp_redirect(add_query_arg('update', $update, $redirect));
   138 	exit();
   138 	exit();
   139 
       
   140 break;
       
   141 
   139 
   142 case 'dodelete':
   140 case 'dodelete':
   143 	if ( is_multisite() )
   141 	if ( is_multisite() )
   144 		wp_die( __('User deletion is not allowed from this screen.') );
   142 		wp_die( __('User deletion is not allowed from this screen.') );
   145 
   143 
   186 
   184 
   187 	$redirect = add_query_arg( array('delete_count' => $delete_count, 'update' => $update), $redirect);
   185 	$redirect = add_query_arg( array('delete_count' => $delete_count, 'update' => $update), $redirect);
   188 	wp_redirect($redirect);
   186 	wp_redirect($redirect);
   189 	exit();
   187 	exit();
   190 
   188 
   191 break;
       
   192 
       
   193 case 'delete':
   189 case 'delete':
   194 	if ( is_multisite() )
   190 	if ( is_multisite() )
   195 		wp_die( __('User deletion is not allowed from this screen.') );
   191 		wp_die( __('User deletion is not allowed from this screen.') );
   196 
   192 
   197 	check_admin_referer('bulk-users');
   193 	check_admin_referer('bulk-users');
   211 
   207 
   212 	add_action( 'admin_head', 'delete_users_add_js' );
   208 	add_action( 'admin_head', 'delete_users_add_js' );
   213 
   209 
   214 	include( ABSPATH . 'wp-admin/admin-header.php' );
   210 	include( ABSPATH . 'wp-admin/admin-header.php' );
   215 ?>
   211 ?>
   216 <form action="" method="post" name="updateusers" id="updateusers">
   212 <form method="post" name="updateusers" id="updateusers">
   217 <?php wp_nonce_field('delete-users') ?>
   213 <?php wp_nonce_field('delete-users') ?>
   218 <?php echo $referer; ?>
   214 <?php echo $referer; ?>
   219 
   215 
   220 <div class="wrap">
   216 <div class="wrap">
   221 <?php screen_icon(); ?>
       
   222 <h2><?php _e('Delete Users'); ?></h2>
   217 <h2><?php _e('Delete Users'); ?></h2>
   223 <?php if ( isset( $_REQUEST['error'] ) ) : ?>
   218 <?php if ( isset( $_REQUEST['error'] ) ) : ?>
   224 <div class="error">
   219 	<div class="error">
   225 	<p><strong><?php _e( 'ERROR:' ); ?></strong> <?php _e( 'Please select an option.' ); ?></p>
   220 		<p><strong><?php _e( 'ERROR:' ); ?></strong> <?php _e( 'Please select an option.' ); ?></p>
   226 </div>
   221 	</div>
   227 <?php endif; ?>
   222 <?php endif; ?>
   228 <p><?php echo _n( 'You have specified this user for deletion:', 'You have specified these users for deletion:', count( $userids ) ); ?></p>
   223 
       
   224 <?php if ( 1 == count( $userids ) ) : ?>
       
   225 	<p><?php _e( 'You have specified this user for deletion:' ); ?></p>
       
   226 <?php else : ?>
       
   227 	<p><?php _e( 'You have specified these users for deletion:' ); ?></p>
       
   228 <?php endif; ?>
       
   229 
   229 <ul>
   230 <ul>
   230 <?php
   231 <?php
   231 	$go_delete = 0;
   232 	$go_delete = 0;
   232 	foreach ( $userids as $id ) {
   233 	foreach ( $userids as $id ) {
   233 		$user = get_userdata( $id );
   234 		$user = get_userdata( $id );
   239 		}
   240 		}
   240 	}
   241 	}
   241 	?>
   242 	?>
   242 	</ul>
   243 	</ul>
   243 <?php if ( $go_delete ) : ?>
   244 <?php if ( $go_delete ) : ?>
   244 	<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>
   245 	<?php if ( 1 == $go_delete ) : ?>
       
   246 		<fieldset><p><legend><?php _e( 'What should be done with content owned by this user?' ); ?></legend></p>
       
   247 	<?php else : ?>
       
   248 		<fieldset><p><legend><?php _e( 'What should be done with content owned by these users?' ); ?></legend></p>
       
   249 	<?php endif; ?>
   245 	<ul style="list-style:none;">
   250 	<ul style="list-style:none;">
   246 		<li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" />
   251 		<li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" />
   247 		<?php _e('Delete all posts.'); ?></label></li>
   252 		<?php _e('Delete all content.'); ?></label></li>
   248 		<li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
   253 		<li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
   249 		<?php echo '<label for="delete_option1">' . __( 'Attribute all posts to:' ) . '</label> ';
   254 		<?php echo '<label for="delete_option1">' . __( 'Attribute all content to:' ) . '</label> ';
   250 		wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
   255 		wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
   251 	</ul></fieldset>
   256 	</ul></fieldset>
       
   257 	<?php
       
   258 	/**
       
   259 	 * Fires at the end of the delete users form prior to the confirm button.
       
   260 	 *
       
   261 	 * @since 4.0.0
       
   262 	 *
       
   263 	 * @param WP_User $current_user WP_User object for the user being deleted.
       
   264 	 */
       
   265 	do_action( 'delete_user_form', $current_user );
       
   266 	?>
   252 	<input type="hidden" name="action" value="dodelete" />
   267 	<input type="hidden" name="action" value="dodelete" />
   253 	<?php submit_button( __('Confirm Deletion'), 'secondary' ); ?>
   268 	<?php submit_button( __('Confirm Deletion'), 'secondary' ); ?>
   254 <?php else : ?>
   269 <?php else : ?>
   255 	<p><?php _e('There are no valid users selected for deletion.'); ?></p>
   270 	<p><?php _e('There are no valid users selected for deletion.'); ?></p>
   256 <?php endif; ?>
   271 <?php endif; ?>
   292 
   307 
   293 	$redirect = add_query_arg( array('update' => $update), $redirect);
   308 	$redirect = add_query_arg( array('update' => $update), $redirect);
   294 	wp_redirect($redirect);
   309 	wp_redirect($redirect);
   295 	exit;
   310 	exit;
   296 
   311 
   297 break;
       
   298 
       
   299 case 'remove':
   312 case 'remove':
   300 
   313 
   301 	check_admin_referer('bulk-users');
   314 	check_admin_referer('bulk-users');
   302 
   315 
   303 	if ( ! is_multisite() )
   316 	if ( ! is_multisite() )
   316 	else
   329 	else
   317 		$userids = $_REQUEST['users'];
   330 		$userids = $_REQUEST['users'];
   318 
   331 
   319 	include( ABSPATH . 'wp-admin/admin-header.php' );
   332 	include( ABSPATH . 'wp-admin/admin-header.php' );
   320 ?>
   333 ?>
   321 <form action="" method="post" name="updateusers" id="updateusers">
   334 <form method="post" name="updateusers" id="updateusers">
   322 <?php wp_nonce_field('remove-users') ?>
   335 <?php wp_nonce_field('remove-users') ?>
   323 <?php echo $referer; ?>
   336 <?php echo $referer; ?>
   324 
   337 
   325 <div class="wrap">
   338 <div class="wrap">
   326 <?php screen_icon(); ?>
       
   327 <h2><?php _e('Remove Users from Site'); ?></h2>
   339 <h2><?php _e('Remove Users from Site'); ?></h2>
   328 <p><?php _e('You have specified these users for removal:'); ?></p>
   340 <p><?php _e('You have specified these users for removal:'); ?></p>
   329 <ul>
   341 <ul>
   330 <?php
   342 <?php
   331 	$go_remove = false;
   343 	$go_remove = false;
   340 			echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf(__('ID #%1$s: %2$s'), $id, $user->user_login) . "</li>\n";
   352 			echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf(__('ID #%1$s: %2$s'), $id, $user->user_login) . "</li>\n";
   341 			$go_remove = true;
   353 			$go_remove = true;
   342 		}
   354 		}
   343  	}
   355  	}
   344  	?>
   356  	?>
       
   357 </ul>
   345 <?php if ( $go_remove ) : ?>
   358 <?php if ( $go_remove ) : ?>
   346 		<input type="hidden" name="action" value="doremove" />
   359 		<input type="hidden" name="action" value="doremove" />
   347 		<?php submit_button( __('Confirm Removal'), 'secondary' ); ?>
   360 		<?php submit_button( __('Confirm Removal'), 'secondary' ); ?>
   348 <?php else : ?>
   361 <?php else : ?>
   349 	<p><?php _e('There are no valid users selected for removal.'); ?></p>
   362 	<p><?php _e('There are no valid users selected for removal.'); ?></p>
   374 	if ( isset($_GET['update']) ) :
   387 	if ( isset($_GET['update']) ) :
   375 		switch($_GET['update']) {
   388 		switch($_GET['update']) {
   376 		case 'del':
   389 		case 'del':
   377 		case 'del_many':
   390 		case 'del_many':
   378 			$delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
   391 			$delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
   379 			$messages[] = '<div id="message" class="updated"><p>' . sprintf( _n( 'User deleted.', '%s users deleted.', $delete_count ), number_format_i18n( $delete_count ) ) . '</p></div>';
   392 			if ( 1 == $delete_count ) {
       
   393 				$message = __( 'User deleted.' );
       
   394 			} else {
       
   395 				$message = _n( '%s user deleted.', '%s users deleted.', $delete_count );
       
   396 			}
       
   397 			$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf( $message, number_format_i18n( $delete_count ) ) . '</p></div>';
   380 			break;
   398 			break;
   381 		case 'add':
   399 		case 'add':
   382 			if ( isset( $_GET['id'] ) && ( $user_id = $_GET['id'] ) && current_user_can( 'edit_user', $user_id ) ) {
   400 			if ( isset( $_GET['id'] ) && ( $user_id = $_GET['id'] ) && current_user_can( 'edit_user', $user_id ) ) {
   383 				$messages[] = '<div id="message" class="updated"><p>' . sprintf( __( 'New user created. <a href="%s">Edit user</a>' ),
   401 				$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf( __( 'New user created. <a href="%s">Edit user</a>' ),
   384 					esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ),
   402 					esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ),
   385 						self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ) ) . '</p></div>';
   403 						self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ) ) . '</p></div>';
   386 			} else {
   404 			} else {
   387 				$messages[] = '<div id="message" class="updated"><p>' . __( 'New user created.' ) . '</p></div>';
   405 				$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'New user created.' ) . '</p></div>';
   388 			}
   406 			}
   389 			break;
   407 			break;
   390 		case 'promote':
   408 		case 'promote':
   391 			$messages[] = '<div id="message" class="updated"><p>' . __('Changed roles.') . '</p></div>';
   409 			$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __('Changed roles.') . '</p></div>';
   392 			break;
   410 			break;
   393 		case 'err_admin_role':
   411 		case 'err_admin_role':
   394 			$messages[] = '<div id="message" class="error"><p>' . __('The current user&#8217;s role must have user editing capabilities.') . '</p></div>';
   412 			$messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __('The current user&#8217;s role must have user editing capabilities.') . '</p></div>';
   395 			$messages[] = '<div id="message" class="updated"><p>' . __('Other user roles have been changed.') . '</p></div>';
   413 			$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __('Other user roles have been changed.') . '</p></div>';
   396 			break;
   414 			break;
   397 		case 'err_admin_del':
   415 		case 'err_admin_del':
   398 			$messages[] = '<div id="message" class="error"><p>' . __('You can&#8217;t delete the current user.') . '</p></div>';
   416 			$messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __('You can&#8217;t delete the current user.') . '</p></div>';
   399 			$messages[] = '<div id="message" class="updated"><p>' . __('Other users have been deleted.') . '</p></div>';
   417 			$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __('Other users have been deleted.') . '</p></div>';
   400 			break;
   418 			break;
   401 		case 'remove':
   419 		case 'remove':
   402 			$messages[] = '<div id="message" class="updated fade"><p>' . __('User removed from this site.') . '</p></div>';
   420 			$messages[] = '<div id="message" class="updated notice is-dismissible fade"><p>' . __('User removed from this site.') . '</p></div>';
   403 			break;
   421 			break;
   404 		case 'err_admin_remove':
   422 		case 'err_admin_remove':
   405 			$messages[] = '<div id="message" class="error"><p>' . __("You can't remove the current user.") . '</p></div>';
   423 			$messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __("You can't remove the current user.") . '</p></div>';
   406 			$messages[] = '<div id="message" class="updated fade"><p>' . __('Other users have been removed.') . '</p></div>';
   424 			$messages[] = '<div id="message" class="updated notice is-dismissible fade"><p>' . __('Other users have been removed.') . '</p></div>';
   407 			break;
   425 			break;
   408 		}
   426 		}
   409 	endif; ?>
   427 	endif; ?>
   410 
   428 
   411 <?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
   429 <?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
   423 	foreach ( $messages as $msg )
   441 	foreach ( $messages as $msg )
   424 		echo $msg;
   442 		echo $msg;
   425 } ?>
   443 } ?>
   426 
   444 
   427 <div class="wrap">
   445 <div class="wrap">
   428 <?php screen_icon(); ?>
       
   429 <h2>
   446 <h2>
   430 <?php
   447 <?php
   431 echo esc_html( $title );
   448 echo esc_html( $title );
   432 if ( current_user_can( 'create_users' ) ) { ?>
   449 if ( current_user_can( 'create_users' ) ) { ?>
   433 	<a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
   450 	<a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
   439 	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $usersearch ) ); ?>
   456 	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $usersearch ) ); ?>
   440 </h2>
   457 </h2>
   441 
   458 
   442 <?php $wp_list_table->views(); ?>
   459 <?php $wp_list_table->views(); ?>
   443 
   460 
   444 <form action="" method="get">
   461 <form method="get">
   445 
   462 
   446 <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
   463 <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
   447 
   464 
   448 <?php $wp_list_table->display(); ?>
   465 <?php $wp_list_table->display(); ?>
   449 </form>
   466 </form>