Definition:
function wpmu_validate_user_signup($user_name, $user_email) {}
Processes new user registrations.
Checks the data provided by the user during signup. Verifies the validity and uniqueness of user names and user email addresses, and checks email addresses against admin-provided domain whitelists and blacklists.
Parameters
- string $user_name: The login name provided by the user.
- string $user_email: The email provided by the user.
Return values
returns:Contains username, email, and error messages.
Defined filters
- wpmu_validate_user_signup
apply_filters('wpmu_validate_user_signup', $result)
Source code
function wpmu_validate_user_signup($user_name, $user_email) { global $wpdb; $errors = new WP_Error(); $orig_username = $user_name; $user_name = preg_replace( '/\s+/', '', sanitize_user( $user_name, true ) ); $maybe = array(); preg_match( '/[a-z0-9]+/', $user_name, $maybe ); if ( $user_name != $orig_username || $user_name != $maybe[0] ) { $errors->add( 'user_name', __( 'Only lowercase letters (a-z) and numbers are allowed.' ) ); $user_name = $orig_username; } $user_email = sanitize_email( $user_email ); if ( empty( $user_name ) ) $errors->add('user_name', __('Please enter a username')); $illegal_names = get_site_option( 'illegal_names' ); if ( is_array( $illegal_names ) == false ) { $illegal_names = array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' ); add_site_option( 'illegal_names', $illegal_names ); } if ( in_array( $user_name, $illegal_names ) == true ) $errors->add('user_name', __('That username is not allowed')); if ( is_email_address_unsafe( $user_email ) ) $errors->add('user_email', __('You cannot use that email address to signup. We are having problems with them blocking some of our email. Please use another email provider.')); if ( strlen( $user_name ) < 4 ) $errors->add('user_name', __('Username must be at least 4 characters')); if ( strpos( ' ' . $user_name, '_' ) != false ) $errors->add( 'user_name', __( 'Sorry, usernames may not contain the character “_”!' ) ); // all numeric? $match = array(); preg_match( '/[0-9]*/', $user_name, $match ); if ( $match[0] == $user_name ) $errors->add('user_name', __('Sorry, usernames must have letters too!')); if ( !is_email( $user_email ) ) $errors->add('user_email', __('Please enter a correct email address')); $limited_email_domains = get_site_option( 'limited_email_domains' ); if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) { $emaildomain = substr( $user_email, 1 + strpos( $user_email, '@' ) ); if ( in_array( $emaildomain, $limited_email_domains ) == false ) $errors->add('user_email', __('Sorry, that email address is not allowed!')); } // Check if the username has been used already. if ( username_exists($user_name) ) $errors->add('user_name', __('Sorry, that username already exists!')); // Check if the email address has been used already. if ( email_exists($user_email) ) $errors->add('user_email', __('Sorry, that email address is already used!')); // Has someone already signed up for this username? $signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->signups WHERE user_login = %s", $user_name) ); if ( $signup != null ) { $registered_at = mysql2date('U', $signup->registered); $now = current_time( 'timestamp', true ); $diff = $now - $registered_at; // If registered more than two days ago, cancel registration and let this signup go through. if ( $diff > 172800 ) $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->signups WHERE user_login = %s", $user_name) ); else $errors->add('user_name', __('That username is currently reserved but may be available in a couple of days.')); if ( $signup->active == 0 && $signup->user_email == $user_email ) $errors->add('user_email_used', __('username and email used')); } $signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->signups WHERE user_email = %s", $user_email) ); if ( $signup != null ) { $diff = current_time( 'timestamp', true ) - mysql2date('U', $signup->registered); // If registered more than two days ago, cancel registration and let this signup go through. if ( $diff > 172800 ) $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->signups WHERE user_email = %s", $user_email) ); else $errors->add('user_email', __('That email address has already been used. Please check your inbox for an activation email. It will become available in a couple of days if you do nothing.')); } $result = array('user_name' => $user_name, 'orig_username' => $orig_username, 'user_email' => $user_email, 'errors' => $errors); return apply_filters('wpmu_validate_user_signup', $result); }
3405
No comments yet... Be the first to leave a reply!