2003-12-07 20:28:41 -05:00
< ? php
2004-10-18 23:03:06 -04:00
require_once ( 'admin.php' );
2005-07-08 21:27:46 -04:00
require_once ( ABSPATH . WPINC . '/registration-functions.php' );
2004-04-25 00:24:06 -04:00
$title = __ ( 'Users' );
2004-12-24 15:55:36 -05:00
$parent_file = 'profile.php' ;
2003-12-07 20:28:41 -05:00
2005-07-08 21:27:46 -04:00
$action = $_REQUEST [ 'action' ];
2003-12-07 20:28:41 -05:00
switch ( $action ) {
2005-07-12 11:53:13 -04:00
case 'promote' :
2004-05-17 23:58:05 -04:00
check_admin_referer ();
2004-05-17 16:34:05 -04:00
2005-07-12 11:53:13 -04:00
if ( empty ( $_POST [ 'users' ])) {
header ( 'Location: users.php' );
}
2003-12-23 15:21:29 -05:00
2005-07-12 11:53:13 -04:00
if ( ! current_user_can ( 'edit_users' ) )
die ( __ ( 'You can’t edit users.' ));
2003-12-23 15:21:29 -05:00
2005-07-12 11:53:13 -04:00
$userids = $_POST [ 'users' ];
foreach ( $userids as $id ) {
$user = new WP_User ( $id );
$user -> set_role ( $_POST [ 'new_role' ]);
}
header ( 'Location: users.php?update=promote' );
2005-03-09 17:49:42 -05:00
2005-07-12 11:53:13 -04:00
break ;
2003-12-23 15:21:29 -05:00
2005-07-12 11:53:13 -04:00
case 'dodelete' :
2003-12-23 15:21:29 -05:00
2005-07-12 11:53:13 -04:00
check_admin_referer ();
if ( empty ( $_POST [ 'users' ])) {
header ( 'Location: users.php' );
2004-05-17 08:38:19 -04:00
}
2003-12-23 15:21:29 -05:00
2005-07-12 11:53:13 -04:00
if ( ! current_user_can ( 'edit_users' ) )
die ( __ ( 'You can’t delete users.' ));
2003-12-23 15:21:29 -05:00
2005-07-12 11:53:13 -04:00
$userids = $_POST [ 'users' ];
2003-12-07 20:28:41 -05:00
2005-07-12 11:53:13 -04:00
foreach ( $userids as $id ) {
switch ( $_POST [ 'delete_option' ]) {
case 'delete' :
wp_delete_user ( $id );
break ;
case 'reassign' :
wp_delete_user ( $id , $_POST [ 'reassign_user' ]);
break ;
}
}
2003-12-23 15:21:29 -05:00
2005-07-12 11:53:13 -04:00
header ( 'Location: users.php?update=del' );
2003-12-23 15:21:29 -05:00
break ;
2005-07-12 11:53:13 -04:00
case 'delete' :
2004-05-17 23:58:05 -04:00
check_admin_referer ();
2004-05-17 16:34:05 -04:00
2005-07-12 11:53:13 -04:00
if ( empty ( $_POST [ 'users' ])) {
2003-12-07 20:28:41 -05:00
header ( 'Location: users.php' );
}
2005-07-12 11:53:13 -04:00
if ( ! current_user_can ( 'edit_users' ) )
$error [ 'edit_users' ] = __ ( 'You can’t delete users.' );
2003-12-07 20:28:41 -05:00
2005-07-12 11:53:13 -04:00
$userids = $_POST [ 'users' ];
2005-07-08 21:27:46 -04:00
2005-07-12 11:53:13 -04:00
include ( 'admin-header.php' );
?>
< form action = " " method = " post " name = " updateusers " id = " updateusers " >
< div class = " wrap " >
< h2 >< ? php _e ( 'Delete Users' ); ?> </h2>
< p >< ? php _e ( 'You have specified these users for deletion:' ); ?> </p>
< ul >
< ? php
foreach ( $userids as $id ) {
$user = new WP_User ( $id );
echo " <li><input type= \" hidden \" name= \" users[] \" value= \" { $id } \" /> " ;
echo " { $id } : { $user -> data -> user_login } </li> \n " ;
2003-12-07 20:28:41 -05:00
}
2005-07-12 11:53:13 -04:00
$all_logins = $wpdb -> get_results ( " SELECT ID, user_login FROM $wpdb->users ORDER BY user_login " );
$user_dropdown = '<select name="reassign_user">' ;
foreach ( $all_logins as $login ) {
if ( ! in_array ( $login -> ID , $userids )) {
$user_dropdown .= " <option value= \" { $login -> ID } \" > { $login -> user_login } </option> " ;
}
}
$user_dropdown .= '</select>' ;
?>
</ ul >
< p >< ? php _e ( 'What should be done with posts and links owned by this user?' ); ?> </p>
< ul style = " list-style:none; " >
< li >< label >< input type = " radio " id = " delete_option0 " name = " delete_option " value = " delete " checked = " checked " />
< ? php _e ( 'Delete all posts and links.' ); ?> </label></li>
< li >< input type = " radio " id = " delete_option1 " name = " delete_option " value = " reassign " />
< ? php echo sprintf ( __ ( '<label for="delete_option1">Attribute all posts and links to:</label> %s' ), $user_dropdown ); ?> </li>
</ ul >
< input type = " hidden " name = " action " value = " dodelete " />
< p class = " submit " >< input type = " submit " name = " submit " value = " <?php _e('Confirm Deletion'); ?> " /></ p >
</ div >
</ form >
< ? php
2003-12-07 20:28:41 -05:00
break ;
2005-07-12 11:53:13 -04:00
case 'adduser' :
2004-05-17 23:58:05 -04:00
check_admin_referer ();
2004-05-17 16:34:05 -04:00
2005-07-12 11:53:13 -04:00
$new_user_login = wp_specialchars ( trim ( $_POST [ 'user_login' ]));
$new_pass1 = $_POST [ 'pass1' ];
$new_pass2 = $_POST [ 'pass2' ];
$new_user_email = wp_specialchars ( trim ( $_POST [ 'email' ]));
$new_user_firstname = wp_specialchars ( trim ( $_POST [ 'firstname' ]));
$new_user_lastname = wp_specialchars ( trim ( $_POST [ 'lastname' ]));
$new_user_uri = wp_specialchars ( trim ( $_POST [ 'uri' ]));
$errors = array ();
/* checking that username has been typed */
if ( $new_user_login == '' )
$errors [ 'user_login' ] = __ ( '<strong>ERROR</strong>: Please enter a username.' );
2003-12-07 20:28:41 -05:00
2005-07-12 11:53:13 -04:00
/* checking the password has been typed twice */
do_action ( 'check_passwords' , array ( $new_user_login , & $new_pass1 , & $new_pass2 ));
if ( $new_pass1 == '' || $new_pass2 == '' )
$errors [ 'pass' ] = __ ( '<strong>ERROR</strong>: Please enter your password twice.' );
2003-12-07 20:28:41 -05:00
2005-07-12 11:53:13 -04:00
/* checking the password has been typed twice the same */
if ( $new_pass1 != $new_pass2 )
$errors [ 'pass' ] = __ ( '<strong>ERROR</strong>: Please type the same password in the two password fields.' );
2003-12-07 20:28:41 -05:00
2005-07-12 11:53:13 -04:00
$new_user_nickname = $new_user_login ;
2003-12-07 20:28:41 -05:00
2005-07-12 11:53:13 -04:00
if ( username_exists ( $new_user_login ) )
$errors [ 'pass' ] = __ ( '<strong>ERROR</strong>: This username is already registered, please choose another one.' );
2004-04-30 00:41:47 -04:00
2005-07-12 11:53:13 -04:00
/* checking e-mail address */
if ( empty ( $new_user_email )) {
$errors [ 'user_email' ] = __ ( " <strong>ERROR</strong>: please type an e-mail address " );
} else if ( ! is_email ( $new_user_email )) {
$errors [ 'user_email' ] = __ ( " <strong>ERROR</strong>: the email address isn't correct " );
}
2003-12-07 20:28:41 -05:00
2005-07-12 11:53:13 -04:00
if ( count ( $errors ) == 0 ) {
$user_ID = create_user ( $new_user_login , $new_pass1 , $new_user_email , 0 );
update_usermeta ( $user_ID , 'first_name' , $new_user_firstname );
update_usermeta ( $user_ID , 'last_name' , $new_user_lastname );
update_usermeta ( $user_ID , 'first_name' , $new_user_firstname );
$user = new WP_User ( $user_ID );
$user -> set_role ( get_settings ( 'default_role' ));
$stars = '' ;
for ( $i = 0 ; $i < strlen ( $pass1 ); $i = $i + 1 )
$stars .= '*' ;
$user_login = stripslashes ( $new_user_login );
$message = sprintf ( __ ( 'New user registration on your blog %s:' ), get_settings ( 'blogname' )) . " \r \n \r \n " ;
$message .= sprintf ( __ ( 'Username: %s' ), $new_user_login ) . " \r \n \r \n " ;
$message .= sprintf ( __ ( 'E-mail: %s' ), $new_user_email ) . " \r \n " ;
@ wp_mail ( get_settings ( 'admin_email' ), sprintf ( __ ( '[%s] New User Registration' ), get_settings ( 'blogname' )), $message );
header ( 'Location: users.php?update=add' );
die ();
}
2003-12-07 20:28:41 -05:00
default :
2003-12-10 19:22:36 -05:00
include ( 'admin-header.php' );
2005-07-12 11:53:13 -04:00
$userids = $wpdb -> get_col ( " SELECT ID FROM $wpdb->users ; " );
foreach ( $userids as $userid ) {
$tmp_user = new WP_User ( $userid );
$roles = array_keys ( $tmp_user -> roles );
$role = $roles [ 0 ];
$roleclasses [ $role ][ $tmp_user -> data -> user_login ] = $tmp_user ;
}
2003-12-07 20:28:41 -05:00
?>
2004-07-21 03:23:45 -04:00
2005-07-12 11:53:13 -04:00
< ? php
if ( isset ( $_GET [ 'update' ])) :
switch ( $_GET [ 'update' ]) {
case 'del' :
?>
2005-08-07 21:13:22 -04:00
< div id = " message " class = " updated fade " >< p >< ? php _e ( 'User deleted.' ); ?> </p></div>
2005-07-12 11:53:13 -04:00
< ? php
break ;
case 'add' :
?>
2005-08-07 21:13:22 -04:00
< div id = " message " class = " updated fade " >< p >< ? php _e ( 'New user created.' ); ?> </p></div>
2005-07-12 11:53:13 -04:00
< ? php
break ;
case 'promote' :
?>
2005-08-07 21:13:22 -04:00
< div id = " message " class = " updated fade " >< p >< ? php _e ( 'Changed roles.' ); ?> </p></div>
2005-07-12 11:53:13 -04:00
< ? php
break ;
}
endif ;
if ( isset ( $errors ) ) : ?>
< div class = " error " >
< ul >
< ? php
foreach ( $errors as $error ) echo " <li> $error </li> " ;
?>
</ ul >
</ div >
< ? php
endif ;
?>
< form action = " " method = " post " name = " updateusers " id = " updateusers " >
2003-12-07 20:28:41 -05:00
< div class = " wrap " >
2005-07-12 11:53:13 -04:00
< h2 >< ? php _e ( 'User List by Role' ); ?> </h2>
2003-12-08 03:12:09 -05:00
< table cellpadding = " 3 " cellspacing = " 3 " width = " 100% " >
2005-07-12 11:53:13 -04:00
< ? php
foreach ( $roleclasses as $role => $roleclass ) {
ksort ( $roleclass );
?>
< tr >
< th colspan = " 8 " align = " left " >
< h3 >< ? php echo $wp_roles -> role_names [ $role ]; ?> </h3>
</ th >
2003-12-07 20:28:41 -05:00
< tr >
2004-04-25 00:24:06 -04:00
< th >< ? php _e ( 'ID' ) ?> </th>
2005-07-12 11:53:13 -04:00
< th >< ? php _e ( 'Username' ) ?> </th>
2004-04-25 00:24:06 -04:00
< th >< ? php _e ( 'Name' ) ?> </th>
< th >< ? php _e ( 'E-mail' ) ?> </th>
2004-05-05 04:27:43 -04:00
< th >< ? php _e ( 'Website' ) ?> </th>
2004-04-25 00:24:06 -04:00
< th >< ? php _e ( 'Posts' ) ?> </th>
2004-08-01 05:13:50 -04:00
< th >& nbsp ; </ th >
2003-12-07 20:28:41 -05:00
</ tr >
< ? php
2004-05-07 19:56:33 -04:00
$style = '' ;
2005-07-12 11:53:13 -04:00
foreach ( $roleclass as $user_object ) {
$user_data = & $user_object -> data ;
2003-12-07 20:28:41 -05:00
$email = $user_data -> user_email ;
$url = $user_data -> user_url ;
2004-06-17 20:22:09 -04:00
$short_url = str_replace ( 'http://' , '' , $url );
2003-12-07 20:28:41 -05:00
$short_url = str_replace ( 'www.' , '' , $short_url );
if ( '/' == substr ( $short_url , - 1 ))
$short_url = substr ( $short_url , 0 , - 1 );
if ( strlen ( $short_url ) > 35 )
$short_url = substr ( $short_url , 0 , 32 ) . '...' ;
2003-12-08 03:12:09 -05:00
$style = ( 'class="alternate"' == $style ) ? '' : 'class="alternate"' ;
2005-07-12 11:53:13 -04:00
$numposts = $wpdb -> get_var ( " SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = ' $user_data->ID ' and post_status = 'publish' " );
2004-04-25 00:24:06 -04:00
if ( 0 < $numposts ) $numposts = " <a href='edit.php?author= $user_data->ID ' title=' " . __ ( 'View posts' ) . " '> $numposts </a> " ;
2003-12-07 20:28:41 -05:00
echo "
2003-12-08 03:12:09 -05:00
< tr $style >
2005-07-12 11:53:13 -04:00
< td >< input type = 'checkbox' name = 'users[]' id = 'user_{$user_data->ID}' value = '{$user_data->ID}' /> < label for = 'user_{$user_data->ID}' > { $user_data -> ID } </ label ></ td >
< td >< label for = 'user_{$user_data->ID}' >< strong > $user_data -> user_login </ strong ></ label ></ td >
< td >< label for = 'user_{$user_data->ID}' > $user_data -> first_name $user_data -> last_name </ label ></ td >
2004-04-25 00:24:06 -04:00
< td >< a href = 'mailto:$email' title = '" . sprintf(__(' e - mail : % s '), $email) . "' > $email </ a ></ td >
2005-07-12 11:53:13 -04:00
< td >< a href = '$url' title = 'website: $url' > $short_url </ a ></ td > " ;
echo " <td align='right'> $numposts </td> " ;
2004-08-01 05:13:50 -04:00
echo '<td>' ;
2005-07-12 11:53:13 -04:00
if ( current_user_can ( 'edit_users' ))
2004-11-24 23:11:57 -05:00
echo " <a href='user-edit.php?user_id= $user_data->ID ' class='edit'> " . __ ( 'Edit' ) . " </a> " ;
2004-08-01 05:13:50 -04:00
echo '</td>' ;
2003-12-07 20:28:41 -05:00
echo '</tr>' ;
}
?>
< ? php
2005-07-12 11:53:13 -04:00
}
2003-12-07 20:28:41 -05:00
?>
2005-07-12 11:53:13 -04:00
</ table >
2004-09-21 19:36:27 -04:00
2005-07-12 11:53:13 -04:00
< h2 >< ? php _e ( 'Update Users' ); ?> </h2>
< ? php
$role_select = '<select name="new_role">' ;
foreach ( $wp_roles -> role_names as $role => $name ) {
$role_select .= " <option value= \" { $role } \" > { $name } </option> " ;
}
$role_select .= '</select>' ;
?>
< ul style = " list-style:none; " >
< li >< input type = " radio " name = " action " id = " action0 " value = " delete " > < label for = " action0 " >< ? php _e ( 'Delete checked users.' ); ?> </label></li>
< li >< input type = " radio " name = " action " id = " action1 " value = " promote " > < ? php echo sprintf ( __ ( '<label for="action1">Set the Role of checked users to:</label> %s' ), $role_select ); ?> </li>
</ ul >
< p class = " submit " >< input type = " submit " value = " <?php _e('Update »'); ?> " ></ p >
2003-12-07 20:28:41 -05:00
</ div >
2005-07-12 11:53:13 -04:00
</ form >
2003-12-07 20:28:41 -05:00
< div class = " wrap " >
2004-07-21 03:44:55 -04:00
< h2 >< ? php _e ( 'Add New User' ) ?> </h2>
2004-04-25 00:24:06 -04:00
< ? php printf ( __ ( '<p>Users can <a href="%s/wp-register.php">register themselves</a> or you can manually create users here.</p>' ), get_settings ( 'siteurl' )); ?>
2003-12-23 15:21:29 -05:00
< form action = " " method = " post " name = " adduser " id = " adduser " >
2004-05-05 04:27:43 -04:00
< table class = " editform " width = " 100% " cellspacing = " 2 " cellpadding = " 5 " >
2003-12-23 15:21:29 -05:00
< tr >
2004-05-05 04:27:43 -04:00
< th scope = " row " width = " 33% " >< ? php _e ( 'Nickname' ) ?>
2003-12-23 15:21:29 -05:00
< input name = " action " type = " hidden " id = " action " value = " adduser " /></ th >
2005-07-12 11:53:13 -04:00
< td width = " 66% " >< input name = " user_login " type = " text " id = " user_login " value = " <?php echo $new_user_login ; ?> " /></ td >
2003-12-23 15:21:29 -05:00
</ tr >
< tr >
2004-04-25 00:24:06 -04:00
< th scope = " row " >< ? php _e ( 'First Name' ) ?> </th>
2005-07-12 11:53:13 -04:00
< td >< input name = " firstname " type = " text " id = " firstname " value = " <?php echo $new_user_firstname ; ?> " /></ td >
2003-12-23 15:21:29 -05:00
</ tr >
< tr >
2004-04-25 00:24:06 -04:00
< th scope = " row " >< ? php _e ( 'Last Name' ) ?> </th>
2005-07-12 11:53:13 -04:00
< td >< input name = " lastname " type = " text " id = " lastname " value = " <?php echo $new_user_lastname ; ?> " /></ td >
2003-12-23 15:21:29 -05:00
</ tr >
< tr >
2004-05-05 04:27:43 -04:00
< th scope = " row " >< ? php _e ( 'E-mail' ) ?> </th>
2005-07-12 11:53:13 -04:00
< td >< input name = " email " type = " text " id = " email " value = " <?php echo $new_user_email ; ?> " /></ td >
2003-12-23 15:21:29 -05:00
</ tr >
< tr >
2004-05-05 04:27:43 -04:00
< th scope = " row " >< ? php _e ( 'Website' ) ?> </th>
2005-07-12 11:53:13 -04:00
< td >< input name = " uri " type = " text " id = " uri " value = " <?php echo $new_user_uri ; ?> " /></ td >
2003-12-23 15:21:29 -05:00
</ tr >
2005-03-09 17:49:42 -05:00
< ? php
$show_password_fields = apply_filters ( 'show_password_fields' , true );
if ( $show_password_fields ) :
?>
2003-12-23 15:21:29 -05:00
< tr >
2004-04-25 00:24:06 -04:00
< th scope = " row " >< ? php _e ( 'Password (twice)' ) ?> </th>
2004-01-21 17:44:28 -05:00
< td >< input name = " pass1 " type = " password " id = " pass1 " />
2003-12-23 15:21:29 -05:00
< br />
2004-01-21 17:44:28 -05:00
< input name = " pass2 " type = " password " id = " pass2 " /></ td >
2003-12-23 15:21:29 -05:00
</ tr >
2005-03-09 17:49:42 -05:00
< ? php endif ; ?>
2003-12-23 15:21:29 -05:00
</ table >
2004-04-28 00:59:54 -04:00
< p class = " submit " >
2004-06-11 14:23:12 -04:00
< input name = " adduser " type = " submit " id = " adduser " value = " <?php _e('Add User') ?> » " />
2003-12-23 15:21:29 -05:00
</ p >
</ form >
2003-12-07 20:28:41 -05:00
</ div >
< ? php
break ;
}
2004-08-22 19:24:50 -04:00
2003-12-10 19:22:36 -05:00
include ( 'admin-footer.php' );
2004-12-24 15:55:36 -05:00
?>