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’ uh?')); |
131 wp_die( __( 'Cheatin’ 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 |
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; ?> |
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’s role must have user editing capabilities.') . '</p></div>'; |
412 $messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __('The current user’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’t delete the current user.') . '</p></div>'; |
416 $messages[] = '<div id="message" class="error notice is-dismissible"><p>' . __('You can’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 ) ) : ?> |