X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/8a06f4f9392d1ac373442f82ee40428a3cb81395..96bc8e88cf39086a9e0a883b8e2c311fe82a5e97:/wp-admin/user-edit.php?ds=inline diff --git a/wp-admin/user-edit.php b/wp-admin/user-edit.php index e7a30cd5..5f3d07e0 100644 --- a/wp-admin/user-edit.php +++ b/wp-admin/user-edit.php @@ -1,108 +1,105 @@ - -add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $profile_help, +) ); -if ( $is_profile_page ) { - add_action('admin_head', 'profile_js'); - wp_enqueue_script('jquery'); - wp_enqueue_script('password-strength-meter'); -} +get_current_screen()->set_help_sidebar( + '

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

' . + '

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

' . + '

' . __('Support Forums') . '

' +); -$title = $is_profile_page? __('Profile') : __('Edit User'); -if ( current_user_can('edit_users') && !$is_profile_page ) - $submenu_file = 'users.php'; -else - $submenu_file = 'profile.php'; -$parent_file = 'users.php'; +$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer)); -wp_reset_vars(array('action', 'redirect', 'profile', 'user_id', 'wp_http_referer')); +$user_can_edit = current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' ); -$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer)); +/** + * Optional SSL preference that can be turned on by hooking to the 'personal_options' action. + * + * @since 2.7.0 + * + * @param object $user User data object + */ +function use_ssl_preference($user) { +?> + + + + +ID; - } else { - wp_die(__('Invalid user ID.')); +// Only allow super admins on multisite to edit every user. +if ( is_multisite() && ! current_user_can( 'manage_network_users' ) && $user_id != $current_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'), self_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'), self_admin_url( 'profile.php' ) ) ); + die(); +} switch ($action) { -case 'switchposts': - -check_admin_referer(); - -/* TODO: Switch all posts from one user to another user */ - -break; - case 'update': check_admin_referer('update-user_' . $user_id); @@ -110,15 +107,43 @@ check_admin_referer('update-user_' . $user_id); if ( !current_user_can('edit_user', $user_id) ) wp_die(__('You do not have permission to edit this user.')); -if ( $is_profile_page ) { - do_action('personal_options_update'); -} +if ( IS_PROFILE_PAGE ) + do_action('personal_options_update', $user_id); +else + do_action('edit_user_profile_update', $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 ( !is_network_admin() && 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' ); -$errors = edit_user($user_id); + if ( is_multisite() && is_network_admin() && !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"; - $redirect = add_query_arg('wp_http_referer', urlencode($wp_http_referer), $redirect); +if ( !is_wp_error( $errors ) ) { + $redirect = (IS_PROFILE_PAGE ? "profile.php?" : "user-edit.php?user_id=$user_id&"). "updated=true"; + if ( $wp_http_referer ) + $redirect = add_query_arg('wp_http_referer', urlencode($wp_http_referer), $redirect); wp_redirect($redirect); exit; } @@ -127,37 +152,48 @@ default: $profileuser = get_user_to_edit($user_id); if ( !current_user_can('edit_user', $user_id) ) - wp_die(__('You do not have permission to edit this user.')); + wp_die(__('You do not have permission to edit this user.')); -include ('admin-header.php'); +include (ABSPATH . 'wp-admin/admin-header.php'); ?> +ID ) && current_user_can( 'manage_network_options' ) ) { ?> +

+ -
+
+ +

+

- -

+ + +

- -
- -
+ +

\n

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

-

- -
+ +

+ + + + + +

+ +> - +

@@ -167,41 +203,39 @@ include ('admin-header.php');

- + - + + 1 && has_action('admin_color_scheme_picker') ) : ?> - + $color_info ): ?> -
/> -
+
- - colors as $html_color ): ?> - - - -
 
- - -
- - +endif; // $_wp_admin_css_colors +if ( !( IS_PROFILE_PAGE && !$user_can_edit ) ) : ?> + + + More information'); ?> + + + + +
+
+
+ + -

@@ -209,65 +243,85 @@ foreach ( $_wp_admin_css_colors as $color => $color_info ): ?> - + - + +'; + echo ''; ?> + + + + + - - + + - - + + - - + + - + ';
'; -$role_list = ''; -$user_has_role = false; -foreach($wp_roles->role_names as $role => $name) { - $name = translate_with_context($name); - if ( $profileuser->has_cap($role) ) { - $selected = ' selected="selected"'; - $user_has_role = true; - } else { - $selected = ''; - } - $role_list .= ""; -} -if ( $user_has_role ) - $role_list .= ''; +// Get the highest/primary role for this user +// TODO: create a function that does this: wp_get_user_role() +$user_roles = $profileuser->roles; +$user_role = array_shift($user_roles); + +// print the full list of roles with the primary one selected. +wp_dropdown_roles($user_role); + +// print the 'no role' option. Make it selected if the user has no role yet. +if ( $user_role ) + echo ''; else - $role_list .= ''; -echo $role_list . '
+user_email != get_site_option( 'admin_email' ) ) : ?> +

+ +

+
- - + + - - - - - - - - - - - + + $desc) { +?> - - + + +
+ ID . '_new_email' ); + if ( $new_email && $new_email != $current_user->user_email ) : ?> +
+

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

+
+ +
-

+

- + - + -


+

-
- -

-
- +

+
+
+

-caps) > count($profileuser->roles)): ?> +caps) > count($profileuser->roles) && apply_filters('additional_capabilities_display', true, $profileuser) ) { ?>
caps as $cap => $value) { - if(!$wp_roles->is_role($cap)) { - if($output != '') $output .= ', '; + foreach ( $profileuser->caps as $cap => $value ) { + if ( !$wp_roles->is_role($cap) ) { + if ( $output != '' ) + $output .= ', '; $output .= $value ? $cap : "Denied: {$cap}"; } } @@ -355,18 +412,24 @@ if ( $show_password_fields ) : ?>
- + + + + + + -

- - - -

+ +