2008-11-11 20:47:22 +01:00
< ? php
/**
* New User Administration Panel .
*
* @ package WordPress
* @ subpackage Administration
*/
/** WordPress Administration Bootstrap */
require_once ( 'admin.php' );
if ( ! current_user_can ( 'create_users' ) )
wp_die ( __ ( 'Cheatin’ uh?' ));
2010-01-19 19:11:33 +01:00
if ( is_multisite () && ! get_site_option ( 'add_new_users' ) )
wp_die ( __ ( 'Page disabled by the administrator' ) );
2008-11-11 20:47:22 +01:00
/** WordPress Registration API */
require_once ( ABSPATH . WPINC . '/registration.php' );
2010-01-14 03:02:19 +01:00
if ( is_multisite () ) {
function admin_created_user_email ( $text ) {
return sprintf ( __ ( " Hi,
You 've been invited to join ' % s ' at
% s as a % s .
If you do not want to join this blog please ignore
this email . This invitation will expire in a few days .
Please click the following link to activate your user account :
2010-02-13 11:35:10 +01:00
%% s " ), get_bloginfo('name'), site_url(), esc_html( $_REQUEST [ 'role' ] ) );
2010-01-14 03:02:19 +01:00
}
add_filter ( 'wpmu_signup_user_notification_email' , 'admin_created_user_email' );
function admin_created_user_subject ( $text ) {
return " [ " . get_bloginfo ( 'name' ) . " ] Your blog invite " ;
}
}
2008-11-11 20:47:22 +01:00
if ( isset ( $_REQUEST [ 'action' ]) && 'adduser' == $_REQUEST [ 'action' ] ) {
check_admin_referer ( 'add-user' );
2010-01-14 03:02:19 +01:00
if ( ! is_multisite () ) {
$user_id = add_user ();
2008-11-15 00:01:16 +01:00
2010-01-14 03:02:19 +01:00
if ( is_wp_error ( $user_id ) ) {
$add_user_errors = $user_id ;
} else {
2010-04-16 16:54:44 +02:00
if ( current_user_can ( 'edit_users' ) ) {
$new_user_login = apply_filters ( 'pre_user_login' , sanitize_user ( stripslashes ( $_REQUEST [ 'user_login' ]), true ));
$redirect = 'users.php?usersearch=' . urlencode ( $new_user_login ) . '&update=add' . '#user-' . $user_id ;
} else {
$redirect = add_query_arg ( 'update' , 'add' , 'user-new.php' );
}
wp_redirect ( $redirect );
2010-01-14 03:02:19 +01:00
die ();
}
2008-11-15 00:01:16 +01:00
} else {
2010-01-14 03:02:19 +01:00
$user_login = preg_replace ( " / \ s+/ " , '' , sanitize_user ( $_REQUEST [ 'user_login' ], true ) );
$user_details = $wpdb -> get_row ( $wpdb -> prepare ( " SELECT * FROM { $wpdb -> users } WHERE user_login = %s AND user_email = %s " , $user_login , $_REQUEST [ 'email' ] ) );
2010-01-18 21:34:48 +01:00
if ( $user_details ) {
2010-01-14 03:02:19 +01:00
// Adding an existing user to this blog
2010-02-13 11:35:10 +01:00
$new_user_email = esc_html ( trim ( $_REQUEST [ 'email' ]));
2010-01-14 03:02:19 +01:00
$redirect = 'user-new.php' ;
$username = $user_details -> user_login ;
$user_id = $user_details -> ID ;
2010-01-20 22:58:13 +01:00
if ( ( $username != null && ! is_super_admin ( $user_id ) ) && ( array_key_exists ( $blog_id , get_blogs_of_user ( $user_id )) ) ) {
2010-01-14 03:02:19 +01:00
$redirect = add_query_arg ( array ( 'update' => 'addexisting' ), 'user-new.php' );
} else {
2010-01-20 22:58:13 +01:00
if ( isset ( $_POST [ 'noconfirmation' ] ) && is_super_admin () ) {
2010-01-14 03:02:19 +01:00
add_existing_user_to_blog ( array ( 'user_id' => $user_id , 'role' => $_REQUEST [ 'role' ] ) );
$redirect = add_query_arg ( array ( 'update' => 'addnoconfirmation' ), 'user-new.php' );
} else {
$newuser_key = substr ( md5 ( $user_id ), 0 , 5 );
add_option ( 'new_user_' . $newuser_key , array ( 'user_id' => $user_id , 'email' => $user_details -> user_email , 'role' => $_REQUEST [ 'role' ] ) );
$message = __ ( " Hi, \n \n You have been invited to join '%s' at \n %s as a %s. \n Please click the following link to confirm the invite: \n %s \n " );
wp_mail ( $new_user_email , sprintf ( __ ( '[%s] Joining confirmation' ), get_option ( 'blogname' ) ), sprintf ( $message , get_option ( 'blogname' ), site_url (), $_REQUEST [ 'role' ], site_url ( " /newbloguser/ $newuser_key / " )));
$redirect = add_query_arg ( array ( 'update' => 'add' ), 'user-new.php' );
}
}
wp_redirect ( $redirect );
die ();
} else {
// Adding a new user to this blog
$user_details = wpmu_validate_user_signup ( $_REQUEST [ 'user_login' ], $_REQUEST [ 'email' ] );
unset ( $user_details [ 'errors' ] -> errors [ 'user_email_used' ] );
if ( is_wp_error ( $user_details [ 'errors' ] ) && ! empty ( $user_details [ 'errors' ] -> errors ) ) {
$add_user_errors = $user_details [ 'errors' ];
} else {
$new_user_login = apply_filters ( 'pre_user_login' , sanitize_user ( stripslashes ( $_REQUEST [ 'user_login' ]), true ));
2010-02-26 22:13:24 +01:00
if ( isset ( $_POST [ 'noconfirmation' ] ) && is_super_admin () ) {
2010-03-02 12:39:08 +01:00
add_filter ( 'wpmu_signup_user_notification' , '__return_false' ); // Disable confirmation email
2010-01-14 03:02:19 +01:00
}
wpmu_signup_user ( $new_user_login , $_REQUEST [ 'email' ], array ( 'add_to_blog' => $wpdb -> blogid , 'new_role' => $_REQUEST [ 'role' ] ) );
2010-02-26 22:13:24 +01:00
if ( isset ( $_POST [ 'noconfirmation' ] ) && is_super_admin () ) {
2010-01-14 03:02:19 +01:00
$key = $wpdb -> get_var ( $wpdb -> prepare ( " SELECT activation_key FROM { $wpdb -> signups } WHERE user_login = %s AND user_email = %s " , $new_user_login , $_REQUEST [ 'email' ] ) );
wpmu_activate_signup ( $key );
$redirect = add_query_arg ( array ( 'update' => 'addnoconfirmation' ), 'user-new.php' );
} else {
$redirect = add_query_arg ( array ( 'update' => 'newuserconfimation' ), 'user-new.php' );
}
wp_redirect ( $redirect );
die ();
}
}
2008-11-11 20:47:22 +01:00
}
}
$title = __ ( 'Add New User' );
$parent_file = 'users.php' ;
2009-01-12 14:43:17 +01:00
wp_enqueue_script ( 'wp-ajax-response' );
2009-05-16 08:29:10 +02:00
wp_enqueue_script ( 'user-profile' );
wp_enqueue_script ( 'password-strength-meter' );
2008-11-11 20:47:22 +01:00
require_once ( 'admin-header.php' );
2010-04-16 16:54:44 +02:00
if ( isset ( $_GET [ 'update' ]) ) {
$messages = array ();
if ( is_multisite () ) {
switch ( $_GET [ 'update' ] ) {
case " newuserconfimation " :
$messages [] = __ ( 'Invitation email sent to new user. A confirmation link must be clicked before their account is created.' );
break ;
case " add " :
$messages [] = __ ( 'Invitation email sent to user. A confirmation link must be clicked for them to be added to your site.' );
break ;
case " addnoconfirmation " :
$messages [] = __ ( 'User has been added to your site.' );
break ;
case " addexisting " :
$messages [] = __ ( 'That user is already a member of this site.' );
break ;
}
} else {
if ( 'add' == $_GET [ 'update' ] )
$messages [] = __ ( 'User added.' );
2010-01-14 03:02:19 +01:00
}
}
2008-11-11 20:47:22 +01:00
?>
< div class = " wrap " >
2008-11-26 14:51:25 +01:00
< ? php screen_icon (); ?>
2008-11-11 20:47:22 +01:00
< h2 id = " add-new-user " >< ? php _e ( 'Add New User' ) ?> </h2>
< ? php if ( isset ( $errors ) && is_wp_error ( $errors ) ) : ?>
< div class = " error " >
< ul >
< ? php
foreach ( $errors -> get_error_messages () as $err )
echo " <li> $err </li> \n " ;
?>
</ ul >
</ div >
< ? php endif ;
2010-04-16 16:54:44 +02:00
if ( ! empty ( $messages ) ) {
2008-11-11 20:47:22 +01:00
foreach ( $messages as $msg )
2010-04-16 16:54:44 +02:00
echo '<div id="message" class="updated"><p>' . $msg . '</p></div>' ;
2008-11-11 20:47:22 +01:00
} ?>
< ? php if ( isset ( $add_user_errors ) && is_wp_error ( $add_user_errors ) ) : ?>
< div class = " error " >
< ? php
foreach ( $add_user_errors -> get_error_messages () as $message )
echo " <p> $message </p> " ;
?>
</ div >
< ? php endif ; ?>
< div id = " ajax-response " ></ div >
< ? php
2010-01-14 03:02:19 +01:00
if ( ! is_multisite () ) {
2008-11-11 20:47:22 +01:00
if ( get_option ( 'users_can_register' ) )
echo '<p>' . sprintf ( __ ( 'Users can <a href="%1$s">register themselves</a> or you can manually create users here.' ), site_url ( 'wp-register.php' )) . '</p>' ;
else
echo '<p>' . sprintf ( __ ( 'Users cannot currently <a href="%1$s">register themselves</a>, but you can manually create users here.' ), admin_url ( 'options-general.php#users_can_register' )) . '</p>' ;
2010-01-14 03:02:19 +01:00
} else {
echo '<p>' . __ ( 'You can add new users to your blog in two ways:' ) . '<ol><li> ' . __ ( 'Enter the username and email address of an existing user on this site.' ) . '</li><li> ' . __ ( 'Enter the username and the email address of a person who is not already a member of this site. Choose the username carefully, it cannot be changed.' ) . '</li></ol></p>' ;
echo '<p>' . __ ( 'That person will be sent an email asking them to click a link confirming the invite. New users will then be sent an email with a randomly generated password and a login link.' ) . '</p>' ;
}
2008-11-11 20:47:22 +01:00
?>
2010-04-16 15:57:57 +02:00
< form action = " #add-new-user " method = " post " name = " adduser " id = " adduser " class = " add:users: validate " < ? php do_action ( 'user_new_form_tag' ); ?> >
2008-11-11 20:47:22 +01:00
< ? php wp_nonce_field ( 'add-user' ) ?>
2008-11-15 00:01:16 +01:00
< ? php
//Load up the passed data, else set to a default.
foreach ( array ( 'user_login' => 'login' , 'first_name' => 'firstname' , 'last_name' => 'lastname' ,
'email' => 'email' , 'url' => 'uri' , 'role' => 'role' ) as $post_field => $var ) {
$var = " new_user_ $var " ;
if ( ! isset ( $$var ) )
$$var = isset ( $_POST [ $post_field ]) ? stripslashes ( $_POST [ $post_field ]) : '' ;
}
2009-05-14 00:35:17 +02:00
$new_user_send_password = ! $_POST || isset ( $_POST [ 'send_password' ]);
2008-11-15 00:01:16 +01:00
?>
2008-11-11 20:47:22 +01:00
< table class = " form-table " >
< tr class = " form-field form-required " >
2009-05-14 19:01:04 +02:00
< th scope = " row " >< label for = " user_login " >< ? php _e ( 'Username' ); ?> <span class="description"><?php _e('(required)'); ?></span></label>
< input name = " action " type = " hidden " id = " action " value = " adduser " /></ th >
< td >< input name = " user_login " type = " text " id = " user_login " value = " <?php echo esc_attr( $new_user_login ); ?> " aria - required = " true " /></ td >
2008-11-11 20:47:22 +01:00
</ tr >
2010-01-20 22:58:13 +01:00
< tr class = " form-field form-required " >
< th scope = " row " >< label for = " email " >< ? php _e ( 'E-mail' ); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
< td >< input name = " email " type = " text " id = " email " value = " <?php echo esc_attr( $new_user_email ); ?> " /></ td >
</ tr >
< ? php if ( ! is_multisite () ) { ?>
2008-11-11 20:47:22 +01:00
< tr class = " form-field " >
< th scope = " row " >< label for = " first_name " >< ? php _e ( 'First Name' ) ?> </label></th>
2009-05-05 21:43:53 +02:00
< td >< input name = " first_name " type = " text " id = " first_name " value = " <?php echo esc_attr( $new_user_firstname ); ?> " /></ td >
2008-11-11 20:47:22 +01:00
</ tr >
< tr class = " form-field " >
< th scope = " row " >< label for = " last_name " >< ? php _e ( 'Last Name' ) ?> </label></th>
2009-05-05 21:43:53 +02:00
< td >< input name = " last_name " type = " text " id = " last_name " value = " <?php echo esc_attr( $new_user_lastname ); ?> " /></ td >
2008-11-11 20:47:22 +01:00
</ tr >
< tr class = " form-field " >
< th scope = " row " >< label for = " url " >< ? php _e ( 'Website' ) ?> </label></th>
2009-05-05 21:43:53 +02:00
< td >< input name = " url " type = " text " id = " url " class = " code " value = " <?php echo esc_attr( $new_user_uri ); ?> " /></ td >
2008-11-11 20:47:22 +01:00
</ tr >
< ? php if ( apply_filters ( 'show_password_fields' , true ) ) : ?>
< tr class = " form-field form-required " >
2010-01-21 22:37:43 +01:00
< th scope = " row " >< label for = " pass1 " >< ? php _e ( 'Password' ); ?> <span class="description"><?php /* translators: password input field */_e('(twice, required)'); ?></span></label></th>
2008-11-11 20:47:22 +01:00
< td >< input name = " pass1 " type = " password " id = " pass1 " autocomplete = " off " />
< br />
2009-05-16 23:51:32 +02:00
< input name = " pass2 " type = " password " id = " pass2 " autocomplete = " off " />
< br />
2009-05-16 08:29:10 +02:00
< div id = " pass-strength-result " >< ? php _e ( 'Strength indicator' ); ?> </div>
< 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 ! " ? $ % ^ & ).' ); ?> </p>
</ td >
2008-11-11 20:47:22 +01:00
</ tr >
2009-05-14 00:35:17 +02:00
< tr >
< th scope = " row " >< label for = " send_password " >< ? php _e ( 'Send Password?' ) ?> </label></th>
< td >< label for = " send_password " >< input type = " checkbox " name = " send_password " id = " send_password " < ? php checked ( $new_user_send_password , true ); ?> /> <?php _e('Send this password to the new user by email.'); ?></label></td>
</ tr >
2008-11-11 20:47:22 +01:00
< ? php endif ; ?>
2010-01-20 22:58:13 +01:00
< ? php } // !is_multisite ?>
2008-11-11 20:47:22 +01:00
< tr class = " form-field " >
< th scope = " row " >< label for = " role " >< ? php _e ( 'Role' ); ?> </label></th>
< td >< select name = " role " id = " role " >
< ? php
if ( ! $new_user_role )
2008-11-15 00:01:16 +01:00
$new_user_role = ! empty ( $current_role ) ? $current_role : get_option ( 'default_role' );
2008-11-11 20:47:22 +01:00
wp_dropdown_roles ( $new_user_role );
?>
</ select >
</ td >
</ tr >
2010-01-14 03:02:19 +01:00
< ? php if ( is_multisite () && is_super_admin () ) { ?>
2010-01-20 22:58:13 +01:00
< tr >
2010-01-14 03:02:19 +01:00
< th scope = " row " >< label for = " noconfirmation " >< ? php _e ( 'Skip Confirmation Email' ) ?> </label></th>
2010-01-20 22:58:13 +01:00
< td >< label for = " noconfirmation " >< input type = " checkbox " name = " noconfirmation " id = " noconfirmation " value = " 1 " /> < ? php _e ( 'Site administrators can add a user without sending the confirmation email.' ); ?> </label></td>
2010-01-14 03:02:19 +01:00
</ tr >
< ? php } ?>
2008-11-11 20:47:22 +01:00
</ table >
< p class = " submit " >
2009-05-05 21:43:53 +02:00
< input name = " adduser " type = " submit " id = " addusersub " class = " button-primary " value = " <?php esc_attr_e('Add User') ?> " />
2008-11-11 20:47:22 +01:00
</ p >
</ form >
</ div >
< ? php
include ( 'admin-footer.php' );
2009-05-14 19:01:04 +02:00
?>