web/wp-admin/user-edit.php
branchwordpress
changeset 109 03b0d1493584
child 132 4d4862461b8d
equal deleted inserted replaced
-1:000000000000 109:03b0d1493584
       
     1 <?php
       
     2 /**
       
     3  * Edit user administration panel.
       
     4  *
       
     5  * @package WordPress
       
     6  * @subpackage Administration
       
     7  */
       
     8 
       
     9 /** WordPress Administration Bootstrap */
       
    10 require_once('admin.php');
       
    11 
       
    12 if ( !defined('IS_PROFILE_PAGE') )
       
    13 	define('IS_PROFILE_PAGE', false);
       
    14 
       
    15 wp_enqueue_script('user-profile');
       
    16 wp_enqueue_script('password-strength-meter');
       
    17 
       
    18 $title = IS_PROFILE_PAGE ? __('Profile') : __('Edit User');
       
    19 if ( current_user_can('edit_users') && !IS_PROFILE_PAGE )
       
    20 	$submenu_file = 'users.php';
       
    21 else
       
    22 	$submenu_file = 'profile.php';
       
    23 $parent_file = 'users.php';
       
    24 
       
    25 wp_reset_vars(array('action', 'redirect', 'profile', 'user_id', 'wp_http_referer'));
       
    26 
       
    27 $wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer));
       
    28 
       
    29 $user_id = (int) $user_id;
       
    30 
       
    31 if ( !$user_id ) {
       
    32 	if ( IS_PROFILE_PAGE ) {
       
    33 		$current_user = wp_get_current_user();
       
    34 		$user_id = $current_user->ID;
       
    35 	} else {
       
    36 		wp_die(__('Invalid user ID.'));
       
    37 	}
       
    38 } elseif ( !get_userdata($user_id) ) {
       
    39 	wp_die( __('Invalid user ID.') );
       
    40 }
       
    41 
       
    42 $all_post_caps = array('posts', 'pages');
       
    43 $user_can_edit = false;
       
    44 foreach ( $all_post_caps as $post_cap )
       
    45 	$user_can_edit |= current_user_can("edit_$post_cap");
       
    46 
       
    47 /**
       
    48  * Optional SSL preference that can be turned on by hooking to the 'personal_options' action.
       
    49  *
       
    50  * @since 2.7.0
       
    51  *
       
    52  * @param object $user User data object
       
    53  */
       
    54 function use_ssl_preference($user) {
       
    55 ?>
       
    56 	<tr>
       
    57 		<th scope="row"><?php _e('Use https')?></th>
       
    58 		<td><label for="use_ssl"><input name="use_ssl" type="checkbox" id="use_ssl" value="1" <?php checked('1', $user->use_ssl); ?> /> <?php _e('Always use https when visiting the admin'); ?></label></td>
       
    59 	</tr>
       
    60 <?php
       
    61 }
       
    62 
       
    63 switch ($action) {
       
    64 case 'switchposts':
       
    65 
       
    66 check_admin_referer();
       
    67 
       
    68 /* TODO: Switch all posts from one user to another user */
       
    69 
       
    70 break;
       
    71 
       
    72 case 'update':
       
    73 
       
    74 check_admin_referer('update-user_' . $user_id);
       
    75 
       
    76 if ( !current_user_can('edit_user', $user_id) )
       
    77 	wp_die(__('You do not have permission to edit this user.'));
       
    78 
       
    79 if ( IS_PROFILE_PAGE )
       
    80 	do_action('personal_options_update', $user_id);
       
    81 else
       
    82 	do_action('edit_user_profile_update', $user_id);
       
    83 
       
    84 $errors = edit_user($user_id);
       
    85 
       
    86 if ( !is_wp_error( $errors ) ) {
       
    87 	$redirect = (IS_PROFILE_PAGE ? "profile.php?" : "user-edit.php?user_id=$user_id&"). "updated=true";
       
    88 	$redirect = add_query_arg('wp_http_referer', urlencode($wp_http_referer), $redirect);
       
    89 	wp_redirect($redirect);
       
    90 	exit;
       
    91 }
       
    92 
       
    93 default:
       
    94 $profileuser = get_user_to_edit($user_id);
       
    95 
       
    96 if ( !current_user_can('edit_user', $user_id) )
       
    97 	wp_die(__('You do not have permission to edit this user.'));
       
    98 
       
    99 include ('admin-header.php');
       
   100 ?>
       
   101 
       
   102 <?php if ( isset($_GET['updated']) ) : ?>
       
   103 <div id="message" class="updated fade">
       
   104 	<p><strong><?php _e('User updated.') ?></strong></p>
       
   105 	<?php if ( $wp_http_referer && !IS_PROFILE_PAGE ) : ?>
       
   106 	<p><a href="users.php"><?php _e('&larr; Back to Authors and Users'); ?></a></p>
       
   107 	<?php endif; ?>
       
   108 </div>
       
   109 <?php endif; ?>
       
   110 <?php if ( isset( $errors ) && is_wp_error( $errors ) ) : ?>
       
   111 <div class="error">
       
   112 	<ul>
       
   113 	<?php
       
   114 	foreach( $errors->get_error_messages() as $message )
       
   115 		echo "<li>$message</li>";
       
   116 	?>
       
   117 	</ul>
       
   118 </div>
       
   119 <?php endif; ?>
       
   120 
       
   121 <div class="wrap" id="profile-page">
       
   122 <?php screen_icon(); ?>
       
   123 <h2><?php echo esc_html( $title ); ?></h2>
       
   124 
       
   125 <form id="your-profile" action="" method="post">
       
   126 <?php wp_nonce_field('update-user_' . $user_id) ?>
       
   127 <?php if ( $wp_http_referer ) : ?>
       
   128 	<input type="hidden" name="wp_http_referer" value="<?php echo esc_url($wp_http_referer); ?>" />
       
   129 <?php endif; ?>
       
   130 <p>
       
   131 <input type="hidden" name="from" value="profile" />
       
   132 <input type="hidden" name="checkuser_id" value="<?php echo $user_ID ?>" />
       
   133 </p>
       
   134 
       
   135 <h3><?php _e('Personal Options'); ?></h3>
       
   136 
       
   137 <table class="form-table">
       
   138 <?php if ( rich_edit_exists() && !( IS_PROFILE_PAGE && !$user_can_edit ) ) : // don't bother showing the option if the editor has been removed ?>
       
   139 	<tr>
       
   140 		<th scope="row"><?php _e('Visual Editor')?></th>
       
   141 		<td><label for="rich_editing"><input name="rich_editing" type="checkbox" id="rich_editing" value="false" <?php checked('false', $profileuser->rich_editing); ?> /> <?php _e('Disable the visual editor when writing'); ?></label></td>
       
   142 	</tr>
       
   143 <?php endif; ?>
       
   144 <?php if (count($_wp_admin_css_colors) > 1 ) : ?>
       
   145 <tr>
       
   146 <th scope="row"><?php _e('Admin Color Scheme')?></th>
       
   147 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Admin Color Scheme')?></span></legend>
       
   148 <?php
       
   149 $current_color = get_user_option('admin_color', $user_id);
       
   150 if ( empty($current_color) )
       
   151 	$current_color = 'fresh';
       
   152 foreach ( $_wp_admin_css_colors as $color => $color_info ): ?>
       
   153 <div class="color-option"><input name="admin_color" id="admin_color_<?php echo $color; ?>" type="radio" value="<?php echo esc_attr($color) ?>" class="tog" <?php checked($color, $current_color); ?> />
       
   154 	<table class="color-palette">
       
   155 	<tr>
       
   156 	<?php foreach ( $color_info->colors as $html_color ): ?>
       
   157 	<td style="background-color: <?php echo $html_color ?>" title="<?php echo $color ?>">&nbsp;</td>
       
   158 	<?php endforeach; ?>
       
   159 	</tr>
       
   160 	</table>
       
   161 
       
   162 	<label for="admin_color_<?php echo $color; ?>"><?php echo $color_info->name ?></label>
       
   163 </div>
       
   164 	<?php endforeach; ?>
       
   165 </fieldset></td>
       
   166 </tr>
       
   167 <?php if ( !( IS_PROFILE_PAGE && !$user_can_edit ) ) : ?>
       
   168 <tr>
       
   169 <th scope="row"><?php _e( 'Keyboard Shortcuts' ); ?></th>
       
   170 <td><label for="comment_shortcuts"><input type="checkbox" name="comment_shortcuts" id="comment_shortcuts" value="true" <?php if ( !empty($profileuser->comment_shortcuts) ) checked('true', $profileuser->comment_shortcuts); ?> /> <?php _e('Enable keyboard shortcuts for comment moderation.'); ?></label> <?php _e('<a href="http://codex.wordpress.org/Keyboard_Shortcuts">More information</a>'); ?></td>
       
   171 </tr>
       
   172 <?php
       
   173 endif;
       
   174 endif;
       
   175 do_action('personal_options', $profileuser);
       
   176 ?>
       
   177 </table>
       
   178 <?php
       
   179 	if ( IS_PROFILE_PAGE )
       
   180 		do_action('profile_personal_options', $profileuser);
       
   181 ?>
       
   182 
       
   183 <h3><?php _e('Name') ?></h3>
       
   184 
       
   185 <table class="form-table">
       
   186 	<tr>
       
   187 		<th><label for="user_login"><?php _e('Username'); ?></label></th>
       
   188 		<td><input type="text" name="user_login" id="user_login" value="<?php echo esc_attr($profileuser->user_login); ?>" disabled="disabled" class="regular-text" /> <span class="description"><?php _e('Your username cannot be changed.'); ?></span></td>
       
   189 	</tr>
       
   190 
       
   191 <?php if ( !IS_PROFILE_PAGE ): ?>
       
   192 <tr><th><label for="role"><?php _e('Role:') ?></label></th>
       
   193 <td><select name="role" id="role">
       
   194 <?php
       
   195 // Get the highest/primary role for this user
       
   196 // TODO: create a function that does this: wp_get_user_role()
       
   197 $user_roles = $profileuser->roles;
       
   198 $user_role = array_shift($user_roles);
       
   199 
       
   200 // print the full list of roles with the primary one selected.
       
   201 wp_dropdown_roles($user_role);
       
   202 
       
   203 // print the 'no role' option. Make it selected if the user has no role yet.
       
   204 if ( $user_role )
       
   205 	echo '<option value="">' . __('&mdash; No role for this blog &mdash;') . '</option>';
       
   206 else
       
   207 	echo '<option value="" selected="selected">' . __('&mdash; No role for this blog &mdash;') . '</option>';
       
   208 ?>
       
   209 </select></td></tr>
       
   210 <?php endif; //!IS_PROFILE_PAGE ?>
       
   211 
       
   212 <tr>
       
   213 	<th><label for="first_name"><?php _e('First name') ?></label></th>
       
   214 	<td><input type="text" name="first_name" id="first_name" value="<?php echo esc_attr($profileuser->first_name) ?>" class="regular-text" /></td>
       
   215 </tr>
       
   216 
       
   217 <tr>
       
   218 	<th><label for="last_name"><?php _e('Last name') ?></label></th>
       
   219 	<td><input type="text" name="last_name" id="last_name" value="<?php echo esc_attr($profileuser->last_name) ?>" class="regular-text" /></td>
       
   220 </tr>
       
   221 
       
   222 <tr>
       
   223 	<th><label for="nickname"><?php _e('Nickname'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
       
   224 	<td><input type="text" name="nickname" id="nickname" value="<?php echo esc_attr($profileuser->nickname) ?>" class="regular-text" /></td>
       
   225 </tr>
       
   226 
       
   227 <tr>
       
   228 	<th><label for="display_name"><?php _e('Display name publicly as') ?></label></th>
       
   229 	<td>
       
   230 		<select name="display_name" id="display_name">
       
   231 		<?php
       
   232 			$public_display = array();
       
   233 			$public_display['display_nickname']  = $profileuser->nickname;
       
   234 			$public_display['display_username']  = $profileuser->user_login;
       
   235 			if ( !empty($profileuser->first_name) )
       
   236 				$public_display['display_firstname'] = $profileuser->first_name;
       
   237 			if ( !empty($profileuser->last_name) )
       
   238 				$public_display['display_lastname'] = $profileuser->last_name;
       
   239 			if ( !empty($profileuser->first_name) && !empty($profileuser->last_name) ) {
       
   240 				$public_display['display_firstlast'] = $profileuser->first_name . ' ' . $profileuser->last_name;
       
   241 				$public_display['display_lastfirst'] = $profileuser->last_name . ' ' . $profileuser->first_name;
       
   242 			}
       
   243 			if ( !in_array( $profileuser->display_name, $public_display ) )// Only add this if it isn't duplicated elsewhere
       
   244 				$public_display = array( 'display_displayname' => $profileuser->display_name ) + $public_display;
       
   245 			$public_display = array_map( 'trim', $public_display );
       
   246 			foreach ( $public_display as $id => $item ) {
       
   247 		?>
       
   248 			<option id="<?php echo $id; ?>" value="<?php echo esc_attr($item); ?>"<?php selected( $profileuser->display_name, $item ); ?>><?php echo $item; ?></option>
       
   249 		<?php
       
   250 			}
       
   251 		?>
       
   252 		</select>
       
   253 	</td>
       
   254 </tr>
       
   255 </table>
       
   256 
       
   257 <h3><?php _e('Contact Info') ?></h3>
       
   258 
       
   259 <table class="form-table">
       
   260 <tr>
       
   261 	<th><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
       
   262 	<td><input type="text" name="email" id="email" value="<?php echo esc_attr($profileuser->user_email) ?>" class="regular-text" /></td>
       
   263 </tr>
       
   264 
       
   265 <tr>
       
   266 	<th><label for="url"><?php _e('Website') ?></label></th>
       
   267 	<td><input type="text" name="url" id="url" value="<?php echo esc_attr($profileuser->user_url) ?>" class="regular-text code" /></td>
       
   268 </tr>
       
   269 
       
   270 <tr>
       
   271 	<th><label for="aim"><?php echo apply_filters('user_aim_label', __('AIM')); ?></label></th>
       
   272 	<td><input type="text" name="aim" id="aim" value="<?php echo esc_attr($profileuser->aim) ?>" class="regular-text" /></td>
       
   273 </tr>
       
   274 
       
   275 <tr>
       
   276 	<th><label for="yim"><?php echo apply_filters('user_yim_label', __('Yahoo IM')); ?></label></th>
       
   277 	<td><input type="text" name="yim" id="yim" value="<?php echo esc_attr($profileuser->yim) ?>" class="regular-text" /></td>
       
   278 </tr>
       
   279 
       
   280 <tr>
       
   281 	<th><label for="jabber"><?php echo apply_filters('user_jabber_label', __('Jabber / Google Talk')); ?></label></th>
       
   282 	<td><input type="text" name="jabber" id="jabber" value="<?php echo esc_attr($profileuser->jabber) ?>" class="regular-text" /></td>
       
   283 </tr>
       
   284 </table>
       
   285 
       
   286 <h3><?php IS_PROFILE_PAGE ? _e('About Yourself') : _e('About the user'); ?></h3>
       
   287 
       
   288 <table class="form-table">
       
   289 <tr>
       
   290 	<th><label for="description"><?php _e('Biographical Info'); ?></label></th>
       
   291 	<td><textarea name="description" id="description" rows="5" cols="30"><?php echo $profileuser->description ?></textarea><br />
       
   292 	<span class="description"><?php _e('Share a little biographical information to fill out your profile. This may be shown publicly.'); ?></span></td>
       
   293 </tr>
       
   294 
       
   295 <?php
       
   296 $show_password_fields = apply_filters('show_password_fields', true, $profileuser);
       
   297 if ( $show_password_fields ) :
       
   298 ?>
       
   299 <tr id="password">
       
   300 	<th><label for="pass1"><?php _e('New Password'); ?></label></th>
       
   301 	<td><input type="password" name="pass1" id="pass1" size="16" value="" autocomplete="off" /> <span class="description"><?php _e("If you would like to change the password type a new one. Otherwise leave this blank."); ?></span><br />
       
   302 		<input type="password" name="pass2" id="pass2" size="16" value="" autocomplete="off" /> <span class="description"><?php _e("Type your new password again."); ?></span><br />
       
   303 		<div id="pass-strength-result"><?php _e('Strength indicator'); ?></div>
       
   304 		<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>
       
   305 	</td>
       
   306 </tr>
       
   307 <?php endif; ?>
       
   308 </table>
       
   309 
       
   310 <?php
       
   311 	if ( IS_PROFILE_PAGE ) {
       
   312 		do_action('show_user_profile', $profileuser);
       
   313 	} else {
       
   314 		do_action('edit_user_profile', $profileuser);
       
   315 	}
       
   316 ?>
       
   317 
       
   318 <?php if (count($profileuser->caps) > count($profileuser->roles) && apply_filters('additional_capabilities_display', true, $profileuser)): ?>
       
   319 <br class="clear" />
       
   320 	<table width="99%" style="border: none;" cellspacing="2" cellpadding="3" class="editform">
       
   321 		<tr>
       
   322 			<th scope="row"><?php _e('Additional Capabilities') ?></th>
       
   323 			<td><?php
       
   324 			$output = '';
       
   325 			foreach($profileuser->caps as $cap => $value) {
       
   326 				if(!$wp_roles->is_role($cap)) {
       
   327 					if($output != '') $output .= ', ';
       
   328 					$output .= $value ? $cap : "Denied: {$cap}";
       
   329 				}
       
   330 			}
       
   331 			echo $output;
       
   332 			?></td>
       
   333 		</tr>
       
   334 	</table>
       
   335 <?php endif; ?>
       
   336 
       
   337 <p class="submit">
       
   338 	<input type="hidden" name="action" value="update" />
       
   339 	<input type="hidden" name="user_id" id="user_id" value="<?php echo esc_attr($user_id); ?>" />
       
   340 	<input type="submit" class="button-primary" value="<?php IS_PROFILE_PAGE ? esc_attr_e('Update Profile') : esc_attr_e('Update User') ?>" name="submit" />
       
   341 </p>
       
   342 </form>
       
   343 </div>
       
   344 <?php
       
   345 break;
       
   346 }
       
   347 
       
   348 include('admin-footer.php');
       
   349 ?>