[ Index ]

PHP Cross Reference of WordPress

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 with the role of %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'), home_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 sprintf( __( '[%s] Your site invite' ), get_bloginfo( 'name' ) );
  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 = $user_details->user_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              /* translators: 1: Site name, 2: site URL, 3: role, 4: activation URL */
  76              $message = __( 'Hi,
  77  
  78  You\'ve been invited to join \'%1$s\' at
  79  %2$s with the role of %3$s.
  80  
  81  Please click the following link to confirm the invite:
  82  %4$s' );
  83              wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), get_option( 'blogname' ) ), sprintf($message, get_option('blogname'), home_url(), $_REQUEST[ 'role' ], home_url("/newbloguser/$newuser_key/")));
  84              $redirect = add_query_arg( array('update' => 'add'), 'user-new.php' );
  85          }
  86      }
  87      wp_redirect( $redirect );
  88      die();
  89  } elseif ( isset($_REQUEST['action']) && 'createuser' == $_REQUEST['action'] ) {
  90      check_admin_referer( 'create-user', '_wpnonce_create-user' );
  91  
  92      if ( ! current_user_can('create_users') )
  93          wp_die(__('Cheatin&#8217; uh?'));
  94  
  95      if ( ! is_multisite() ) {
  96          $user_id = edit_user();
  97  
  98          if ( is_wp_error( $user_id ) ) {
  99              $add_user_errors = $user_id;
 100          } else {
 101              if ( current_user_can( 'list_users' ) )
 102                  $redirect = 'users.php?update=add&id=' . $user_id;
 103              else
 104                  $redirect = add_query_arg( 'update', 'add', 'user-new.php' );
 105              wp_redirect( $redirect );
 106              die();
 107          }
 108      } else {
 109          // Adding a new user to this blog
 110          $user_details = wpmu_validate_user_signup( $_REQUEST[ 'user_login' ], $_REQUEST[ 'email' ] );
 111          unset( $user_details[ 'errors' ]->errors[ 'user_email_used' ] );
 112          if ( is_wp_error( $user_details[ 'errors' ] ) && !empty( $user_details[ 'errors' ]->errors ) ) {
 113              $add_user_errors = $user_details[ 'errors' ];
 114          } else {
 115              $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true));
 116              if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
 117                  add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email
 118              }
 119              wpmu_signup_user( $new_user_login, $_REQUEST[ 'email' ], array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST[ 'role' ] ) );
 120              if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
 121                  $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' ] ) );
 122                  wpmu_activate_signup( $key );
 123                  $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' );
 124              } else {
 125                  $redirect = add_query_arg( array('update' => 'newuserconfimation'), 'user-new.php' );
 126              }
 127              wp_redirect( $redirect );
 128              die();
 129          }
 130      }
 131  }
 132  
 133  $title = __('Add New User');
 134  $parent_file = 'users.php';
 135  
 136  $do_both = false;
 137  if ( is_multisite() && current_user_can('promote_users') && current_user_can('create_users') )
 138      $do_both = true;
 139  
 140  $help = '<p>' . __('To add a new user to your site, fill in the form on this screen and click the Add New User button at the bottom.') . '</p>';
 141  
 142  if ( is_multisite() ) {
 143      $help .= '<p>' . __('Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user&#8217;s name to Edit the user profile under Network Admin > All Users.') . '</p>' .
 144      '<p>' . __('New users will receive an email letting them know they&#8217;ve been added as a user for your site. This email will also contain their password. Check the box if you don&#8217;t want the user to receive a welcome email.') . '</p>';
 145  } else {
 146      $help .= '<p>' . __('You must assign a password to the new user, which they can change after logging in. The username, however, cannot be changed.') . '</p>' .
 147      '<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>';
 148  }
 149  
 150  $help .= '<p>' . __('Remember to click the Add New User button at the bottom of this screen when you are finished.') . '</p>';
 151  
 152  get_current_screen()->add_help_tab( array(
 153      'id'      => 'overview',
 154      'title'   => __('Overview'),
 155      'content' => $help,
 156  ) );
 157  
 158  get_current_screen()->add_help_tab( array(
 159  'id'      => 'user-roles',
 160  'title'   => __('User Roles'),
 161  'content' => '<p>' . __('Here is a basic overview of the different user roles and the permissions associated with each one:') . '</p>' .
 162                  '<ul>' .
 163                  '<li>' . __('Administrators have access to all the administration features.') . '</li>' .
 164                  '<li>' . __('Editors can publish posts, manage posts as well as manage other people&#8217;s posts, etc.') . '</li>' .
 165                  '<li>' . __('Authors can publish and manage their own posts, and are able to upload files.') . '</li>' .
 166                  '<li>' . __('Contributors can write and manage their posts but not publish posts or upload media files.') . '</li>' .
 167                  '<li>' . __('Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content.') . '</li>' .
 168                  '</ul>'
 169  ) );
 170  
 171  get_current_screen()->set_help_sidebar(
 172      '<p><strong>' . __('For more information:') . '</strong></p>' .
 173      '<p>' . __('<a href="http://codex.wordpress.org/Users_Add_New_Screen" target="_blank">Documentation on Adding New Users</a>') . '</p>' .
 174      '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 175  );
 176  
 177  wp_enqueue_script('wp-ajax-response');
 178  wp_enqueue_script('user-profile');
 179  
 180  if ( is_multisite() && current_user_can( 'promote_users' ) && ! wp_is_large_network( 'users' )
 181      && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) )
 182  ) {
 183      wp_enqueue_script( 'user-search' );
 184  }
 185  
 186  require_once ( 'admin-header.php' );
 187  
 188  if ( isset($_GET['update']) ) {
 189      $messages = array();
 190      if ( is_multisite() ) {
 191          switch ( $_GET['update'] ) {
 192              case "newuserconfimation":
 193                  $messages[] = __('Invitation email sent to new user. A confirmation link must be clicked before their account is created.');
 194                  break;
 195              case "add":
 196                  $messages[] = __('Invitation email sent to user. A confirmation link must be clicked for them to be added to your site.');
 197                  break;
 198              case "addnoconfirmation":
 199                  $messages[] = __('User has been added to your site.');
 200                  break;
 201              case "addexisting":
 202                  $messages[] = __('That user is already a member of this site.');
 203                  break;
 204              case "does_not_exist":
 205                  $messages[] = __('The requested user does not exist.');
 206                  break;
 207              case "does_not_exist":
 208                  $messages[] = __('Please enter a valid email address.');
 209                  break;
 210          }
 211      } else {
 212          if ( 'add' == $_GET['update'] )
 213              $messages[] = __('User added.');
 214      }
 215  }
 216  ?>
 217  <div class="wrap">
 218  <?php screen_icon(); ?>
 219  <h2 id="add-new-user"> <?php
 220  if ( current_user_can( 'create_users' ) ) {
 221      echo _x( 'Add New User', 'user' );
 222  } elseif ( current_user_can( 'promote_users' ) ) {
 223      echo _x( 'Add Existing User', 'user' );
 224  } ?>
 225  </h2>
 226  
 227  <?php if ( isset($errors) && is_wp_error( $errors ) ) : ?>
 228      <div class="error">
 229          <ul>
 230          <?php
 231              foreach ( $errors->get_error_messages() as $err )
 232                  echo "<li>$err</li>\n";
 233          ?>
 234          </ul>
 235      </div>
 236  <?php endif;
 237  
 238  if ( ! empty( $messages ) ) {
 239      foreach ( $messages as $msg )
 240          echo '<div id="message" class="updated"><p>' . $msg . '</p></div>';
 241  } ?>
 242  
 243  <?php if ( isset($add_user_errors) && is_wp_error( $add_user_errors ) ) : ?>
 244      <div class="error">
 245          <?php
 246              foreach ( $add_user_errors->get_error_messages() as $message )
 247                  echo "<p>$message</p>";
 248          ?>
 249      </div>
 250  <?php endif; ?>
 251  <div id="ajax-response"></div>
 252  
 253  <?php
 254  if ( is_multisite() ) {
 255      if ( $do_both )
 256          echo '<h3 id="add-existing-user">' . __('Add Existing User') . '</h3>';
 257      if ( !is_super_admin() ) {
 258          _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.' );
 259          $label = __('E-mail');
 260      } else {
 261          _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.' );
 262          $label = __('E-mail or Username');
 263      }
 264  ?>
 265  <form action="" method="post" name="adduser" id="adduser" class="add:users: validate"<?php do_action('user_new_form_tag');?>>
 266  <input name="action" type="hidden" value="adduser" />
 267  <?php wp_nonce_field( 'add-user', '_wpnonce_add-user' ) ?>
 268  
 269  <table class="form-table">
 270      <tr class="form-field form-required">
 271          <th scope="row"><label for="adduser-email"><?php echo $label; ?></label></th>
 272          <td><input name="email" type="text" id="adduser-email" value="" /></td>
 273      </tr>
 274      <tr class="form-field">
 275          <th scope="row"><label for="adduser-role"><?php _e('Role'); ?></label></th>
 276          <td><select name="role" id="adduser-role">
 277              <?php wp_dropdown_roles( get_option('default_role') ); ?>
 278              </select>
 279          </td>
 280      </tr>
 281  <?php if ( is_super_admin() ) { ?>
 282      <tr>
 283          <th scope="row"><label for="adduser-noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
 284          <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>
 285      </tr>
 286  <?php } ?>
 287  </table>
 288  <?php submit_button( __( 'Add Existing User '), 'primary', 'adduser', true, array( 'id' => 'addusersub' ) ); ?>
 289  </form>
 290  <?php
 291  } // is_multisite()
 292  
 293  if ( current_user_can( 'create_users') ) {
 294      if ( $do_both )
 295          echo '<h3 id="create-new-user">' . __( 'Add New User' ) . '</h3>';
 296  ?>
 297  <p><?php _e('Create a brand new user and add it to this site.'); ?></p>
 298  <form action="" method="post" name="createuser" id="createuser" class="add:users: validate"<?php do_action('user_new_form_tag');?>>
 299  <input name="action" type="hidden" value="createuser" />
 300  <?php wp_nonce_field( 'create-user', '_wpnonce_create-user' ) ?>
 301  <?php
 302  // Load up the passed data, else set to a default.
 303  foreach ( array( 'user_login' => 'login', 'first_name' => 'firstname', 'last_name' => 'lastname',
 304                  'email' => 'email', 'url' => 'uri', 'role' => 'role', 'send_password' => 'send_password', 'noconfirmation' => 'ignore_pass' ) as $post_field => $var ) {
 305      $var = "new_user_$var";
 306      if( isset( $_POST['createuser'] ) ) {
 307          if ( ! isset($$var) )
 308              $$var = isset( $_POST[$post_field] ) ? stripslashes( $_POST[$post_field] ) : '';
 309      } else {
 310          $$var = false;
 311      }
 312  }
 313  
 314  ?>
 315  <table class="form-table">
 316      <tr class="form-field form-required">
 317          <th scope="row"><label for="user_login"><?php _e('Username'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
 318          <td><input name="user_login" type="text" id="user_login" value="<?php echo esc_attr($new_user_login); ?>" aria-required="true" /></td>
 319      </tr>
 320      <tr class="form-field form-required">
 321          <th scope="row"><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
 322          <td><input name="email" type="text" id="email" value="<?php echo esc_attr($new_user_email); ?>" /></td>
 323      </tr>
 324  <?php if ( !is_multisite() ) { ?>
 325      <tr class="form-field">
 326          <th scope="row"><label for="first_name"><?php _e('First Name') ?> </label></th>
 327          <td><input name="first_name" type="text" id="first_name" value="<?php echo esc_attr($new_user_firstname); ?>" /></td>
 328      </tr>
 329      <tr class="form-field">
 330          <th scope="row"><label for="last_name"><?php _e('Last Name') ?> </label></th>
 331          <td><input name="last_name" type="text" id="last_name" value="<?php echo esc_attr($new_user_lastname); ?>" /></td>
 332      </tr>
 333      <tr class="form-field">
 334          <th scope="row"><label for="url"><?php _e('Website') ?></label></th>
 335          <td><input name="url" type="text" id="url" class="code" value="<?php echo esc_attr($new_user_uri); ?>" /></td>
 336      </tr>
 337  <?php if ( apply_filters('show_password_fields', true) ) : ?>
 338      <tr class="form-field form-required">
 339          <th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php /* translators: password input field */_e('(twice, required)'); ?></span></label></th>
 340          <td><input name="pass1" type="password" id="pass1" autocomplete="off" />
 341          <br />
 342          <input name="pass2" type="password" id="pass2" autocomplete="off" />
 343          <br />
 344          <div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
 345          <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>
 346          </td>
 347      </tr>
 348      <tr>
 349          <th scope="row"><label for="send_password"><?php _e('Send Password?') ?></label></th>
 350          <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>
 351      </tr>
 352  <?php endif; ?>
 353  <?php } // !is_multisite ?>
 354      <tr class="form-field">
 355          <th scope="row"><label for="role"><?php _e('Role'); ?></label></th>
 356          <td><select name="role" id="role">
 357              <?php
 358              if ( !$new_user_role )
 359                  $new_user_role = !empty($current_role) ? $current_role : get_option('default_role');
 360              wp_dropdown_roles($new_user_role);
 361              ?>
 362              </select>
 363          </td>
 364      </tr>
 365      <?php if ( is_multisite() && is_super_admin() ) { ?>
 366      <tr>
 367          <th scope="row"><label for="noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
 368          <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>
 369      </tr>
 370      <?php } ?>
 371  </table>
 372  
 373  <?php submit_button( __( 'Add New User '), 'primary', 'createuser', true, array( 'id' => 'createusersub' ) ); ?>
 374  
 375  </form>
 376  <?php } // current_user_can('create_users') ?>
 377  </div>
 378  <?php
 379  include ('./admin-footer.php');


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