2004-08-01 11:13:50 +02:00
< ? php
2008-08-16 09:27:34 +02:00
/**
* Edit user administration panel .
*
* @ package WordPress
* @ subpackage Administration
*/
2008-01-31 22:44:17 +01:00
2008-08-16 09:27:34 +02:00
/** WordPress Administration Bootstrap */
2004-10-19 05:03:06 +02:00
require_once ( 'admin.php' );
2004-08-01 11:13:50 +02:00
2008-01-31 23:03:48 +01:00
if ( defined ( 'IS_PROFILE_PAGE' ) && IS_PROFILE_PAGE )
$is_profile_page = true ;
else
$is_profile_page = false ;
2008-08-16 09:27:34 +02:00
/**
* Display JavaScript for profile page .
*
* @ package WordPress
* @ subpackage Administration
*/
2008-01-31 22:44:17 +01:00
function profile_js ( ) {
?>
< script type = " text/javascript " >
2008-08-24 16:35:46 +02:00
( function ( $ ){
function check_pass_strength () {
2008-01-31 22:44:17 +01:00
2008-08-24 16:35:46 +02:00
var pass = $ ( '#pass1' ) . val ();
var user = $ ( '#user_login' ) . val ();
2008-01-31 22:44:17 +01:00
2008-08-24 16:35:46 +02:00
$ ( '#pass-strength-result' ) . removeClass ( 'short bad good strong' );
if ( ! pass ) {
$ ( '#pass-strength-result' ) . html ( pwsL10n . empty );
return ;
}
2008-01-31 22:44:17 +01:00
var strength = passwordStrength ( pass , user );
2008-08-24 16:35:46 +02:00
if ( 2 == strength )
$ ( '#pass-strength-result' ) . addClass ( 'bad' ) . html ( pwsL10n . bad );
else if ( 3 == strength )
$ ( '#pass-strength-result' ) . addClass ( 'good' ) . html ( pwsL10n . good );
else if ( 4 == strength )
$ ( '#pass-strength-result' ) . addClass ( 'strong' ) . html ( pwsL10n . strong );
else
2008-01-31 22:44:17 +01:00
// this catches 'Too short' and the off chance anything else comes along
2008-08-24 16:35:46 +02:00
$ ( '#pass-strength-result' ) . addClass ( 'short' ) . html ( pwsL10n . short );
2008-01-31 22:44:17 +01:00
}
2008-08-09 07:36:14 +02:00
2008-08-24 16:35:46 +02:00
function update_nickname () {
2008-08-09 07:36:14 +02:00
2008-08-24 16:35:46 +02:00
var nickname = $ ( '#nickname' ) . val ();
var display_nickname = $ ( '#display_nickname' ) . val ();
2008-08-09 07:36:14 +02:00
2008-06-20 17:28:22 +02:00
if ( nickname == '' ) {
2008-08-24 16:35:46 +02:00
$ ( '#display_nickname' ) . remove ();
2008-06-20 17:28:22 +02:00
}
2008-08-24 16:35:46 +02:00
$ ( '#display_nickname' ) . val ( nickname ) . html ( nickname );
2008-08-09 07:36:14 +02:00
2008-06-20 17:28:22 +02:00
}
2008-01-31 22:44:17 +01:00
2008-08-24 16:35:46 +02:00
$ ( document ) . ready ( function () {
$ ( '#pass1,#pass2' ) . attr ( 'autocomplete' , 'off' );
$ ( '#nickname' ) . blur ( update_nickname );
$ ( '#pass1' ) . keyup ( check_pass_strength );
2008-03-14 17:51:39 +01:00
$ ( '.color-palette' ) . click ( function (){ $ ( this ) . siblings ( 'input[name=admin_color]' ) . attr ( 'checked' , 'checked' )});
2008-03-15 21:42:00 +01:00
});
2008-08-24 16:35:46 +02:00
})( jQuery );
2008-01-31 22:44:17 +01:00
</ script >
< ? php
}
if ( $is_profile_page ) {
add_action ( 'admin_head' , 'profile_js' );
wp_enqueue_script ( 'jquery' );
wp_enqueue_script ( 'password-strength-meter' );
}
$title = $is_profile_page ? __ ( 'Profile' ) : __ ( 'Edit User' );
if ( current_user_can ( 'edit_users' ) && ! $is_profile_page )
2008-01-31 23:03:48 +01:00
$submenu_file = 'users.php' ;
2006-11-18 08:31:29 +01:00
else
2008-01-31 23:03:48 +01:00
$submenu_file = 'profile.php' ;
$parent_file = 'users.php' ;
2004-08-01 11:13:50 +02:00
2006-07-03 21:03:37 +02:00
wp_reset_vars ( array ( 'action' , 'redirect' , 'profile' , 'user_id' , 'wp_http_referer' ));
2004-08-01 11:13:50 +02:00
2006-06-08 20:36:05 +02:00
$wp_http_referer = remove_query_arg ( array ( 'update' , 'delete_count' ), stripslashes ( $wp_http_referer ));
2006-09-24 12:08:58 +02:00
$user_id = ( int ) $user_id ;
2008-08-21 19:40:38 +02:00
if ( ! $user_id ) {
2008-01-31 22:44:17 +01:00
if ( $is_profile_page ) {
$current_user = wp_get_current_user ();
$user_id = $current_user -> ID ;
} else {
wp_die ( __ ( 'Invalid user ID.' ));
}
2008-08-21 19:40:38 +02:00
}
// Optional SSL preference that can be turned on by hooking to the 'personal_options' action
function use_ssl_preference ( $user ) {
?>
< tr >
< th scope = " row " >< ? php _e ( 'Use https' ) ?> </th>
< 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>
</ tr >
< ? php
}
2006-09-24 12:08:58 +02:00
2004-08-01 11:13:50 +02:00
switch ( $action ) {
2005-07-12 17:53:13 +02:00
case 'switchposts' :
check_admin_referer ();
/* TODO: Switch all posts from one user to another user */
break ;
2004-08-01 11:13:50 +02:00
case 'update' :
2006-05-27 01:08:05 +02:00
check_admin_referer ( 'update-user_' . $user_id );
2006-03-05 23:45:44 +01:00
2006-06-05 18:52:21 +02:00
if ( ! current_user_can ( 'edit_user' , $user_id ) )
2006-09-24 12:08:58 +02:00
wp_die ( __ ( 'You do not have permission to edit this user.' ));
2008-01-31 22:44:17 +01:00
if ( $is_profile_page ) {
do_action ( 'personal_options_update' );
}
2006-09-24 12:08:58 +02:00
$errors = edit_user ( $user_id );
2005-07-12 17:53:13 +02:00
2008-08-21 19:40:38 +02:00
if ( ! is_wp_error ( $errors ) ) {
2008-01-31 22:44:17 +01:00
$redirect = ( $is_profile_page ? " profile.php? " : " user-edit.php?user_id= $user_id & " ) . " updated=true " ;
2006-06-08 20:36:05 +02:00
$redirect = add_query_arg ( 'wp_http_referer' , urlencode ( $wp_http_referer ), $redirect );
2006-06-27 07:38:56 +02:00
wp_redirect ( $redirect );
2005-09-14 02:03:02 +02:00
exit ;
2005-07-12 17:53:13 +02:00
}
2004-08-01 11:13:50 +02:00
default :
2006-08-25 00:33:16 +02:00
$profileuser = get_user_to_edit ( $user_id );
2004-08-01 11:13:50 +02:00
2006-06-05 18:52:21 +02:00
if ( ! current_user_can ( 'edit_user' , $user_id ) )
2008-08-21 19:40:38 +02:00
wp_die ( __ ( 'You do not have permission to edit this user.' ));
2006-09-24 12:08:58 +02:00
include ( 'admin-header.php' );
2004-08-01 11:13:50 +02:00
?>
2004-10-29 03:17:17 +02:00
< ? php if ( isset ( $_GET [ 'updated' ]) ) : ?>
2005-08-08 03:13:22 +02:00
< div id = " message " class = " updated fade " >
2004-08-01 11:13:50 +02:00
< p >< strong >< ? php _e ( 'User updated.' ) ?> </strong></p>
2008-01-31 22:44:17 +01:00
< ? php if ( $wp_http_referer && ! $is_profile_page ) : ?>
2007-04-07 01:09:02 +02:00
< p >< a href = " users.php " >< ? php _e ( '« Back to Authors and Users' ); ?> </a></p>
2006-06-08 20:36:05 +02:00
< ? php endif ; ?>
2004-08-01 11:13:50 +02:00
</ div >
< ? php endif ; ?>
2008-09-21 22:41:25 +02:00
< ? php if ( isset ( $errors ) && is_wp_error ( $errors ) ) : ?>
2005-07-12 17:53:13 +02:00
< div class = " error " >
< ul >
< ? php
2006-04-02 02:48:14 +02:00
foreach ( $errors -> get_error_messages () as $message )
echo " <li> $message </li> " ;
2005-07-12 17:53:13 +02:00
?>
</ ul >
</ div >
< ? php endif ; ?>
2004-08-01 11:13:50 +02:00
2008-03-10 23:09:26 +01:00
< div class = " wrap " id = " profile-page " >
2005-07-12 17:53:13 +02:00
2008-09-08 08:01:33 +02:00
< form id = " your-profile " action = " " method = " post " >
2006-06-04 05:41:33 +02:00
< ? php wp_nonce_field ( 'update-user_' . $user_id ) ?>
2006-06-08 20:36:05 +02:00
< ? php if ( $wp_http_referer ) : ?>
2007-05-29 06:35:23 +02:00
< input type = " hidden " name = " wp_http_referer " value = " <?php echo clean_url( $wp_http_referer ); ?> " />
2006-06-08 20:36:05 +02:00
< ? php endif ; ?>
2005-09-14 02:03:02 +02:00
< p >
< input type = " hidden " name = " from " value = " profile " />
< input type = " hidden " name = " checkuser_id " value = " <?php echo $user_ID ?> " />
</ p >
2008-01-31 22:44:17 +01:00
< h3 >< ? php _e ( 'Personal Options' ); ?> </h3>
2008-03-10 23:09:26 +01:00
< table class = " form-table " >
2008-03-11 22:06:03 +01:00
< ? php if ( rich_edit_exists () ) : // don't bother showing the option if the editor has been removed ?>
2008-03-10 23:09:26 +01:00
< tr >
2008-03-11 22:06:03 +01:00
< th scope = " row " >< ? php _e ( 'Visual Editor' ) ?> </th>
2008-10-03 00:01:33 +02:00
< 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>
2008-03-10 23:09:26 +01:00
</ tr >
2008-01-31 22:44:17 +01:00
< ? php endif ; ?>
2008-07-26 09:54:02 +02:00
< ? php if ( count ( $_wp_admin_css_colors ) > 1 ) : ?>
2008-03-11 22:06:03 +01:00
< tr >
< th scope = " row " >< ? php _e ( 'Admin Color Scheme' ) ?> </th>
2008-05-04 12:37:06 +02:00
< td >< fieldset >< legend class = " hidden " >< ? php _e ( 'Admin Color Scheme' ) ?> </legend>
2008-03-11 22:06:03 +01:00
< ? php
2008-05-05 22:06:37 +02:00
$current_color = get_user_option ( 'admin_color' , $user_id );
2008-03-12 09:10:00 +01:00
if ( empty ( $current_color ) )
2008-03-15 18:02:16 +01:00
$current_color = 'fresh' ;
2008-03-11 22:06:03 +01:00
foreach ( $_wp_admin_css_colors as $color => $color_info ) : ?>
2008-03-14 17:51:39 +01:00
< div class = " color-option " >< input name = " admin_color " id = " admin_color_<?php echo $color ; ?> " type = " radio " value = " <?php echo $color ?> " class = " tog " < ? php checked ( $color , $current_color ); ?> />
2008-03-12 03:35:22 +01:00
< table class = " color-palette " >
< tr >
2008-07-26 09:54:02 +02:00
< ? php foreach ( $color_info -> colors as $html_color ) : ?>
2008-03-14 17:51:39 +01:00
< td style = " background-color: <?php echo $html_color ?> " title = " <?php echo $color ?> " >& nbsp ; </ td >
2008-03-12 03:35:22 +01:00
< ? php endforeach ; ?>
</ tr >
</ table >
2008-08-09 07:36:14 +02:00
2008-03-14 17:51:39 +01:00
< label for = " admin_color_<?php echo $color ; ?> " >< ? php echo $color_info -> name ?> </label>
</ div >
2008-07-26 09:54:02 +02:00
< ? php endforeach ; ?>
2008-05-04 12:37:06 +02:00
</ fieldset ></ td >
2008-03-11 23:03:05 +01:00
</ tr >
2008-08-21 19:40:38 +02:00
< ? php
endif ;
do_action ( 'personal_options' , $profileuser );
?>
2008-03-11 22:06:03 +01:00
</ table >
2008-07-26 10:05:30 +02:00
< ? php
2008-08-21 19:40:38 +02:00
if ( $is_profile_page )
do_action ( 'profile_personal_options' , $profileuser );
2008-01-31 22:44:17 +01:00
?>
2007-03-28 18:10:48 +02:00
2008-03-11 20:36:46 +01:00
< h3 >< ? php _e ( 'Name' ) ?> </h3>
2007-03-28 18:10:48 +02:00
2008-03-10 23:09:26 +01:00
< table class = " form-table " >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " user_login " >< ? php _e ( 'Username' ); ?> </label></th>
< td >< input type = " text " name = " user_login " id = " user_login " value = " <?php echo $profileuser->user_login ; ?> " disabled = " disabled " /> < ? php _e ( 'Your username cannot be changed' ); ?> </td>
2008-03-10 23:09:26 +01:00
</ tr >
2005-11-06 04:58:52 +01:00
2008-01-31 22:44:17 +01:00
< ? php if ( ! $is_profile_page ) : ?>
2008-03-11 09:54:08 +01:00
< tr >< th >< label for = " role " >< ? php _e ( 'Role:' ) ?> </label></th>
2005-11-06 04:58:52 +01:00
< ? php
// print_r($profileuser);
2008-03-11 09:54:08 +01:00
echo '<td><select name="role" id="role">' ;
2006-06-10 22:26:26 +02:00
$role_list = '' ;
$user_has_role = false ;
2005-11-06 04:58:52 +01:00
foreach ( $wp_roles -> role_names as $role => $name ) {
2008-02-23 05:10:04 +01:00
$name = translate_with_context ( $name );
2006-06-10 22:26:26 +02:00
if ( $profileuser -> has_cap ( $role ) ) {
$selected = ' selected="selected"' ;
$user_has_role = true ;
} else {
$selected = '' ;
}
$role_list .= " <option value= \" { $role } \" { $selected } > { $name } </option> " ;
2005-11-06 04:58:52 +01:00
}
2006-06-10 22:26:26 +02:00
if ( $user_has_role )
$role_list .= '<option value="">' . __ ( '— No role for this blog —' ) . '</option>' ;
else
$role_list .= '<option value="" selected="selected">' . __ ( '— No role for this blog —' ) . '</option>' ;
2008-03-10 23:09:26 +01:00
echo $role_list . '</select></td></tr>' ;
2008-01-25 02:33:28 +01:00
?>
2008-03-10 23:09:26 +01:00
< ? php endif ; ?>
2005-09-14 02:03:02 +02:00
2008-03-10 23:09:26 +01:00
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " first_name " >< ? php _e ( 'First name' ) ?> </label></th>
< td >< input type = " text " name = " first_name " id = " first_name " value = " <?php echo $profileuser->first_name ?> " /></ td >
2008-03-10 23:09:26 +01:00
</ tr >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " last_name " >< ? php _e ( 'Last name' ) ?> </label></th>
< td >< input type = " text " name = " last_name " id = " last_name " value = " <?php echo $profileuser->last_name ?> " /></ td >
2008-03-10 23:09:26 +01:00
</ tr >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " nickname " >< ? php _e ( 'Nickname' ) ?> </label></th>
< td >< input type = " text " name = " nickname " id = " nickname " value = " <?php echo $profileuser->nickname ?> " /></ td >
2008-03-10 23:09:26 +01:00
</ tr >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " display_name " >< ? php _e ( 'Display name publicly as' ) ?> </label></th>
2008-03-10 23:09:26 +01:00
< td >
2008-03-11 09:54:08 +01:00
< select name = " display_name " id = " display_name " >
2008-03-10 23:09:26 +01:00
< ? php
$public_display = array ();
2008-06-20 17:28:22 +02:00
$public_display [ 'display_displayname' ] = $profileuser -> display_name ;
$public_display [ 'display_nickname' ] = $profileuser -> nickname ;
$public_display [ 'display_username' ] = $profileuser -> user_login ;
$public_display [ 'display_firstname' ] = $profileuser -> first_name ;
$public_display [ 'display_firstlast' ] = $profileuser -> first_name . ' ' . $profileuser -> last_name ;
$public_display [ 'display_lastfirst' ] = $profileuser -> last_name . ' ' . $profileuser -> first_name ;
2008-03-10 23:09:26 +01:00
$public_display = array_unique ( array_filter ( array_map ( 'trim' , $public_display )));
2008-06-20 17:28:22 +02:00
foreach ( $public_display as $id => $item ) {
2008-03-10 23:09:26 +01:00
?>
2008-06-20 17:28:22 +02:00
< option id = " <?php echo $id ; ?> " value = " <?php echo $item ; ?> " >< ? php echo $item ; ?> </option>
2008-03-10 23:09:26 +01:00
< ? php
}
?>
</ select >
</ td >
</ tr >
</ table >
2008-03-11 20:36:46 +01:00
< h3 >< ? php _e ( 'Contact Info' ) ?> </h3>
2008-03-10 23:09:26 +01:00
< table class = " form-table " >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " email " >< ? php _e ( 'E-mail' ) ?> </label></th>
< td >< input type = " text " name = " email " id = " email " value = " <?php echo $profileuser->user_email ?> " /> < ? php _e ( 'Required' ); ?> </td>
2008-03-10 23:09:26 +01:00
</ tr >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " url " >< ? php _e ( 'Website' ) ?> </label></th>
< td >< input type = " text " name = " url " id = " url " value = " <?php echo $profileuser->user_url ?> " /></ td >
2008-03-11 23:03:05 +01:00
</ tr >
2008-03-10 23:09:26 +01:00
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " aim " >< ? php _e ( 'AIM' ) ?> </label></th>
< td >< input type = " text " name = " aim " id = " aim " value = " <?php echo $profileuser->aim ?> " /></ td >
2008-03-10 23:09:26 +01:00
</ tr >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " yim " >< ? php _e ( 'Yahoo IM' ) ?> </label></th>
< td >< input type = " text " name = " yim " id = " yim " value = " <?php echo $profileuser->yim ?> " /></ td >
2008-03-10 23:09:26 +01:00
</ tr >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " jabber " >< ? php _e ( 'Jabber / Google Talk' ) ?> </label></th>
< td >< input type = " text " name = " jabber " id = " jabber " value = " <?php echo $profileuser->jabber ?> " /></ td >
2008-03-10 23:09:26 +01:00
</ tr >
</ table >
< h3 >< ? php $is_profile_page ? _e ( 'About Yourself' ) : _e ( 'About the user' ); ?> </h3>
< table class = " form-table " >
< tr >
2008-03-11 09:54:08 +01:00
< th >< label for = " description " >< ? php _e ( 'Biographical Info' ); ?> </label></th>
< td >< textarea name = " description " id = " description " rows = " 5 " cols = " 30 " >< ? php echo $profileuser -> description ?> </textarea><br /><?php _e('Share a little biographical information to fill out your profile. This may be shown publicly.'); ?></td>
2008-03-10 23:09:26 +01:00
</ tr >
2005-09-14 02:03:02 +02:00
< ? php
2005-03-09 23:49:42 +01:00
$show_password_fields = apply_filters ( 'show_password_fields' , true );
if ( $show_password_fields ) :
?>
2008-03-10 23:09:26 +01:00
< tr >
2008-06-23 23:51:47 +02:00
< th >< label for = " pass1 " >< ? php _e ( 'New Password' ); ?> </label></th>
2008-03-10 23:09:26 +01:00
< td >< input type = " password " name = " pass1 " id = " pass1 " size = " 16 " value = " " /> < ? php _e ( " If you would like to change the password type a new one. Otherwise leave this blank. " ); ?> <br />
< input type = " password " name = " pass2 " id = " pass2 " size = " 16 " value = " " /> < ? php _e ( " Type your new password again. " ); ?> <br />
2008-08-26 02:40:10 +02:00
< ? php if ( $is_profile_page ) : ?>
< div id = " pass-strength-result " >< ? php _e ( 'Strength indicator' ); ?> </div>
2008-08-24 16:35:46 +02:00
< p >< ? php _e ( 'Hint: Your password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ & ).' ); ?> </p>
2008-08-26 02:40:10 +02:00
< ? php endif ; ?>
2008-03-10 23:09:26 +01:00
</ td >
</ tr >
2005-03-09 23:49:42 +01:00
< ? php endif ; ?>
2008-03-11 23:03:05 +01:00
</ table >
2005-09-14 02:03:02 +02:00
2008-01-31 22:44:17 +01:00
< ? php
2008-02-05 07:47:27 +01:00
if ( $is_profile_page ) {
2008-01-31 22:44:17 +01:00
do_action ( 'show_user_profile' );
} else {
do_action ( 'edit_user_profile' );
}
?>
2005-09-14 02:03:02 +02:00
2008-03-11 23:03:05 +01:00
< ? php if ( count ( $profileuser -> caps ) > count ( $profileuser -> roles )) : ?>
2008-03-15 00:58:31 +01:00
< br class = " clear " />
2008-02-29 18:09:44 +01:00
< table width = " 99% " style = " border: none; " cellspacing = " 2 " cellpadding = " 3 " class = " editform " >
2006-11-19 08:56:05 +01:00
< tr >
2008-06-23 23:51:47 +02:00
< th scope = " row " >< ? php _e ( 'Additional Capabilities' ) ?> </th>
2006-11-19 08:56:05 +01:00
< td >< ? php
2005-09-14 02:03:02 +02:00
$output = '' ;
foreach ( $profileuser -> caps as $cap => $value ) {
if ( ! $wp_roles -> is_role ( $cap )) {
if ( $output != '' ) $output .= ', ' ;
$output .= $value ? $cap : " Denied: { $cap } " ;
}
}
echo $output ;
?> </td>
2006-11-19 08:56:05 +01:00
</ tr >
</ table >
2008-03-11 23:03:05 +01:00
< ? php endif ; ?>
2005-09-14 02:03:02 +02:00
< p class = " submit " >
2004-08-01 11:13:50 +02:00
< input type = " hidden " name = " action " value = " update " />
< input type = " hidden " name = " user_id " id = " user_id " value = " <?php echo $user_id ; ?> " />
2008-02-20 20:30:55 +01:00
< input type = " submit " value = " <?php $is_profile_page ? _e('Update Profile') : _e('Update User') ?> " name = " submit " />
2005-09-14 02:03:02 +02:00
</ p >
2004-08-01 11:13:50 +02:00
</ form >
</ div >
< ? php
break ;
}
2004-12-12 21:41:19 +01:00
2004-08-01 11:13:50 +02:00
include ( 'admin-footer.php' );
2005-03-13 18:06:18 +01:00
?>