PageRenderTime 44ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/public_html/wp-admin/users.php

https://github.com/terry69/fluxflex_wordpress
PHP | 398 lines | 322 code | 65 blank | 11 comment | 56 complexity | de6c88153f0e829ccfcd21aa3cfd6c6c MD5 | raw file
  1. <?php
  2. /**
  3. * Users administration panel.
  4. *
  5. * @package WordPress
  6. * @subpackage Administration
  7. */
  8. /** WordPress Administration Bootstrap */
  9. require_once( './admin.php' );
  10. if ( ! current_user_can( 'list_users' ) )
  11. wp_die( __( 'Cheatin&#8217; uh?' ) );
  12. $wp_list_table = _get_list_table('WP_Users_List_Table');
  13. $pagenum = $wp_list_table->get_pagenum();
  14. $title = __('Users');
  15. $parent_file = 'users.php';
  16. add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) );
  17. // contextual help - choose Help on the top right of admin panel to preview this.
  18. add_contextual_help($current_screen,
  19. '<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>' .
  20. '<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>' .
  21. '<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>' .
  22. '<p><strong>' . __('For more information:') . '</strong></p>' .
  23. '<p>' . __('<a href="http://codex.wordpress.org/Users_Users_SubPanel" target="_blank">Documentation on Managing Users</a>') . '</p>' .
  24. '<p>' . __('<a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank">Descriptions of Roles and Capabilities</a>') . '</p>' .
  25. '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
  26. );
  27. if ( empty($_REQUEST) ) {
  28. $referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr(stripslashes($_SERVER['REQUEST_URI'])) . '" />';
  29. } elseif ( isset($_REQUEST['wp_http_referer']) ) {
  30. $redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), stripslashes($_REQUEST['wp_http_referer']));
  31. $referer = '<input type="hidden" name="wp_http_referer" value="' . esc_attr($redirect) . '" />';
  32. } else {
  33. $redirect = 'users.php';
  34. $referer = '';
  35. }
  36. $update = '';
  37. switch ( $wp_list_table->current_action() ) {
  38. /* Bulk Dropdown menu Role changes */
  39. case 'promote':
  40. check_admin_referer('bulk-users');
  41. if ( ! current_user_can( 'promote_users' ) )
  42. wp_die( __( 'You can&#8217;t edit that user.' ) );
  43. if ( empty($_REQUEST['users']) ) {
  44. wp_redirect($redirect);
  45. exit();
  46. }
  47. $editable_roles = get_editable_roles();
  48. if ( empty( $editable_roles[$_REQUEST['new_role']] ) )
  49. wp_die(__('You can&#8217;t give users that role.'));
  50. $userids = $_REQUEST['users'];
  51. $update = 'promote';
  52. foreach ( $userids as $id ) {
  53. $id = (int) $id;
  54. if ( ! current_user_can('promote_user', $id) )
  55. wp_die(__('You can&#8217;t edit that user.'));
  56. // The new role of the current user must also have promote_users caps
  57. if ( $id == $current_user->ID && !$wp_roles->role_objects[$_REQUEST['new_role']]->has_cap('promote_users') ) {
  58. $update = 'err_admin_role';
  59. continue;
  60. }
  61. // If the user doesn't already belong to the blog, bail.
  62. if ( is_multisite() && !is_user_member_of_blog( $id ) )
  63. wp_die(__('Cheatin&#8217; uh?'));
  64. $user = new WP_User($id);
  65. $user->set_role($_REQUEST['new_role']);
  66. }
  67. wp_redirect(add_query_arg('update', $update, $redirect));
  68. exit();
  69. break;
  70. case 'dodelete':
  71. if ( is_multisite() )
  72. wp_die( __('User deletion is not allowed from this screen.') );
  73. check_admin_referer('delete-users');
  74. if ( empty($_REQUEST['users']) ) {
  75. wp_redirect($redirect);
  76. exit();
  77. }
  78. if ( ! current_user_can( 'delete_users' ) )
  79. wp_die(__('You can&#8217;t delete users.'));
  80. $userids = $_REQUEST['users'];
  81. $update = 'del';
  82. $delete_count = 0;
  83. foreach ( (array) $userids as $id) {
  84. $id = (int) $id;
  85. if ( ! current_user_can( 'delete_user', $id ) )
  86. wp_die(__( 'You can&#8217;t delete that user.' ) );
  87. if ( $id == $current_user->ID ) {
  88. $update = 'err_admin_del';
  89. continue;
  90. }
  91. switch ( $_REQUEST['delete_option'] ) {
  92. case 'delete':
  93. if ( current_user_can('delete_user', $id) )
  94. wp_delete_user($id);
  95. break;
  96. case 'reassign':
  97. if ( current_user_can('delete_user', $id) )
  98. wp_delete_user($id, $_REQUEST['reassign_user']);
  99. break;
  100. }
  101. ++$delete_count;
  102. }
  103. $redirect = add_query_arg( array('delete_count' => $delete_count, 'update' => $update), $redirect);
  104. wp_redirect($redirect);
  105. exit();
  106. break;
  107. case 'delete':
  108. if ( is_multisite() )
  109. wp_die( __('User deletion is not allowed from this screen.') );
  110. check_admin_referer('bulk-users');
  111. if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) {
  112. wp_redirect($redirect);
  113. exit();
  114. }
  115. if ( ! current_user_can( 'delete_users' ) )
  116. $errors = new WP_Error( 'edit_users', __( 'You can&#8217;t delete users.' ) );
  117. if ( empty($_REQUEST['users']) )
  118. $userids = array(intval($_REQUEST['user']));
  119. else
  120. $userids = $_REQUEST['users'];
  121. include ('admin-header.php');
  122. ?>
  123. <form action="" method="post" name="updateusers" id="updateusers">
  124. <?php wp_nonce_field('delete-users') ?>
  125. <?php echo $referer; ?>
  126. <div class="wrap">
  127. <?php screen_icon(); ?>
  128. <h2><?php _e('Delete Users'); ?></h2>
  129. <p><?php _e('You have specified these users for deletion:'); ?></p>
  130. <ul>
  131. <?php
  132. $go_delete = false;
  133. foreach ( (array) $userids as $id ) {
  134. $id = (int) $id;
  135. $user = new WP_User($id);
  136. if ( $id == $current_user->ID ) {
  137. echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be deleted.</strong>'), $id, $user->user_login) . "</li>\n";
  138. } else {
  139. echo "<li><input type=\"hidden\" name=\"users[]\" value=\"" . esc_attr($id) . "\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
  140. $go_delete = true;
  141. }
  142. }
  143. ?>
  144. </ul>
  145. <?php if ( $go_delete ) : ?>
  146. <fieldset><p><legend><?php _e('What should be done with posts and links owned by this user?'); ?></legend></p>
  147. <ul style="list-style:none;">
  148. <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" checked="checked" />
  149. <?php _e('Delete all posts and links.'); ?></label></li>
  150. <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
  151. <?php echo '<label for="delete_option1">'.__('Attribute all posts and links to:').'</label>';
  152. wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
  153. </ul></fieldset>
  154. <input type="hidden" name="action" value="dodelete" />
  155. <?php submit_button( __('Confirm Deletion'), 'secondary' ); ?>
  156. <?php else : ?>
  157. <p><?php _e('There are no valid users selected for deletion.'); ?></p>
  158. <?php endif; ?>
  159. </div>
  160. </form>
  161. <?php
  162. break;
  163. case 'doremove':
  164. check_admin_referer('remove-users');
  165. if ( ! is_multisite() )
  166. wp_die( __( 'You can&#8217;t remove users.' ) );
  167. if ( empty($_REQUEST['users']) ) {
  168. wp_redirect($redirect);
  169. exit;
  170. }
  171. if ( ! current_user_can( 'remove_users' ) )
  172. wp_die( __( 'You can&#8217;t remove users.' ) );
  173. $userids = $_REQUEST['users'];
  174. $update = 'remove';
  175. foreach ( $userids as $id ) {
  176. $id = (int) $id;
  177. if ( $id == $current_user->id && !is_super_admin() ) {
  178. $update = 'err_admin_remove';
  179. continue;
  180. }
  181. if ( !current_user_can('remove_user', $id) ) {
  182. $update = 'err_admin_remove';
  183. continue;
  184. }
  185. remove_user_from_blog($id, $blog_id);
  186. }
  187. $redirect = add_query_arg( array('update' => $update), $redirect);
  188. wp_redirect($redirect);
  189. exit;
  190. break;
  191. case 'remove':
  192. check_admin_referer('bulk-users');
  193. if ( ! is_multisite() )
  194. wp_die( __( 'You can&#8217;t remove users.' ) );
  195. if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) {
  196. wp_redirect($redirect);
  197. exit();
  198. }
  199. if ( !current_user_can('remove_users') )
  200. $error = new WP_Error('edit_users', __('You can&#8217;t remove users.'));
  201. if ( empty($_REQUEST['users']) )
  202. $userids = array(intval($_REQUEST['user']));
  203. else
  204. $userids = $_REQUEST['users'];
  205. include ('admin-header.php');
  206. ?>
  207. <form action="" method="post" name="updateusers" id="updateusers">
  208. <?php wp_nonce_field('remove-users') ?>
  209. <?php echo $referer; ?>
  210. <div class="wrap">
  211. <?php screen_icon(); ?>
  212. <h2><?php _e('Remove Users from Site'); ?></h2>
  213. <p><?php _e('You have specified these users for removal:'); ?></p>
  214. <ul>
  215. <?php
  216. $go_remove = false;
  217. foreach ( $userids as $id ) {
  218. $id = (int) $id;
  219. $user = new WP_User($id);
  220. if ( $id == $current_user->id && !is_super_admin() ) {
  221. echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be removed.</strong>'), $id, $user->user_login) . "</li>\n";
  222. } elseif ( !current_user_can('remove_user', $id) ) {
  223. echo "<li>" . sprintf(__('ID #%1s: %2s <strong>You don\'t have permission to remove this user.</strong>'), $id, $user->user_login) . "</li>\n";
  224. } else {
  225. echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
  226. $go_remove = true;
  227. }
  228. }
  229. ?>
  230. <?php if ( $go_remove ) : ?>
  231. <input type="hidden" name="action" value="doremove" />
  232. <?php submit_button( __('Confirm Removal'), 'secondary' ); ?>
  233. <?php else : ?>
  234. <p><?php _e('There are no valid users selected for removal.'); ?></p>
  235. <?php endif; ?>
  236. </div>
  237. </form>
  238. <?php
  239. break;
  240. default:
  241. if ( !empty($_GET['_wp_http_referer']) ) {
  242. wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI'])));
  243. exit;
  244. }
  245. $wp_list_table->prepare_items();
  246. $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
  247. if ( $pagenum > $total_pages && $total_pages > 0 ) {
  248. wp_redirect( add_query_arg( 'paged', $total_pages ) );
  249. exit;
  250. }
  251. include('./admin-header.php');
  252. $messages = array();
  253. if ( isset($_GET['update']) ) :
  254. switch($_GET['update']) {
  255. case 'del':
  256. case 'del_many':
  257. $delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
  258. $messages[] = '<div id="message" class="updated"><p>' . sprintf(_n('%s user deleted', '%s users deleted', $delete_count), $delete_count) . '</p></div>';
  259. break;
  260. case 'add':
  261. $messages[] = '<div id="message" class="updated"><p>' . __('New user created.') . '</p></div>';
  262. break;
  263. case 'promote':
  264. $messages[] = '<div id="message" class="updated"><p>' . __('Changed roles.') . '</p></div>';
  265. break;
  266. case 'err_admin_role':
  267. $messages[] = '<div id="message" class="error"><p>' . __('The current user&#8217;s role must have user editing capabilities.') . '</p></div>';
  268. $messages[] = '<div id="message" class="updated"><p>' . __('Other user roles have been changed.') . '</p></div>';
  269. break;
  270. case 'err_admin_del':
  271. $messages[] = '<div id="message" class="error"><p>' . __('You can&#8217;t delete the current user.') . '</p></div>';
  272. $messages[] = '<div id="message" class="updated"><p>' . __('Other users have been deleted.') . '</p></div>';
  273. break;
  274. case 'remove':
  275. $messages[] = '<div id="message" class="updated fade"><p>' . __('User removed from this site.') . '</p></div>';
  276. break;
  277. case 'err_admin_remove':
  278. $messages[] = '<div id="message" class="error"><p>' . __("You can't remove the current user.") . '</p></div>';
  279. $messages[] = '<div id="message" class="updated fade"><p>' . __('Other users have been removed.') . '</p></div>';
  280. break;
  281. }
  282. endif; ?>
  283. <?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
  284. <div class="error">
  285. <ul>
  286. <?php
  287. foreach ( $errors->get_error_messages() as $err )
  288. echo "<li>$err</li>\n";
  289. ?>
  290. </ul>
  291. </div>
  292. <?php endif;
  293. if ( ! empty($messages) ) {
  294. foreach ( $messages as $msg )
  295. echo $msg;
  296. } ?>
  297. <div class="wrap">
  298. <?php screen_icon(); ?>
  299. <h2>
  300. <?php
  301. echo esc_html( $title );
  302. if ( current_user_can( 'create_users' ) ) { ?>
  303. <a href="user-new.php" class="button add-new-h2"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
  304. <?php } elseif ( is_multisite() && current_user_can( 'promote_users' ) ) { ?>
  305. <a href="user-new.php" class="button add-new-h2"><?php echo esc_html_x( 'Add Existing', 'user' ); ?></a>
  306. <?php }
  307. if ( $usersearch )
  308. printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $usersearch ) ); ?>
  309. </h2>
  310. <?php $wp_list_table->views(); ?>
  311. <form action="" method="get">
  312. <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
  313. <?php $wp_list_table->display(); ?>
  314. </form>
  315. <?php
  316. if ( is_multisite() ) {
  317. foreach ( array('user_login' => 'user_login', 'first_name' => 'user_firstname', 'last_name' => 'user_lastname', 'email' => 'user_email', 'url' => 'user_uri', 'role' => 'user_role') as $formpost => $var ) {
  318. $var = 'new_' . $var;
  319. $$var = isset($_REQUEST[$formpost]) ? esc_attr(stripslashes($_REQUEST[$formpost])) : '';
  320. }
  321. unset($name);
  322. }
  323. ?>
  324. <br class="clear" />
  325. </div>
  326. <?php
  327. break;
  328. } // end of the $doaction switch
  329. include('./admin-footer.php');