Ticket #15001: combine-user-error-checking.diff
File combine-user-error-checking.diff, 6.3 KB (added by , 13 years ago) |
---|
-
wp-login.php
297 297 * @return int|WP_Error Either user's ID or error on failure. 298 298 */ 299 299 function register_new_user( $user_login, $user_email ) { 300 $errors = new WP_Error(); 300 $data = check_user_for_errors( $user_login, $user_email ); 301 // returns $errors, $user_login, $user_email 302 extract( $data ); 301 303 302 $sanitized_user_login = sanitize_user( $user_login ); 303 $user_email = apply_filters( 'user_registration_email', $user_email ); 304 do_action( 'register_post', $user_login, $user_email, $errors ); 304 305 305 // Check the username 306 if ( $sanitized_user_login == '' ) { 307 $errors->add( 'empty_username', __( '<strong>ERROR</strong>: Please enter a username.' ) ); 308 } elseif ( ! validate_username( $user_login ) ) { 309 $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username.' ) ); 310 $sanitized_user_login = ''; 311 } elseif ( username_exists( $sanitized_user_login ) ) { 312 $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered, please choose another one.' ) ); 313 } 306 $errors = apply_filters( 'registration_errors', $errors, $user_login, $user_email ); 314 307 315 // Check the e-mail address316 if ( $user_email == '' ) {317 $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please type your e-mail address.' ) );318 } elseif ( ! is_email( $user_email ) ) {319 $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn’t correct.' ) );320 $user_email = '';321 } elseif ( email_exists( $user_email ) ) {322 $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) );323 }324 325 do_action( 'register_post', $sanitized_user_login, $user_email, $errors );326 327 $errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email );328 329 308 if ( $errors->get_error_code() ) 330 309 return $errors; 331 310 332 311 $user_pass = wp_generate_password( 12, false); 333 $user_id = wp_create_user( $ sanitized_user_login, $user_pass, $user_email );312 $user_id = wp_create_user( $user_login, $user_pass, $user_email ); 334 313 if ( ! $user_id ) { 335 314 $errors->add( 'registerfail', sprintf( __( '<strong>ERROR</strong>: Couldn’t register you... please contact the <a href="mailto:%s">webmaster</a> !' ), get_option( 'admin_email' ) ) ); 336 315 return $errors; … … 734 713 <?php 735 714 login_footer(); 736 715 break; 737 } // end action switch 716 } // end action switch 717 No newline at end of file -
wp-includes/user.php
1264 1264 $user_pass = wp_hash_password($user_pass); 1265 1265 } 1266 1266 1267 $ user_login = sanitize_user($user_login, true);1268 $user_login = apply_filters('pre_user_login', $user_login);1267 $data = check_user_for_errors( $user_login, $user_email, $update ); 1268 extract( $data ); 1269 1269 1270 //Remove any non-printable chars from the login string to see if we have ended up with an empty username 1271 $user_login = trim($user_login); 1272 1273 if ( empty($user_login) ) 1274 return new WP_Error('empty_user_login', __('Cannot create a user with an empty login name.') ); 1275 1276 if ( !$update && username_exists( $user_login ) ) 1277 return new WP_Error('existing_user_login', __('This username is already registered.') ); 1278 1270 if ( $errors->get_error_code() ) 1271 return $errors; 1272 1279 1273 if ( empty($user_nicename) ) 1280 1274 $user_nicename = sanitize_title( $user_login ); 1281 1275 $user_nicename = apply_filters('pre_user_nicename', $user_nicename); … … 1284 1278 $user_url = ''; 1285 1279 $user_url = apply_filters('pre_user_url', $user_url); 1286 1280 1287 if ( empty($user_email) )1288 $user_email = '';1289 $user_email = apply_filters('pre_user_email', $user_email);1290 1291 if ( !$update && ! defined( 'WP_IMPORTING' ) && email_exists($user_email) )1292 return new WP_Error('existing_user_email', __('This email address is already registered.') );1293 1294 1281 if ( empty($display_name) ) 1295 1282 $display_name = $user_login; 1296 1283 $display_name = apply_filters('pre_user_display_name', $display_name); … … 1494 1481 ); 1495 1482 return apply_filters( 'user_contactmethods', $user_contactmethods, $user ); 1496 1483 } 1484 1485 /** 1486 * Combines error_checking code from wp_insert_user and register_new_user 1487 * 1488 * @since 3.5.0 1489 * 1490 * @param string $user_login The user's login 1491 * @param string $user_email The user's email address 1492 * @param bool $update Whether the data is part of an update for an existing user 1493 * @return array Data is meant to have extract() called on it 1494 */ 1495 function check_user_for_errors( $user_login, $user_email, $update = false ) { 1496 $errors = new WP_Error(); 1497 1498 $user_login = apply_filters('pre_user_login', sanitize_user( $user_login, true ) ); 1499 $user_email = apply_filters( 'user_registration_email', $user_email ); 1500 1501 $sanitized_user_login = trim( $user_login ); 1502 1503 // Check the username 1504 if ( empty( $sanitized_user_login ) ) { 1505 $errors->add( 'empty_username', __( '<strong>ERROR</strong>: Please enter a username.' ) ); 1506 } elseif ( ! validate_username( $user_login ) ) { 1507 $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username.' ) ); 1508 $sanitized_user_login = ''; 1509 } elseif ( ! $update && username_exists( $sanitized_user_login ) ) { 1510 $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered, please choose another one.' ) ); 1511 } 1512 1513 $sanitized_user_email = apply_filters( 'pre_user_email', $user_email ); 1514 // Check the e-mail address 1515 if ( empty( $sanitized_user_email ) ) { 1516 $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please type your e-mail address.' ) ); 1517 } elseif ( ! is_email( $sanitized_user_email ) ) { 1518 $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn’t correct.' ) ); 1519 $user_email = ''; 1520 } elseif ( ! $update && ! defined( 'WP_IMPORTING' ) && email_exists( $sanitized_user_email ) ) { 1521 $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) ); 1522 } 1523 1524 return array( 'errors' => $errors, 'user_email' => $sanitized_user_email, 'user_login' => $sanitized_user_login ); 1525 }