[ XREF Home ] [ Index ]

PHP Cross Reference of WordPress Trunk

Provided by Yoast

title

Body

[close]

/wp-admin/ -> user-new.php (source)

   1  <?php
   2  /**
   3   * New User Administration Screen.
   4   *
   5   * @package WordPress
   6   * @subpackage Administration
   7   */
   8  
   9  /** WordPress Administration Bootstrap */
  10  require_once ('./admin.php');
  11  
  12  if ( is_multisite() ) {
  13      if ( ! current_user_can( 'create_users' ) && ! current_user_can( 'promote_users' ) )
  14          wp_die( __( 'Cheatin&#8217; uh?' ) );
  15  } elseif ( ! current_user_can( 'create_users' ) ) {
  16      wp_die( __( 'Cheatin&#8217; uh?' ) );
  17  }
  18  
  19  if ( is_multisite() ) {
  20  	function admin_created_user_email( $text ) {
  21          /* translators: 1: Site name, 2: site URL, 3: role */
  22          return sprintf( __( 'Hi,
  23  You\'ve been invited to join \'%1$s\' at
  24  %2$s as a %3$s.
  25  If you do not want to join this site please ignore
  26  this email. This invitation will expire in a few days.
  27  
  28  Please click the following link to activate your user account:
  29  %%s' ), get_bloginfo('name'), site_url(), esc_html( $_REQUEST[ 'role' ] ) );
  30      }
  31      add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );
  32  
  33  	function admin_created_user_subject( $text ) {
  34          return "[" . get_bloginfo('name') . "] Your site invite";
  35      }
  36  }
  37  
  38  if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) {
  39      check_admin_referer( 'add-user', '_wpnonce_add-user' );
  40  
  41      $user_details = null;
  42      if ( false !== strpos($_REQUEST[ 'email' ], '@') ) {
  43          $user_details = get_user_by('email', $_REQUEST[ 'email' ]);
  44      } else {
  45          if ( is_super_admin() ) {
  46              $user_details = get_user_by('login', $_REQUEST[ 'email' ]);
  47          } else {
  48              wp_redirect( add_query_arg( array('update' => 'enter_email'), 'user-new.php' ) );
  49              die();
  50          }
  51      }
  52  
  53      if ( !$user_details ) {
  54          wp_redirect( add_query_arg( array('update' => 'does_not_exist'), 'user-new.php' ) );
  55          die();
  56      }
  57  
  58      if ( ! current_user_can('promote_user', $user_details->ID) )
  59          wp_die(__('Cheatin&#8217; uh?'));
  60  
  61      // Adding an existing user to this blog
  62      $new_user_email = esc_html(trim($_REQUEST['email']));
  63      $redirect = 'user-new.php';
  64      $username = $user_details->user_login;
  65      $user_id = $user_details->ID;
  66      if ( ( $username != null && !is_super_admin( $user_id ) ) && ( array_key_exists($blog_id, get_blogs_of_user($user_id)) ) ) {
  67          $redirect = add_query_arg( array('update' => 'addexisting'), 'user-new.php' );
  68      } else {
  69          if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
  70              add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $_REQUEST[ 'role' ] ) );
  71              $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' );
  72          } else {
  73              $newuser_key = substr( md5( $user_id ), 0, 5 );
  74              add_option( 'new_user_' . $newuser_key, array( 'user_id' => $user_id, 'email' => $user_details->user_email, 'role' => $_REQUEST[ 'role' ] ) );
  75              $message = __("Hi,\n\nYou have been invited to join '%s' at\n%s as a %s.\nPlease click the following link to confirm the invite:\n%s\n");
  76              wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), get_option( 'blogname' ) ),  sprintf($message, get_option('blogname'), site_url(), $_REQUEST[ 'role' ], site_url("/newbloguser/$newuser_key/")));
  77              $redirect = add_query_arg( array('update' => 'add'), 'user-new.php' );
  78          }
  79      }
  80      wp_redirect( $redirect );
  81      die();
  82  } elseif ( isset($_REQUEST['action']) && 'createuser' == $_REQUEST['action'] ) {
  83      check_admin_referer( 'create-user', '_wpnonce_create-user' );
  84  
  85      if ( ! current_user_can('create_users') )
  86          wp_die(__('Cheatin&#8217; uh?'));
  87  
  88      if ( !is_multisite() ) {
  89          $user_id = add_user();
  90  
  91          if ( is_wp_error( $user_id ) ) {
  92              $add_user_errors = $user_id;
  93          } else {
  94              if ( current_user_can('edit_users') ) {
  95                  $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true));
  96                  $redirect = 'users.php?usersearch='. urlencode($new_user_login) . '&update=add' . '#user-' . $user_id;
  97              } else {
  98                  $redirect = add_query_arg( 'update', 'add', 'user-new.php' );
  99              }
 100              wp_redirect( $redirect );
 101              die();
 102          }
 103      } else {
 104          // Adding a new user to this blog
 105          $user_details = wpmu_validate_user_signup( $_REQUEST[ 'user_login' ], $_REQUEST[ 'email' ] );
 106          unset( $user_details[ 'errors' ]->errors[ 'user_email_used' ] );
 107          if ( is_wp_error( $user_details[ 'errors' ] ) && !empty( $user_details[ 'errors' ]->errors ) ) {
 108              $add_user_errors = $user_details[ 'errors' ];
 109          } else {
 110              $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true));
 111              if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
 112                  add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email
 113              }
 114              wpmu_signup_user( $new_user_login, $_REQUEST[ 'email' ], array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST[ 'role' ] ) );
 115              if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
 116                  $key = $wpdb->get_var( $wpdb->prepare( "SELECT activation_key FROM {$wpdb->signups} WHERE user_login = %s AND user_email = %s", $new_user_login, $_REQUEST[ 'email' ] ) );
 117                  wpmu_activate_signup( $key );
 118                  $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' );
 119              } else {
 120                  $redirect = add_query_arg( array('update' => 'newuserconfimation'), 'user-new.php' );
 121              }
 122              wp_redirect( $redirect );
 123              die();
 124          }
 125      }
 126  }
 127  
 128  
 129  $title = __('Add New User');
 130  $parent_file = 'users.php';
 131  
 132  $do_both = false;
 133  if ( is_multisite() && current_user_can('promote_users') && current_user_can('create_users') )
 134      $do_both = true;
 135  
 136  add_contextual_help($current_screen,
 137      '<p>' . __('To add a new user to your site, fill in the form on this screen. If you&#8217;re not sure which role to assign, you can use the link below to review the different roles and their capabilities. Here is a basic overview of roles:') . '</p>' .
 138      '<ul>' .
 139          '<li>' . __('Administrators have access to all the administration features.') . '</li>' .
 140          '<li>' . __('Editors can publish posts, manage posts as well as manage other people&#8217;s posts, etc.')  . '</li>' .
 141          '<li>' . __('Authors can publish and manage their own posts.') . '</li>' .
 142          '<li>' . __('Contributors can write and manage their posts but not publish posts or upload media files.') . '</li>' .
 143          '<li>' . __('Subscribers can read comments/comment/receive newsletters, etc.') . '</li>' .
 144      '</ul>' .
 145      '<p>' . __('You must assign a password to the new user, but don&#8217;t worry; when they log in for the first time they will be prompted to change it. The username, however, cannot be changed.') . '</p>' .
 146      '<p>' . __('New users will receive an email letting them know they&#8217;ve been added as a user for your site. By default, this email will also contain their password. Uncheck the box if you don&#8217;t want the password to be included in the welcome email.') . '</p>' .
 147      '<p>' . __('Remember to click the Add User button at the bottom of this screen when you are finished.') . '</p>' .
 148      '<p><strong>' . __('For more information:') . '</strong></p>' .
 149      '<p>' . __('<a href="http://codex.wordpress.org/Users_Add_New_Screen" target="_blank">Documentation on Adding New Users</a>') . '</p>' .
 150      '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 151  );
 152  
 153  wp_enqueue_script('wp-ajax-response');
 154  wp_enqueue_script('user-profile');
 155  
 156  require_once  ('admin-header.php');
 157  
 158  if ( isset($_GET['update']) ) {
 159      $messages = array();
 160      if ( is_multisite() ) {
 161          switch ( $_GET['update'] ) {
 162              case "newuserconfimation":
 163                  $messages[] = __('Invitation email sent to new user. A confirmation link must be clicked before their account is created.');
 164                  break;
 165              case "add":
 166                  $messages[] = __('Invitation email sent to user. A confirmation link must be clicked for them to be added to your site.');
 167                  break;
 168              case "addnoconfirmation":
 169                  $messages[] = __('User has been added to your site.');
 170                  break;
 171              case "addexisting":
 172                  $messages[] = __('That user is already a member of this site.');
 173                  break;
 174              case "does_not_exist":
 175                  $messages[] = __('The requested user does not exist.');
 176                  break;
 177              case "does_not_exist":
 178                  $messages[] = __('Please enter a valid email address.');
 179                  break;
 180          }
 181      } else {
 182          if ( 'add' == $_GET['update'] )
 183              $messages[] = __('User added.');
 184      }
 185  }
 186  ?>
 187  <div class="wrap">
 188  <?php screen_icon(); ?>
 189  <h2 id="add-new-user"> <?php
 190  if ( current_user_can( 'create_users' ) ) {
 191      echo _x( 'Add New User', 'user' );
 192  } elseif ( current_user_can( 'promote_users' ) ) {
 193      echo _x( 'Add Existing User', 'user' );
 194  } ?>
 195  </h2>
 196  
 197  <?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
 198      <div class="error">
 199          <ul>
 200          <?php
 201              foreach ( $errors->get_error_messages() as $err )
 202                  echo "<li>$err</li>\n";
 203          ?>
 204          </ul>
 205      </div>
 206  <?php endif;
 207  
 208  if ( ! empty( $messages ) ) {
 209      foreach ( $messages as $msg )
 210          echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
 211  } ?>
 212  
 213  <?php if ( isset($add_user_errors) && is_wp_error( $add_user_errors ) ) : ?>
 214      <div class="error">
 215          <?php
 216              foreach ( $add_user_errors->get_error_messages() as $message )
 217                  echo "<p>$message</p>";
 218          ?>
 219      </div>
 220  <?php endif; ?>
 221  <div id="ajax-response"></div>
 222  
 223  <?php
 224  if ( is_multisite() ) {
 225      if ( $do_both )
 226          echo '<h3 id="add-existing-user">' . __('Add Existing User') . '</h3>';
 227      if ( !is_super_admin() ) {
 228          _e( 'Enter the email address of an existing user on this network to invite them to this site.  That person will be sent an email asking them to confirm the invite.' );
 229          $label = __('E-mail');
 230      } else {
 231          _e( 'Enter the email address or username of an existing user on this network to invite them to this site.  That person will be sent an email asking them to confirm the invite.' );
 232          $label = __('E-mail or Username');
 233      }
 234  ?>
 235  <form action="" method="post" name="adduser" id="adduser" class="add:users: validate"<?php do_action('user_new_form_tag');?>>
 236  <input name="action" type="hidden" value="adduser" />
 237  <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
 238  
 239  <table class="form-table">
 240      <tr class="form-field form-required">
 241          <th scope="row"><label for="adduser-email"><?php echo $label; ?></label></th>
 242          <td><input name="email" type="text" id="adduser-email" value="" /></td>
 243      </tr>
 244      <tr class="form-field">
 245          <th scope="row"><label for="adduser-role"><?php _e('Role'); ?></label></th>
 246          <td><select name="role" id="adduser-role">
 247              <?php wp_dropdown_roles( get_option('default_role') ); ?>
 248              </select>
 249          </td>
 250      </tr>
 251  <?php if ( is_super_admin() ) { ?>
 252      <tr>
 253          <th scope="row"><label for="adduser-noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
 254          <td><label for="adduser-noconfirmation"><input type="checkbox" name="noconfirmation" id="adduser-noconfirmation" value="1" /> <?php _e( 'Add the user without sending them a confirmation email.' ); ?></label></td>
 255      </tr>
 256  <?php } ?>
 257  </table>
 258  <?php submit_button( __( 'Add Existing User '), 'primary', 'adduser', true, array( 'id' => 'addusersub' ) ); ?>
 259  </form>
 260  <?php
 261  } // is_multisite()
 262  
 263  if ( current_user_can( 'create_users') ) {
 264      if ( $do_both )
 265          echo '<h3 id="create-new-user">' . __( 'Add New User' ) . '</h3>';
 266  ?>
 267  <p><?php _e('Create a brand new user and add it to this site.'); ?></p>
 268  <form action="" method="post" name="createuser" id="createuser" class="add:users: validate"<?php do_action('user_new_form_tag');?>>
 269  <input name="action" type="hidden" value="createuser" />
 270  <?php wp_nonce_field( 'create-user', '_wpnonce_create-user' ) ?>
 271  <?php
 272  // Load up the passed data, else set to a default.
 273  foreach ( array( 'user_login' => 'login', 'first_name' => 'firstname', 'last_name' => 'lastname',
 274                  'email' => 'email', 'url' => 'uri', 'role' => 'role', 'send_password' => 'send_password', 'noconfirmation' => 'ignore_pass' ) as $post_field => $var ) {
 275      $var = "new_user_$var";
 276      if( isset( $_POST['createuser'] ) ) {
 277          if ( ! isset($$var) )
 278              $$var = isset( $_POST[$post_field] ) ? stripslashes( $_POST[$post_field] ) : '';
 279      } else {
 280          $$var = false;
 281      }
 282  }
 283  
 284  ?>
 285  <table class="form-table">
 286      <tr class="form-field form-required">
 287          <th scope="row"><label for="user_login"><?php _e('Username'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
 288          <td><input name="user_login" type="text" id="user_login" value="<?php echo esc_attr($new_user_login); ?>" aria-required="true" /></td>
 289      </tr>
 290      <tr class="form-field form-required">
 291          <th scope="row"><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
 292          <td><input name="email" type="text" id="email" value="<?php echo esc_attr($new_user_email); ?>" /></td>
 293      </tr>
 294  <?php if ( !is_multisite() ) { ?>
 295      <tr class="form-field">
 296          <th scope="row"><label for="first_name"><?php _e('First Name') ?> </label></th>
 297          <td><input name="first_name" type="text" id="first_name" value="<?php echo esc_attr($new_user_firstname); ?>" /></td>
 298      </tr>
 299      <tr class="form-field">
 300          <th scope="row"><label for="last_name"><?php _e('Last Name') ?> </label></th>
 301          <td><input name="last_name" type="text" id="last_name" value="<?php echo esc_attr($new_user_lastname); ?>" /></td>
 302      </tr>
 303      <tr class="form-field">
 304          <th scope="row"><label for="url"><?php _e('Website') ?></label></th>
 305          <td><input name="url" type="text" id="url" class="code" value="<?php echo esc_attr($new_user_uri); ?>" /></td>
 306      </tr>
 307  <?php if ( apply_filters('show_password_fields', true) ) : ?>
 308      <tr class="form-field form-required">
 309          <th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php /* translators: password input field */_e('(twice, required)'); ?></span></label></th>
 310          <td><input name="pass1" type="password" id="pass1" autocomplete="off" />
 311          <br />
 312          <input name="pass2" type="password" id="pass2" autocomplete="off" />
 313          <br />
 314          <div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
 315          <p class="description indicator-hint"><?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).'); ?></p>
 316          </td>
 317      </tr>
 318      <tr>
 319          <th scope="row"><label for="send_password"><?php _e('Send Password?') ?></label></th>
 320          <td><label for="send_password"><input type="checkbox" name="send_password" id="send_password" <?php checked( $new_user_send_password ); ?> /> <?php _e('Send this password to the new user by email.'); ?></label></td>
 321      </tr>
 322  <?php endif; ?>
 323  <?php } // !is_multisite ?>
 324      <tr class="form-field">
 325          <th scope="row"><label for="role"><?php _e('Role'); ?></label></th>
 326          <td><select name="role" id="role">
 327              <?php
 328              if ( !$new_user_role )
 329                  $new_user_role = !empty($current_role) ? $current_role : get_option('default_role');
 330              wp_dropdown_roles($new_user_role);
 331              ?>
 332              </select>
 333          </td>
 334      </tr>
 335      <?php if ( is_multisite() && is_super_admin() ) { ?>
 336      <tr>
 337          <th scope="row"><label for="noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
 338          <td><label for="noconfirmation"><input type="checkbox" name="noconfirmation" id="noconfirmation" value="1"  <?php checked( $new_user_ignore_pass ); ?> /> <?php _e( 'Add the user without sending them a confirmation email.' ); ?></label></td>
 339      </tr>
 340      <?php } ?>
 341  </table>
 342  
 343  <?php submit_button( __( 'Add New User '), 'primary', 'createuser', true, array( 'id' => 'createusersub' ) ); ?>
 344  
 345  </form>
 346  <?php } // current_user_can('create_users') ?>
 347  </div>
 348  <?php
 349  include ('./admin-footer.php');
 350  ?>


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