X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/1c09677af04c9e37714e09b73eb9dbc5b2e3eb13..2376fb745f4ae8c6bd2353127524e0b28005143d:/wp-admin/user-edit.php diff --git a/wp-admin/user-edit.php b/wp-admin/user-edit.php index b3ecb63a..414dfb3f 100644 --- a/wp-admin/user-edit.php +++ b/wp-admin/user-edit.php @@ -7,10 +7,21 @@ */ /** WordPress Administration Bootstrap */ -require_once('admin.php'); +require_once('./admin.php'); -if ( !defined('IS_PROFILE_PAGE') ) - define('IS_PROFILE_PAGE', false); +wp_reset_vars(array('action', 'redirect', 'profile', 'user_id', 'wp_http_referer')); + +$user_id = (int) $user_id; +$current_user = wp_get_current_user(); +if ( ! defined( 'IS_PROFILE_PAGE' ) ) + define( 'IS_PROFILE_PAGE', ( $user_id == $current_user->ID ) ); + +if ( ! $user_id && IS_PROFILE_PAGE ) + $user_id = $current_user->ID; +elseif ( ! $user_id && ! IS_PROFILE_PAGE ) + wp_die(__( 'Invalid user ID.' ) ); +elseif ( ! get_userdata( $user_id ) ) + wp_die( __('Invalid user ID.') ); wp_enqueue_script('user-profile'); wp_enqueue_script('password-strength-meter'); @@ -22,22 +33,20 @@ else $submenu_file = 'profile.php'; $parent_file = 'users.php'; -wp_reset_vars(array('action', 'redirect', 'profile', 'user_id', 'wp_http_referer')); +// contextual help - choose Help on the top right of admin panel to preview this. +add_contextual_help($current_screen, + '

' . __('Your profile contains information about you (your “account”) as well as some personal options related to using WordPress.') . '

' . + '

' . __('You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things.') . '

' . + '

' . __('Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts.') . '

' . + '

' . __('Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so.') . '

' . + '

' . __('Remember to click the Update Profile button when you are finished.') . '

' . + '

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

' . + '

' . __('Documentation on User Profiles') . '

' . + '

' . __('Support Forums') . '

' +); -$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer)); -$user_id = (int) $user_id; - -if ( !$user_id ) { - if ( IS_PROFILE_PAGE ) { - $current_user = wp_get_current_user(); - $user_id = $current_user->ID; - } else { - wp_die(__('Invalid user ID.')); - } -} elseif ( !get_userdata($user_id) ) { - wp_die( __('Invalid user ID.') ); -} +$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer)); $all_post_caps = array('posts', 'pages'); $user_can_edit = false; @@ -60,6 +69,30 @@ function use_ssl_preference($user) { ID && ! apply_filters( 'enable_edit_any_user_configuration', true ) ) + wp_die( __( 'You do not have permission to edit this user.' ) ); + +// Execute confirmed email change. See send_confirmation_on_profile_email(). +if ( is_multisite() && IS_PROFILE_PAGE && isset( $_GET[ 'newuseremail' ] ) && $current_user->ID ) { + $new_email = get_option( $current_user->ID . '_new_email' ); + if ( $new_email[ 'hash' ] == $_GET[ 'newuseremail' ] ) { + $user->ID = $current_user->ID; + $user->user_email = esc_html( trim( $new_email[ 'newemail' ] ) ); + if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $current_user->user_login ) ) ) + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $user->user_email, $current_user->user_login ) ); + wp_update_user( get_object_vars( $user ) ); + delete_option( $current_user->ID . '_new_email' ); + wp_redirect( add_query_arg( array('updated' => 'true'), admin_url( 'profile.php' ) ) ); + die(); + } +} elseif ( is_multisite() && IS_PROFILE_PAGE && !empty( $_GET['dismiss'] ) && $current_user->ID . '_new_email' == $_GET['dismiss'] ) { + delete_option( $current_user->ID . '_new_email' ); + wp_redirect( add_query_arg( array('updated' => 'true'), admin_url( 'profile.php' ) ) ); + die(); +} + switch ($action) { case 'switchposts': @@ -81,7 +114,33 @@ if ( IS_PROFILE_PAGE ) else do_action('edit_user_profile_update', $user_id); -$errors = edit_user($user_id); +if ( !is_multisite() ) { + $errors = edit_user($user_id); +} else { + $user = get_userdata( $user_id ); + + // Update the email address in signups, if present. + if ( $user->user_login && isset( $_POST[ 'email' ] ) && is_email( $_POST[ 'email' ] ) && $wpdb->get_var( $wpdb->prepare( "SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $user->user_login ) ) ) + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $_POST[ 'email' ], $user_login ) ); + + // WPMU must delete the user from the current blog if WP added him after editing. + $delete_role = false; + $blog_prefix = $wpdb->get_blog_prefix(); + if ( $user_id != $current_user->ID ) { + $cap = $wpdb->get_var( "SELECT meta_value FROM {$wpdb->usermeta} WHERE user_id = '{$user_id}' AND meta_key = '{$blog_prefix}capabilities' AND meta_value = 'a:0:{}'" ); + if ( null == $cap && $_POST[ 'role' ] == '' ) { + $_POST[ 'role' ] = 'contributor'; + $delete_role = true; + } + } + if ( !isset( $errors ) || ( isset( $errors ) && is_object( $errors ) && false == $errors->get_error_codes() ) ) + $errors = edit_user($user_id); + if ( $delete_role ) // stops users being added to current blog when they are edited + delete_user_meta( $user_id, $blog_prefix . 'capabilities' ); + + if ( is_multisite() && !IS_PROFILE_PAGE && current_user_can( 'manage_network_options' ) && !isset($super_admins) && empty( $_POST['super_admin'] ) == is_super_admin( $user_id ) ) + empty( $_POST['super_admin'] ) ? revoke_super_admin( $user_id ) : grant_super_admin( $user_id ); +} if ( !is_wp_error( $errors ) ) { $redirect = (IS_PROFILE_PAGE ? "profile.php?" : "user-edit.php?user_id=$user_id&"). "updated=true"; @@ -99,8 +158,11 @@ if ( !current_user_can('edit_user', $user_id) ) include ('admin-header.php'); ?> +ID ) && current_user_can( 'manage_network_options' ) ) { ?> +

+ -
+

@@ -108,21 +170,14 @@ include ('admin-header.php');
-
- -
+

\n

", $errors->get_error_messages() ); ?>

-
+> @@ -141,37 +196,20 @@ include ('admin-header.php'); - 1 ) : ?> + 1 && has_action('admin_color_scheme_picker') ) : ?> -
- $color_info ): ?> -
/> - - - colors as $html_color ): ?> - - - -
 
- - -
- -
+ - + More information'); ?> @@ -185,7 +223,7 @@ do_action('personal_options', $profileuser); - + @@ -202,20 +240,24 @@ wp_dropdown_roles($user_role); // print the 'no role' option. Make it selected if the user has no role yet. if ( $user_role ) - echo ''; + echo ''; else - echo ''; + echo ''; ?> - + + +

+ + - + - + @@ -230,8 +272,8 @@ else
- + @@ -304,11 +355,10 @@ if ( $show_password_fields ) :
+ ID . '_new_email' ); + if ( $new_email && $new_email != $current_user->user_email ) : ?> +
+

%1$s. Cancel'), $new_email['newemail'], esc_url( admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ) ) ); ?>

+
+ +
caps) > count($profileuser->roles) && apply_filters('additional_capabilities_display', true, $profileuser) ) { ?> @@ -341,6 +391,12 @@ if ( $show_password_fields ) : + +