Add email and login dupe checking down into wp_insert_user(). Tidy up user-new.php. see #11644

git-svn-id: http://svn.automattic.com/wordpress/trunk@12778 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2010-01-20 21:58:13 +00:00
parent 0d6a380bd2
commit c679e65c9c
5 changed files with 27 additions and 33 deletions

View File

@ -130,10 +130,7 @@ else
if ( current_user_can('edit_users') ) { if ( current_user_can('edit_users') ) {
$_wp_real_parent_file['profile.php'] = 'users.php'; // Back-compat for plugins adding submenus to profile.php. $_wp_real_parent_file['profile.php'] = 'users.php'; // Back-compat for plugins adding submenus to profile.php.
$submenu['users.php'][5] = array(__('Authors & Users'), 'edit_users', 'users.php'); $submenu['users.php'][5] = array(__('Authors & Users'), 'edit_users', 'users.php');
if ( !is_multisite() )
$submenu['users.php'][10] = array(_x('Add New', 'user'), 'create_users', 'user-new.php'); $submenu['users.php'][10] = array(_x('Add New', 'user'), 'create_users', 'user-new.php');
elseif ( is_super_admin() || get_site_option( 'add_new_users' ) )
$submenu['users.php'][10] = array(__('Add New') . ' <strong>*</strong>', 'create_users', 'ms-options.php#addnewusers');
$submenu['users.php'][15] = array(__('Your Profile'), 'read', 'profile.php'); $submenu['users.php'][15] = array(__('Your Profile'), 'read', 'profile.php');
} else { } else {

View File

@ -62,10 +62,10 @@ if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) {
$redirect = 'user-new.php'; $redirect = 'user-new.php';
$username = $user_details->user_login; $username = $user_details->user_login;
$user_id = $user_details->ID; $user_id = $user_details->ID;
if ( ($username != null && is_site_admin( $username ) == false ) && ( array_key_exists($blog_id, get_blogs_of_user($user_id)) ) ) { if ( ( $username != null && !is_super_admin( $user_id ) ) && ( array_key_exists($blog_id, get_blogs_of_user($user_id)) ) ) {
$redirect = add_query_arg( array('update' => 'addexisting'), 'user-new.php' ); $redirect = add_query_arg( array('update' => 'addexisting'), 'user-new.php' );
} else { } else {
if ( isset( $_POST[ 'noconfirmation' ] ) && is_site_admin() ) { if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $_REQUEST[ 'role' ] ) ); add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $_REQUEST[ 'role' ] ) );
$redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' ); $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' );
} else { } else {
@ -184,12 +184,16 @@ foreach ( array('user_login' => 'login', 'first_name' => 'firstname', 'last_name
$new_user_send_password = !$_POST || isset($_POST['send_password']); $new_user_send_password = !$_POST || isset($_POST['send_password']);
?> ?>
<table class="form-table"> <table class="form-table">
<?php if ( !is_multisite() ) { ?>
<tr class="form-field form-required"> <tr class="form-field form-required">
<th scope="row"><label for="user_login"><?php _e('Username'); ?> <span class="description"><?php _e('(required)'); ?></span></label> <th scope="row"><label for="user_login"><?php _e('Username'); ?> <span class="description"><?php _e('(required)'); ?></span></label>
<input name="action" type="hidden" id="action" value="adduser" /></th> <input name="action" type="hidden" id="action" value="adduser" /></th>
<td><input name="user_login" type="text" id="user_login" value="<?php echo esc_attr($new_user_login); ?>" aria-required="true" /></td> <td><input name="user_login" type="text" id="user_login" value="<?php echo esc_attr($new_user_login); ?>" aria-required="true" /></td>
</tr> </tr>
<tr class="form-field form-required">
<th scope="row"><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
<td><input name="email" type="text" id="email" value="<?php echo esc_attr($new_user_email); ?>" /></td>
</tr>
<?php if ( !is_multisite() ) { ?>
<tr class="form-field"> <tr class="form-field">
<th scope="row"><label for="first_name"><?php _e('First Name') ?> </label></th> <th scope="row"><label for="first_name"><?php _e('First Name') ?> </label></th>
<td><input name="first_name" type="text" id="first_name" value="<?php echo esc_attr($new_user_firstname); ?>" /></td> <td><input name="first_name" type="text" id="first_name" value="<?php echo esc_attr($new_user_firstname); ?>" /></td>
@ -198,15 +202,10 @@ $new_user_send_password = !$_POST || isset($_POST['send_password']);
<th scope="row"><label for="last_name"><?php _e('Last Name') ?> </label></th> <th scope="row"><label for="last_name"><?php _e('Last Name') ?> </label></th>
<td><input name="last_name" type="text" id="last_name" value="<?php echo esc_attr($new_user_lastname); ?>" /></td> <td><input name="last_name" type="text" id="last_name" value="<?php echo esc_attr($new_user_lastname); ?>" /></td>
</tr> </tr>
<tr class="form-field form-required">
<th scope="row"><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
<td><input name="email" type="text" id="email" value="<?php echo esc_attr($new_user_email); ?>" /></td>
</tr>
<tr class="form-field"> <tr class="form-field">
<th scope="row"><label for="url"><?php _e('Website') ?></label></th> <th scope="row"><label for="url"><?php _e('Website') ?></label></th>
<td><input name="url" type="text" id="url" class="code" value="<?php echo esc_attr($new_user_uri); ?>" /></td> <td><input name="url" type="text" id="url" class="code" value="<?php echo esc_attr($new_user_uri); ?>" /></td>
</tr> </tr>
<?php if ( apply_filters('show_password_fields', true) ) : ?> <?php if ( apply_filters('show_password_fields', true) ) : ?>
<tr class="form-field form-required"> <tr class="form-field form-required">
<th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php _e('(twice, required)'); ?></span></label></th> <th scope="row"><label for="pass1"><?php _e('Password'); ?> <span class="description"><?php _e('(twice, required)'); ?></span></label></th>
@ -223,16 +222,7 @@ $new_user_send_password = !$_POST || isset($_POST['send_password']);
<td><label for="send_password"><input type="checkbox" name="send_password" id="send_password" <?php checked($new_user_send_password, true); ?> /> <?php _e('Send this password to the new user by email.'); ?></label></td> <td><label for="send_password"><input type="checkbox" name="send_password" id="send_password" <?php checked($new_user_send_password, true); ?> /> <?php _e('Send this password to the new user by email.'); ?></label></td>
</tr> </tr>
<?php endif; ?> <?php endif; ?>
<?php } else { // multisite ?> <?php } // !is_multisite ?>
<tr class="form-field form-required">
<th scope="row"><label for="user_login"><?php _e('Username (required)') ?></label><input name="action" type="hidden" id="action" value="adduser" /></th>
<td ><input name="user_login" type="text" id="user_login" value="<?php echo $new_user_login; ?>" aria-required="true" /></td>
</tr>
<tr class="form-field form-required">
<th scope="row"><label for="email"><?php _e('E-mail (required)') ?></label></th>
<td><input name="email" type="text" id="email" value="<?php echo $new_user_email; ?>" /></td>
</tr>
<?php } ?>
<tr class="form-field"> <tr class="form-field">
<th scope="row"><label for="role"><?php _e('Role'); ?></label></th> <th scope="row"><label for="role"><?php _e('Role'); ?></label></th>
<td><select name="role" id="role"> <td><select name="role" id="role">
@ -244,11 +234,10 @@ $new_user_send_password = !$_POST || isset($_POST['send_password']);
</select> </select>
</td> </td>
</tr> </tr>
<?php if ( is_multisite() && is_super_admin() ) { ?> <?php if ( is_multisite() && is_super_admin() ) { ?>
<tr class="form-field"> <tr>
<th scope="row"><label for="noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th> <th scope="row"><label for="noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
<td><input name="noconfirmation" type="checkbox" id="noconfirmation" value="1" /> <label for="noconfirmation"><?php _e( 'Site administrators can add a user without sending the confirmation email.' ); ?></label></td> <td><label for="noconfirmation"><input type="checkbox" name="noconfirmation" id="noconfirmation" value="1" /> <?php _e( 'Site administrators can add a user without sending the confirmation email.' ); ?></label></td>
</tr> </tr>
<?php } ?> <?php } ?>
</table> </table>

View File

@ -980,6 +980,12 @@ function map_meta_cap( $cap, $user_id ) {
else else
$caps[] = $cap; $caps[] = $cap;
break; break;
case 'create_users':
if ( is_multisite() && !get_site_option( 'add_new_users' ) )
$caps[] = 'do_not_allow';
else
$caps[] = $cap;
break;
default: default:
// If no meta caps match, return the original cap. // If no meta caps match, return the original cap.
$caps[] = $cap; $caps[] = $cap;

View File

@ -1222,14 +1222,11 @@ function wpmu_activate_signup($key) {
function wpmu_create_user( $user_name, $password, $email) { function wpmu_create_user( $user_name, $password, $email) {
$user_name = preg_replace( "/\s+/", '', sanitize_user( $user_name, true ) ); $user_name = preg_replace( "/\s+/", '', sanitize_user( $user_name, true ) );
if ( username_exists($user_name) )
return false;
// Check if the email address has been used already.
if ( email_exists($email) )
return false;
$user_id = wp_create_user( $user_name, $password, $email ); $user_id = wp_create_user( $user_name, $password, $email );
if ( is_wp_error($user_id) )
return false;
$user = new WP_User($user_id); $user = new WP_User($user_id);
// Newly created users have no roles or caps until they are added to a blog. // Newly created users have no roles or caps until they are added to a blog.

View File

@ -122,9 +122,11 @@ function wp_insert_user($userdata) {
//Remove any non-printable chars from the login string to see if we have ended up with an empty username //Remove any non-printable chars from the login string to see if we have ended up with an empty username
$user_login = trim($user_login); $user_login = trim($user_login);
if ( empty($user_login) ) { if ( empty($user_login) )
return new WP_Error('empty_user_login', __('Cannot create a user with an empty login name.') ); return new WP_Error('empty_user_login', __('Cannot create a user with an empty login name.') );
}
if ( !$update && username_exists( $user_login ) )
return new WP_Error('existing_user_login', __('This username is already registered.') );
if ( empty($user_nicename) ) if ( empty($user_nicename) )
$user_nicename = sanitize_title( $user_login ); $user_nicename = sanitize_title( $user_login );
@ -138,6 +140,9 @@ function wp_insert_user($userdata) {
$user_email = ''; $user_email = '';
$user_email = apply_filters('pre_user_email', $user_email); $user_email = apply_filters('pre_user_email', $user_email);
if ( !$update && email_exists($user_email) )
return new WP_Error('existing_user_email', __('This email address is already registered.') );
if ( empty($display_name) ) if ( empty($display_name) )
$display_name = $user_login; $display_name = $user_login;
$display_name = apply_filters('pre_user_display_name', $display_name); $display_name = apply_filters('pre_user_display_name', $display_name);