[ XREF Home ] [ Index ]

PHP Cross Reference of WordPress Trunk

Provided by Yoast

title

Body

[close]

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

   1  <?php
   2  /**
   3   * Edit Site Users Administration Screen
   4   *
   5   * @package WordPress
   6   * @subpackage Multisite
   7   * @since 3.1.0
   8   */
   9  
  10  /** Load WordPress Administration Bootstrap */
  11  require_once ( './admin.php' );
  12  
  13  if ( ! is_multisite() )
  14      wp_die( __( 'Multisite support is not enabled.' ) );
  15  
  16  if ( ! current_user_can('manage_sites') )
  17      wp_die(__('You do not have sufficient permissions to edit this site.'));
  18  
  19  $wp_list_table = _get_list_table('WP_Users_List_Table');
  20  $wp_list_table->prepare_items();
  21  
  22  $action = $wp_list_table->current_action();
  23  
  24  add_contextual_help($current_screen,
  25      '<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
  26      '<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
  27      '<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
  28      '<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
  29      '<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>' .
  30      '<p><strong>' . __('For more information:') . '</strong></p>' .
  31      '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screens" target="_blank">Documentation on Site Management</a>') . '</p>' .
  32      '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
  33  );
  34  
  35  $id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
  36  
  37  if ( ! $id )
  38      wp_die( __('Invalid site ID.') );
  39  
  40  $details = get_blog_details( $id );
  41  if ( !can_edit_network( $details->site_id ) )
  42      wp_die( __( 'You do not have permission to access this page.' ) );
  43  
  44  $is_main_site = is_main_site( $id );
  45  
  46  // get blog prefix
  47  $blog_prefix = $wpdb->get_blog_prefix( $id );
  48  
  49  // @todo This is a hack. Eventually, add API to WP_Roles allowing retrieval of roles for a particular blog.
  50  if ( ! empty($wp_roles->use_db) ) {
  51      $editblog_roles = get_blog_option( $id, "{$blog_prefix}user_roles" );
  52  } else {
  53      // Roles are stored in memory, not the DB.
  54      $editblog_roles = $wp_roles->roles;
  55  }
  56  $default_role = get_blog_option( $id, 'default_role' );
  57  
  58  $action = $wp_list_table->current_action();
  59  
  60  if ( $action ) {
  61      switch_to_blog( $id );
  62      
  63      switch ( $action ) {
  64          case 'newuser':
  65              check_admin_referer( 'add-user', '_wpnonce_add-new-user' );
  66              $user = $_POST['user'];
  67              if ( !is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) {
  68                  $update = 'err_new';
  69              } else {
  70                  $password = wp_generate_password( 12, false);
  71                  $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) );
  72  
  73                  if ( false == $user_id ) {
  74                       $update = 'err_new_dup';
  75                  } else {
  76                      wp_new_user_notification( $user_id, $password );
  77                      add_user_to_blog( $id, $user_id, $_POST['new_role'] );
  78                      $update = 'newuser';
  79                  }
  80              }
  81              break;
  82  
  83          case 'adduser':
  84              check_admin_referer( 'add-user', '_wpnonce_add-user' );
  85              if ( !empty( $_POST['newuser'] ) ) {
  86                  $update = 'adduser';
  87                  $newuser = $_POST['newuser'];                
  88                  $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) );
  89                  if ( $userid ) {
  90                      $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" );
  91                      if ( $user == false )
  92                          add_user_to_blog( $id, $userid, $_POST['new_role'] );
  93                      else
  94                          $update = 'err_add_member';
  95                  } else {
  96                      $update = 'err_add_notfound';
  97                  }
  98              } else {
  99                  $update = 'err_add_notfound';
 100              }
 101              break;
 102          
 103          case 'remove':
 104              if ( !current_user_can('remove_users')  )
 105                  die(__('You can&#8217;t remove users.'));
 106              check_admin_referer( 'bulk-users' );
 107              
 108              $update = 'remove';
 109              if ( isset( $_REQUEST['users'] ) ) {
 110                  $userids = $_REQUEST['users'];
 111  
 112                  foreach ( $userids as $user_id ) {
 113                      $user_id = (int) $user_id;
 114                      remove_user_from_blog( $user_id, $id );
 115                  }
 116              } elseif ( isset( $_GET['user'] ) ) {
 117                  remove_user_from_blog( $_GET['user'] );
 118              } else {
 119                  $update = 'err_remove';
 120              }
 121              break;
 122  
 123          case 'promote':
 124              check_admin_referer( 'bulk-users' );
 125              $editable_roles = get_editable_roles();
 126              if ( empty( $editable_roles[$_REQUEST['new_role']] ) )
 127                  wp_die(__('You can&#8217;t give users that role.'));
 128  
 129              if ( isset( $_REQUEST['users'] ) ) {
 130                  $userids = $_REQUEST['users'];
 131                  $update = 'promote';
 132                  foreach ( $userids as $user_id ) {
 133                      $user_id = (int) $user_id;
 134  
 135                      // If the user doesn't already belong to the blog, bail.
 136                      if ( !is_user_member_of_blog( $user_id ) )
 137                          wp_die(__('Cheatin&#8217; uh?'));
 138  
 139                      $user = new WP_User( $user_id );
 140                      $user->set_role( $_REQUEST['new_role'] );
 141                  }
 142              } else {
 143                  $update = 'err_promote';
 144              }
 145              break;
 146      }
 147      
 148      restore_current_blog();
 149      wp_redirect( add_query_arg( 'update', $update, wp_get_referer() ) );
 150      exit();
 151  }
 152  
 153  if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
 154      wp_redirect( wp_get_referer() );
 155      exit();
 156  }
 157  
 158  add_screen_option( 'per_page', array( 'label' => _x( 'Users', 'users per page (screen options)' ) ) );
 159  
 160  $title = sprintf( __('Edit Site: %s'), get_blogaddress_by_id($id));
 161  $parent_file = 'sites.php';
 162  $submenu_file = 'sites.php';
 163  
 164  require ('../admin-header.php'); ?>
 165  
 166  <div class="wrap">
 167  <?php screen_icon('ms-admin'); ?>
 168  <h2 id="edit-site"><?php echo $title ?></h2>
 169  <h3 class="nav-tab-wrapper">
 170  <?php
 171  $tabs = array(
 172      'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
 173      'site-users'    => array( 'label' => __( 'Users' ),    'url' => 'site-users.php'    ),
 174      'site-themes'   => array( 'label' => __( 'Themes' ),   'url' => 'site-themes.php'   ),
 175      'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
 176  );
 177  foreach ( $tabs as $tab_id => $tab ) {
 178      $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
 179      echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' .  esc_html( $tab['label'] ) . '</a>';
 180  }
 181  ?>
 182  </h3><?php
 183  
 184  if ( isset($_GET['update']) ) :
 185      switch($_GET['update']) {
 186      case 'adduser':
 187          echo '<div id="message" class="updated"><p>' . __( 'User added.' ) . '</p></div>';
 188          break;
 189      case 'err_add_member':
 190          echo '<div id="message" class="error"><p>' . __( 'User is already a member of this site.' ) . '</p></div>';
 191          break;
 192      case 'err_add_notfound':
 193          echo '<div id="message" class="error"><p>' . __( 'Enter the username of an existing user.' ) . '</p></div>';
 194          break;
 195      case 'promote':
 196          echo '<div id="message" class="updated"><p>' . __( 'Changed roles.' ) . '</p></div>';
 197          break;
 198      case 'err_promote':
 199          echo '<div id="message" class="error"><p>' . __( 'Select a user to change role.' ) . '</p></div>';
 200          break;
 201      case 'remove':
 202          echo '<div id="message" class="updated"><p>' . __( 'User removed from this site.' ) . '</p></div>';
 203          break;
 204      case 'err_remove':
 205          echo '<div id="message" class="error"><p>' . __( 'Select a user to remove.' ) . '</p></div>';
 206          break;
 207      case 'newuser':
 208          echo '<div id="message" class="updated"><p>' . __( 'User created.' ) . '</p></div>';
 209          break;
 210      case 'err_new':
 211          echo '<div id="message" class="error"><p>' . __( 'Enter the username and email.' ) . '</p></div>';
 212          break;
 213      case 'err_new_dup':
 214          echo '<div id="message" class="error"><p>' . __( 'Duplicated username or email address.' ) . '</p></div>';
 215          break;
 216      }
 217  endif; ?>
 218  
 219  <form class="search-form" action="" method="get">
 220  <?php $wp_list_table->search_box( __( 'Search Users' ), 'user' ); ?>
 221  <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 222  </form>
 223  
 224  <?php $wp_list_table->views(); ?>
 225  
 226  <form method="post" action="site-users.php?action=update-site">
 227      <?php wp_nonce_field( 'edit-site' ); ?>
 228      <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 229  
 230  <?php $wp_list_table->display(); ?>
 231  
 232  </form>
 233  
 234  <?php do_action( 'network_site_users_after_list_table', '' );?>
 235  
 236  <?php if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?>
 237  <h4 id="add-user"><?php _e('Add User to This Site') ?></h4>
 238      <?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
 239  <p><?php _e( 'You may add from existing network users, or set up a new user to add to this site.' ); ?></p>
 240      <?php else : ?>
 241  <p><?php _e( 'You may add from existing network users to this site.' ); ?></p>
 242      <?php endif; ?>
 243  <h5 id="add-existing-user"><?php _e('Add Existing User') ?></h5>
 244  <form action="site-users.php?action=adduser" id="adduser" method="post">
 245      <?php wp_nonce_field( 'edit-site' ); ?>
 246      <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 247      <table class="form-table">
 248          <tr>
 249              <th scope="row"><?php _e( 'Username' ); ?></th>
 250              <td><input type="text" class="regular-text" name="newuser" id="newuser" /></td>
 251          </tr>
 252          <tr>
 253              <th scope="row"><?php _e( 'Role'); ?></th>
 254              <td><select name="new_role" id="new_role_0">
 255              <?php
 256              reset( $editblog_roles );
 257              foreach ( $editblog_roles as $role => $role_assoc ){
 258                  $name = translate_user_role( $role_assoc['name'] );
 259                  $selected = ( $role == $default_role ) ? 'selected="selected"' : '';
 260                  echo '<option ' . $selected . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
 261              }
 262              ?>
 263              </select></td>
 264          </tr>
 265      </table>
 266      <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
 267      <?php submit_button( __('Add User'), 'primary', 'add-user', false, array( 'id' => 'submit-add-existing-user' ) ); ?>
 268  </form>
 269  <?php endif; ?>
 270  
 271  <?php if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
 272  <h5 id="add-new-user"><?php _e('Add New User') ?></h5>
 273  <form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post">
 274      <?php wp_nonce_field( 'edit-site' ); ?>
 275      <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 276      <table class="form-table">
 277          <tr>
 278              <th scope="row"><?php _e( 'Username' ) ?></th>
 279              <td><input type="text" class="regular-text" name="user[username]" /></td>
 280          </tr>
 281          <tr>
 282              <th scope="row"><?php _e( 'Email' ) ?></th>
 283              <td><input type="text" class="regular-text" name="user[email]" /></td>
 284          </tr>
 285          <tr>
 286              <th scope="row"><?php _e( 'Role'); ?></th>
 287              <td><select name="new_role" id="new_role_0">
 288              <?php
 289              reset( $editblog_roles );
 290              foreach ( $editblog_roles as $role => $role_assoc ){
 291                  $name = translate_user_role( $role_assoc['name'] );
 292                  $selected = ( $role == $default_role ) ? 'selected="selected"' : '';
 293                  echo '<option ' . $selected . ' value="' . esc_attr( $role ) . '">' . esc_html( $name ) . '</option>';
 294              }
 295              ?>
 296              </select></td>
 297          </tr>
 298          <tr class="form-field">
 299              <td colspan="2"><?php _e( 'Username and password will be mailed to the above email address.' ) ?></td>
 300          </tr>
 301      </table>
 302      <?php wp_nonce_field( 'add-user', '_wpnonce_add-new-user' ) ?>
 303      <?php submit_button( __('Add New User'), 'primary', 'add-user', false, array( 'id' => 'submit-add-user' ) ); ?>
 304  </form>
 305  <?php endif; ?>
 306  </div>
 307  <?php
 308  require ('../admin-footer.php');


Generated: Wed Jun 1 08:30:02 2011 Cross-referenced by PHPXref 0.7
Provided by Yoast and awesome WordPress Hosting