[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-admin/ -> users.php (source)

   1  <?php
   2  /**
   3   * Users administration panel.
   4   *
   5   * @package WordPress
   6   * @subpackage Administration
   7   */
   8  
   9  /** WordPress Administration Bootstrap */
  10  require_once ( './admin.php' );
  11  
  12  if ( ! current_user_can( 'list_users' ) )
  13      wp_die( __( 'Cheatin&#8217; uh?' ) );
  14  
  15  $wp_list_table = _get_list_table('WP_Users_List_Table');
  16  $pagenum = $wp_list_table->get_pagenum();
  17  $title = __('Users');
  18  $parent_file = 'users.php';
  19  
  20  add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) );
  21  
  22  // contextual help - choose Help on the top right of admin panel to preview this.
  23  get_current_screen()->add_help_tab( array(
  24      'id'      => 'overview',
  25      'title'   => __('Overview'),
  26      'content' => '<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>' .
  27                   '<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>'
  28  ) ) ;
  29  
  30  get_current_screen()->add_help_tab( array(
  31      'id'      => 'screen-display',
  32      'title'   => __('Screen Display'),
  33      'content' => '<p>' . __('You can customize the display of this screen in a number of ways:') . '</p>' .
  34                      '<ul>' .
  35                      '<li>' . __('You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab.') . '</li>' .
  36                      '<li>' . __('You can filter the list of users by User Role using the text links in the upper left to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users. Unused User Roles are not listed.') . '</li>' .
  37                      '<li>' . __('You can view all posts made by a user by clicking on the number under the Posts column.') . '</li>' .
  38                      '</ul>'
  39  ) );
  40  
  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>' .
  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  
  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>';
  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>';
  49  
  50  $help .= '</ul>';
  51  
  52  get_current_screen()->add_help_tab( array(
  53      'id'      => 'actions',
  54      'title'   => __('Actions'),
  55      'content' => $help,
  56  ) );
  57  unset( $help );
  58  
  59  get_current_screen()->set_help_sidebar(
  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>' .
  62      '<p>' . __('<a href="http://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>'
  64  );
  65  
  66  if ( empty($_REQUEST) ) {
  67      $referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr(stripslashes($_SERVER['REQUEST_URI'])) . '" />';
  68  } elseif ( isset($_REQUEST['wp_http_referer']) ) {
  69      $redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), stripslashes($_REQUEST['wp_http_referer']));
  70      $referer = '<input type="hidden" name="wp_http_referer" value="' . esc_attr($redirect) . '" />';
  71  } else {
  72      $redirect = 'users.php';
  73      $referer = '';
  74  }
  75  
  76  $update = '';
  77  
  78  switch ( $wp_list_table->current_action() ) {
  79  
  80  /* Bulk Dropdown menu Role changes */
  81  case 'promote':
  82      check_admin_referer('bulk-users');
  83  
  84      if ( ! current_user_can( 'promote_users' ) )
  85          wp_die( __( 'You can&#8217;t edit that user.' ) );
  86  
  87      if ( empty($_REQUEST['users']) ) {
  88          wp_redirect($redirect);
  89          exit();
  90      }
  91  
  92      $editable_roles = get_editable_roles();
  93      if ( empty( $editable_roles[$_REQUEST['new_role']] ) )
  94          wp_die(__('You can&#8217;t give users that role.'));
  95  
  96      $userids = $_REQUEST['users'];
  97      $update = 'promote';
  98      foreach ( $userids as $id ) {
  99          $id = (int) $id;
 100  
 101          if ( ! current_user_can('promote_user', $id) )
 102              wp_die(__('You can&#8217;t edit that user.'));
 103          // The new role of the current user must also have the promote_users cap or be a multisite super admin
 104          if ( $id == $current_user->ID && ! $wp_roles->role_objects[ $_REQUEST['new_role'] ]->has_cap('promote_users')
 105              && ! ( is_multisite() && is_super_admin() ) ) {
 106                  $update = 'err_admin_role';
 107                  continue;
 108          }
 109  
 110          // If the user doesn't already belong to the blog, bail.
 111          if ( is_multisite() && !is_user_member_of_blog( $id ) )
 112              wp_die(__('Cheatin&#8217; uh?'));
 113  
 114          $user = new WP_User($id);
 115          $user->set_role($_REQUEST['new_role']);
 116      }
 117  
 118      wp_redirect(add_query_arg('update', $update, $redirect));
 119      exit();
 120  
 121  break;
 122  
 123  case 'dodelete':
 124      if ( is_multisite() )
 125          wp_die( __('User deletion is not allowed from this screen.') );
 126  
 127      check_admin_referer('delete-users');
 128  
 129      if ( empty($_REQUEST['users']) ) {
 130          wp_redirect($redirect);
 131          exit();
 132      }
 133  
 134      if ( ! current_user_can( 'delete_users' ) )
 135          wp_die(__('You can&#8217;t delete users.'));
 136  
 137      $userids = $_REQUEST['users'];
 138      $update = 'del';
 139      $delete_count = 0;
 140  
 141      foreach ( (array) $userids as $id) {
 142          $id = (int) $id;
 143  
 144          if ( ! current_user_can( 'delete_user', $id ) )
 145              wp_die(__( 'You can&#8217;t delete that user.' ) );
 146  
 147          if ( $id == $current_user->ID ) {
 148              $update = 'err_admin_del';
 149              continue;
 150          }
 151          switch ( $_REQUEST['delete_option'] ) {
 152          case 'delete':
 153              if ( current_user_can('delete_user', $id) )
 154                  wp_delete_user($id);
 155              break;
 156          case 'reassign':
 157              if ( current_user_can('delete_user', $id) )
 158                  wp_delete_user($id, $_REQUEST['reassign_user']);
 159              break;
 160          }
 161          ++$delete_count;
 162      }
 163  
 164      $redirect = add_query_arg( array('delete_count' => $delete_count, 'update' => $update), $redirect);
 165      wp_redirect($redirect);
 166      exit();
 167  
 168  break;
 169  
 170  case 'delete':
 171      if ( is_multisite() )
 172          wp_die( __('User deletion is not allowed from this screen.') );
 173  
 174      check_admin_referer('bulk-users');
 175  
 176      if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) {
 177          wp_redirect($redirect);
 178          exit();
 179      }
 180  
 181      if ( ! current_user_can( 'delete_users' ) )
 182          $errors = new WP_Error( 'edit_users', __( 'You can&#8217;t delete users.' ) );
 183  
 184      if ( empty($_REQUEST['users']) )
 185          $userids = array(intval($_REQUEST['user']));
 186      else
 187          $userids = (array) $_REQUEST['users'];
 188  
 189      include  ('admin-header.php');
 190  ?>
 191  <form action="" method="post" name="updateusers" id="updateusers">
 192  <?php wp_nonce_field('delete-users') ?>
 193  <?php echo $referer; ?>
 194  
 195  <div class="wrap">
 196  <?php screen_icon(); ?>
 197  <h2><?php _e('Delete Users'); ?></h2>
 198  <p><?php echo _n( 'You have specified this user for deletion:', 'You have specified these users for deletion:', count( $userids ) ); ?></p>
 199  <ul>
 200  <?php
 201      $go_delete = 0;
 202      foreach ( $userids as $id ) {
 203          $id = (int) $id;
 204          $user = new WP_User($id);
 205          if ( $id == $current_user->ID ) {
 206              echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be deleted.</strong>'), $id, $user->user_login) . "</li>\n";
 207          } else {
 208              echo "<li><input type=\"hidden\" name=\"users[]\" value=\"" . esc_attr($id) . "\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
 209              $go_delete++;
 210          }
 211      }
 212      ?>
 213      </ul>
 214  <?php if ( $go_delete ) : ?>
 215      <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>
 216      <ul style="list-style:none;">
 217          <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" checked="checked" />
 218          <?php _e('Delete all posts and links.'); ?></label></li>
 219          <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
 220          <?php echo '<label for="delete_option1">'.__('Attribute all posts and links to:').'</label>';
 221          wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
 222      </ul></fieldset>
 223      <input type="hidden" name="action" value="dodelete" />
 224      <?php submit_button( __('Confirm Deletion'), 'secondary' ); ?>
 225  <?php else : ?>
 226      <p><?php _e('There are no valid users selected for deletion.'); ?></p>
 227  <?php endif; ?>
 228  </div>
 229  </form>
 230  <?php
 231  
 232  break;
 233  
 234  case 'doremove':
 235      check_admin_referer('remove-users');
 236  
 237      if ( ! is_multisite() )
 238          wp_die( __( 'You can&#8217;t remove users.' ) );
 239  
 240      if ( empty($_REQUEST['users']) ) {
 241          wp_redirect($redirect);
 242          exit;
 243      }
 244  
 245      if ( ! current_user_can( 'remove_users' ) )
 246          wp_die( __( 'You can&#8217;t remove users.' ) );
 247  
 248      $userids = $_REQUEST['users'];
 249  
 250      $update = 'remove';
 251       foreach ( $userids as $id ) {
 252          $id = (int) $id;
 253          if ( $id == $current_user->ID && !is_super_admin() ) {
 254              $update = 'err_admin_remove';
 255              continue;
 256          }
 257          if ( !current_user_can('remove_user', $id) ) {
 258              $update = 'err_admin_remove';
 259              continue;
 260          }
 261          remove_user_from_blog($id, $blog_id);
 262      }
 263  
 264      $redirect = add_query_arg( array('update' => $update), $redirect);
 265      wp_redirect($redirect);
 266      exit;
 267  
 268  break;
 269  
 270  case 'remove':
 271  
 272      check_admin_referer('bulk-users');
 273  
 274      if ( ! is_multisite() )
 275          wp_die( __( 'You can&#8217;t remove users.' ) );
 276  
 277      if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) {
 278          wp_redirect($redirect);
 279          exit();
 280      }
 281  
 282      if ( !current_user_can('remove_users') )
 283          $error = new WP_Error('edit_users', __('You can&#8217;t remove users.'));
 284  
 285      if ( empty($_REQUEST['users']) )
 286          $userids = array(intval($_REQUEST['user']));
 287      else
 288          $userids = $_REQUEST['users'];
 289  
 290      include  ('admin-header.php');
 291  ?>
 292  <form action="" method="post" name="updateusers" id="updateusers">
 293  <?php wp_nonce_field('remove-users') ?>
 294  <?php echo $referer; ?>
 295  
 296  <div class="wrap">
 297  <?php screen_icon(); ?>
 298  <h2><?php _e('Remove Users from Site'); ?></h2>
 299  <p><?php _e('You have specified these users for removal:'); ?></p>
 300  <ul>
 301  <?php
 302      $go_remove = false;
 303       foreach ( $userids as $id ) {
 304          $id = (int) $id;
 305           $user = new WP_User($id);
 306          if ( $id == $current_user->ID && !is_super_admin() ) {
 307              echo "<li>" . sprintf(__('ID #%1s: %2s <strong>The current user will not be removed.</strong>'), $id, $user->user_login) . "</li>\n";
 308          } elseif ( !current_user_can('remove_user', $id) ) {
 309              echo "<li>" . sprintf(__('ID #%1s: %2s <strong>You don\'t have permission to remove this user.</strong>'), $id, $user->user_login) . "</li>\n";
 310          } else {
 311              echo "<li><input type=\"hidden\" name=\"users[]\" value=\"{$id}\" />" . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "</li>\n";
 312              $go_remove = true;
 313          }
 314       }
 315       ?>
 316  <?php if ( $go_remove ) : ?>
 317          <input type="hidden" name="action" value="doremove" />
 318          <?php submit_button( __('Confirm Removal'), 'secondary' ); ?>
 319  <?php else : ?>
 320      <p><?php _e('There are no valid users selected for removal.'); ?></p>
 321  <?php endif; ?>
 322  </div>
 323  </form>
 324  <?php
 325  
 326  break;
 327  
 328  default:
 329  
 330      if ( !empty($_GET['_wp_http_referer']) ) {
 331          wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI'])));
 332          exit;
 333      }
 334  
 335      $wp_list_table->prepare_items();
 336      $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
 337      if ( $pagenum > $total_pages && $total_pages > 0 ) {
 338          wp_redirect( add_query_arg( 'paged', $total_pages ) );
 339          exit;
 340      }
 341  
 342      if ( is_multisite() && current_user_can( 'promote_users' ) && ! wp_is_large_network( 'users' )
 343          && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
 344      ) {
 345          wp_enqueue_script( 'user-search' );
 346      }
 347  
 348      include ('./admin-header.php');
 349  
 350      $messages = array();
 351      if ( isset($_GET['update']) ) :
 352          switch($_GET['update']) {
 353          case 'del':
 354          case 'del_many':
 355              $delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0;
 356              $messages[] = '<div id="message" class="updated"><p>' . sprintf( _n( 'User deleted.', '%s users deleted.', $delete_count ), number_format_i18n( $delete_count ) ) . '</p></div>';
 357              break;
 358          case 'add':
 359              if ( isset( $_GET['id'] ) && ( $user_id = $_GET['id'] ) && current_user_can( 'edit_user', $user_id ) ) {
 360                  $messages[] = '<div id="message" class="updated"><p>' . sprintf( __( 'New user created. <a href="%s">Edit user</a>' ),
 361                      esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ),
 362                          self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ) ) . '</p></div>';
 363              } else {
 364                  $messages[] = '<div id="message" class="updated"><p>' . __( 'New user created.' ) . '</p></div>';
 365              }
 366              break;
 367          case 'promote':
 368              $messages[] = '<div id="message" class="updated"><p>' . __('Changed roles.') . '</p></div>';
 369              break;
 370          case 'err_admin_role':
 371              $messages[] = '<div id="message" class="error"><p>' . __('The current user&#8217;s role must have user editing capabilities.') . '</p></div>';
 372              $messages[] = '<div id="message" class="updated"><p>' . __('Other user roles have been changed.') . '</p></div>';
 373              break;
 374          case 'err_admin_del':
 375              $messages[] = '<div id="message" class="error"><p>' . __('You can&#8217;t delete the current user.') . '</p></div>';
 376              $messages[] = '<div id="message" class="updated"><p>' . __('Other users have been deleted.') . '</p></div>';
 377              break;
 378          case 'remove':
 379              $messages[] = '<div id="message" class="updated fade"><p>' . __('User removed from this site.') . '</p></div>';
 380              break;
 381          case 'err_admin_remove':
 382              $messages[] = '<div id="message" class="error"><p>' . __("You can't remove the current user.") . '</p></div>';
 383              $messages[] = '<div id="message" class="updated fade"><p>' . __('Other users have been removed.') . '</p></div>';
 384              break;
 385          }
 386      endif; ?>
 387  
 388  <?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
 389      <div class="error">
 390          <ul>
 391          <?php
 392              foreach ( $errors->get_error_messages() as $err )
 393                  echo "<li>$err</li>\n";
 394          ?>
 395          </ul>
 396      </div>
 397  <?php endif;
 398  
 399  if ( ! empty($messages) ) {
 400      foreach ( $messages as $msg )
 401          echo $msg;
 402  } ?>
 403  
 404  <div class="wrap">
 405  <?php screen_icon(); ?>
 406  <h2>
 407  <?php
 408  echo esc_html( $title );
 409  if ( current_user_can( 'create_users' ) ) { ?>
 410      <a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
 411  <?php } elseif ( is_multisite() && current_user_can( 'promote_users' ) ) { ?>
 412      <a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add Existing', 'user' ); ?></a>
 413  <?php }
 414  
 415  if ( $usersearch )
 416      printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', esc_html( $usersearch ) ); ?>
 417  </h2>
 418  
 419  <?php $wp_list_table->views(); ?>
 420  
 421  <form action="" method="get">
 422  
 423  <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
 424  
 425  <?php $wp_list_table->display(); ?>
 426  </form>
 427  
 428  <br class="clear" />
 429  </div>
 430  <?php
 431  break;
 432  
 433  } // end of the $doaction switch
 434  
 435  include ('./admin-footer.php');


Generated: Fri May 25 03:56:23 2012 Hosted by follow the white rabbit.