X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/5aa86a9053fb0fa15846bb60aac2fb8fdfff524a..refs/tags/wordpress-4.3:/wp-admin/user-new.php diff --git a/wp-admin/user-new.php b/wp-admin/user-new.php index 43c37033..33fd41d6 100644 --- a/wp-admin/user-new.php +++ b/wp-admin/user-new.php @@ -7,17 +7,24 @@ */ /** WordPress Administration Bootstrap */ -require_once('./admin.php'); +require_once( dirname( __FILE__ ) . '/admin.php' ); if ( is_multisite() ) { if ( ! current_user_can( 'create_users' ) && ! current_user_can( 'promote_users' ) ) - wp_die( __( 'Cheatin’ uh?' ) ); + wp_die( __( 'Cheatin’ uh?' ), 403 ); } elseif ( ! current_user_can( 'create_users' ) ) { - wp_die( __( 'Cheatin’ uh?' ) ); + wp_die( __( 'Cheatin’ uh?' ), 403 ); } if ( is_multisite() ) { + /** + * + * @param string $text + * @return string + */ function admin_created_user_email( $text ) { + $roles = get_editable_roles(); + $role = $roles[ $_REQUEST['role'] ]; /* translators: 1: Site name, 2: site URL, 3: role */ return sprintf( __( 'Hi, You\'ve been invited to join \'%1$s\' at @@ -26,24 +33,21 @@ If you do not want to join this site please ignore this email. This invitation will expire in a few days. Please click the following link to activate your user account: -%%s' ), get_bloginfo('name'), site_url(), esc_html( $_REQUEST[ 'role' ] ) ); +%%s' ), get_bloginfo( 'name' ), home_url(), wp_specialchars_decode( translate_user_role( $role['name'] ) ) ); } add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' ); - - function admin_created_user_subject( $text ) { - return sprintf( __( '[%s] Your site invite' ), get_bloginfo( 'name' ) ); - } } if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) { check_admin_referer( 'add-user', '_wpnonce_add-user' ); $user_details = null; - if ( false !== strpos($_REQUEST[ 'email' ], '@') ) { - $user_details = get_user_by('email', $_REQUEST[ 'email' ]); + $user_email = wp_unslash( $_REQUEST['email'] ); + if ( false !== strpos( $user_email, '@' ) ) { + $user_details = get_user_by( 'email', $user_email ); } else { if ( is_super_admin() ) { - $user_details = get_user_by('login', $_REQUEST[ 'email' ]); + $user_details = get_user_by( 'login', $user_email ); } else { wp_redirect( add_query_arg( array('update' => 'enter_email'), 'user-new.php' ) ); die(); @@ -56,7 +60,7 @@ if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) { } if ( ! current_user_can('promote_user', $user_details->ID) ) - wp_die(__('Cheatin’ uh?')); + wp_die( __( 'Cheatin’ uh?' ), 403 ); // Adding an existing user to this blog $new_user_email = $user_details->user_email; @@ -72,6 +76,9 @@ if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) { } else { $newuser_key = substr( md5( $user_id ), 0, 5 ); add_option( 'new_user_' . $newuser_key, array( 'user_id' => $user_id, 'email' => $user_details->user_email, 'role' => $_REQUEST[ 'role' ] ) ); + + $roles = get_editable_roles(); + $role = $roles[ $_REQUEST['role'] ]; /* translators: 1: Site name, 2: site URL, 3: role, 4: activation URL */ $message = __( 'Hi, @@ -80,7 +87,7 @@ You\'ve been invited to join \'%1$s\' at Please click the following link to confirm the invite: %4$s' ); - 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/"))); + wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), wp_specialchars_decode( get_option( 'blogname' ) ) ), sprintf( $message, get_option( 'blogname' ), home_url(), wp_specialchars_decode( translate_user_role( $role['name'] ) ), home_url( "/newbloguser/$newuser_key/" ) ) ); $redirect = add_query_arg( array('update' => 'add'), 'user-new.php' ); } } @@ -90,41 +97,47 @@ Please click the following link to confirm the invite: check_admin_referer( 'create-user', '_wpnonce_create-user' ); if ( ! current_user_can('create_users') ) - wp_die(__('Cheatin’ uh?')); + wp_die( __( 'Cheatin’ uh?' ), 403 ); - if ( !is_multisite() ) { - $user_id = add_user(); + if ( ! is_multisite() ) { + $user_id = edit_user(); if ( is_wp_error( $user_id ) ) { $add_user_errors = $user_id; } else { - if ( current_user_can('edit_users') ) { - $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true)); - $redirect = 'users.php?usersearch='. urlencode($new_user_login) . '&update=add' . '#user-' . $user_id; - } else { + if ( current_user_can( 'list_users' ) ) + $redirect = 'users.php?update=add&id=' . $user_id; + else $redirect = add_query_arg( 'update', 'add', 'user-new.php' ); - } wp_redirect( $redirect ); die(); } } else { - // Adding a new user to this blog - $user_details = wpmu_validate_user_signup( $_REQUEST[ 'user_login' ], $_REQUEST[ 'email' ] ); - unset( $user_details[ 'errors' ]->errors[ 'user_email_used' ] ); + // Adding a new user to this site + $new_user_email = wp_unslash( $_REQUEST['email'] ); + $user_details = wpmu_validate_user_signup( $_REQUEST['user_login'], $new_user_email ); if ( is_wp_error( $user_details[ 'errors' ] ) && !empty( $user_details[ 'errors' ]->errors ) ) { $add_user_errors = $user_details[ 'errors' ]; } else { - $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true)); + /** + * Filter the user_login, also known as the username, before it is added to the site. + * + * @since 2.0.3 + * + * @param string $user_login The sanitized username. + */ + $new_user_login = apply_filters( 'pre_user_login', sanitize_user( wp_unslash( $_REQUEST['user_login'] ), true ) ); if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) { add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email + add_filter( 'wpmu_welcome_user_notification', '__return_false' ); // Disable welcome email } - wpmu_signup_user( $new_user_login, $_REQUEST[ 'email' ], array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST[ 'role' ] ) ); + wpmu_signup_user( $new_user_login, $new_user_email, array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST['role'] ) ); if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) { - $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' ] ) ); + $key = $wpdb->get_var( $wpdb->prepare( "SELECT activation_key FROM {$wpdb->signups} WHERE user_login = %s AND user_email = %s", $new_user_login, $new_user_email ) ); wpmu_activate_signup( $key ); $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' ); } else { - $redirect = add_query_arg( array('update' => 'newuserconfimation'), 'user-new.php' ); + $redirect = add_query_arg( array('update' => 'newuserconfirmation'), 'user-new.php' ); } wp_redirect( $redirect ); die(); @@ -143,7 +156,7 @@ $help = '

' . __('To add a new user to your site, fill in the form on this scr if ( is_multisite() ) { $help .= '

' . __('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’s name to Edit the user profile under Network Admin > All Users.') . '

' . - '

' . __('New users will receive an email letting them know they’ve been added as a user for your site. This email will also contain their password. Check the box if you don’t want the user to recieve a welcome email.') . '

'; + '

' . __('New users will receive an email letting them know they’ve been added as a user for your site. This email will also contain their password. Check the box if you don’t want the user to receive a welcome email.') . '

'; } else { $help .= '

' . __('You must assign a password to the new user, which they can change after logging in. The username, however, cannot be changed.') . '

' . '

' . __('New users will receive an email letting them know they’ve been added as a user for your site. By default, this email will also contain their password. Uncheck the box if you don’t want the password to be included in the welcome email.') . '

'; @@ -162,30 +175,43 @@ get_current_screen()->add_help_tab( array( 'title' => __('User Roles'), 'content' => '

' . __('Here is a basic overview of the different user roles and the permissions associated with each one:') . '

' . '' ) ); get_current_screen()->set_help_sidebar( '

' . __('For more information:') . '

' . - '

' . __('Documentation on Adding New Users') . '

' . - '

' . __('Support Forums') . '

' + '

' . __('Documentation on Adding New Users') . '

' . + '

' . __('Support Forums') . '

' ); wp_enqueue_script('wp-ajax-response'); -wp_enqueue_script('user-profile'); +wp_enqueue_script( 'user-profile' ); -require_once ('admin-header.php'); +/** + * Filter whether to enable user auto-complete for non-super admins in Multisite. + * + * @since 3.4.0 + * + * @param bool $enable Whether to enable auto-complete for non-super admins. Default false. + */ +if ( is_multisite() && current_user_can( 'promote_users' ) && ! wp_is_large_network( 'users' ) + && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) ) +) { + wp_enqueue_script( 'user-suggest' ); +} + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); if ( isset($_GET['update']) ) { $messages = array(); if ( is_multisite() ) { switch ( $_GET['update'] ) { - case "newuserconfimation": + case "newuserconfirmation": $messages[] = __('Invitation email sent to new user. A confirmation link must be clicked before their account is created.'); break; case "add": @@ -200,7 +226,7 @@ if ( isset($_GET['update']) ) { case "does_not_exist": $messages[] = __('The requested user does not exist.'); break; - case "does_not_exist": + case "enter_email": $messages[] = __('Please enter a valid email address.'); break; } @@ -211,14 +237,13 @@ if ( isset($_GET['update']) ) { } ?>
- -

-

+
@@ -233,7 +258,7 @@ if ( current_user_can( 'create_users' ) ) { if ( ! empty( $messages ) ) { foreach ( $messages as $msg ) - echo '

' . $msg . '

'; + echo '

' . $msg . '

'; } ?> @@ -251,21 +276,30 @@ if ( is_multisite() ) { if ( $do_both ) echo '

' . __('Add Existing User') . '

'; if ( !is_super_admin() ) { - _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.' ); + echo '

' . __( '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.' ) . '

'; $label = __('E-mail'); + $type = 'email'; } else { - _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.' ); + echo '

' . __( '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.' ) . '

'; $label = __('E-mail or Username'); + $type = 'text'; } ?> -
> +> - + @@ -277,11 +311,25 @@ if ( is_multisite() ) { - +
- 'addusersub' ) ); ?> + + 'addusersub' ) ); ?>
' . __( 'Add New User' ) . ''; ?> -

-
> +

+> - + 'login', 'first_name' => 'firstname', 'last_name' => 'lastname', - 'email' => 'email', 'url' => 'uri', 'role' => 'role', 'send_password' => 'send_password', 'noconfirmation' => 'ignore_pass' ) as $post_field => $var ) { - $var = "new_user_$var"; - if( isset( $_POST['createuser'] ) ) { - if ( ! isset($$var) ) - $$var = isset( $_POST[$post_field] ) ? stripslashes( $_POST[$post_field] ) : ''; - } else { - $$var = false; - } -} +$creating = isset( $_POST['createuser'] ); + +$new_user_login = $creating && isset( $_POST['user_login'] ) ? wp_unslash( $_POST['user_login'] ) : ''; +$new_user_firstname = $creating && isset( $_POST['first_name'] ) ? wp_unslash( $_POST['first_name'] ) : ''; +$new_user_lastname = $creating && isset( $_POST['last_name'] ) ? wp_unslash( $_POST['last_name'] ) : ''; +$new_user_email = $creating && isset( $_POST['email'] ) ? wp_unslash( $_POST['email'] ) : ''; +$new_user_uri = $creating && isset( $_POST['url'] ) ? wp_unslash( $_POST['url'] ) : ''; +$new_user_role = $creating && isset( $_POST['role'] ) ? wp_unslash( $_POST['role'] ) : ''; +$new_user_send_password = $creating && isset( $_POST['send_password'] ) ? wp_unslash( $_POST['send_password'] ) : true; +$new_user_ignore_pass = $creating && isset( $_POST['noconfirmation'] ) ? wp_unslash( $_POST['noconfirmation'] ) : ''; ?> - + - + @@ -328,22 +379,58 @@ foreach ( array( 'user_login' => 'login', 'first_name' => 'firstname', 'last_nam - + - - - - + + + + + + - - - + + + @@ -361,16 +448,20 @@ foreach ( array( 'user_login' => 'login', 'first_name' => 'firstname', 'last_nam - +
-
+ +
+ + + + +
+ + + + + + + +
+

+
-
-
-

+ +
- 'createusersub' ) ); ?> + + + 'createusersub' ) ); ?>
+include( ABSPATH . 'wp-admin/admin-footer.php' );