/** * Validate a user name and email address when creating a new user. * * @since 1.2.2 * * @param string $user_name Username to validate. * @param string $user_email Email address to validate. * @return array Results of user validation including errors, if any. */ function bp_core_validate_user_signup($user_name, $user_email) { // Make sure illegal names include BuddyPress slugs and values. bp_core_flush_illegal_names(); // WordPress Multisite has its own validation. Use it, so that we // properly mirror restrictions on username, etc. if (function_exists('wpmu_validate_user_signup')) { $result = wpmu_validate_user_signup($user_name, $user_email); // When not running Multisite, we perform our own validation. What // follows reproduces much of the logic of wpmu_validate_user_signup(), // minus the multisite-specific restrictions on user_login. } else { $errors = new WP_Error(); /** * Filters the username before being validated. * * @since 1.5.5 * * @param string $user_name Username to validate. */ $user_name = apply_filters('pre_user_login', $user_name); // User name can't be empty. if (empty($user_name)) { $errors->add('user_name', __('Please enter a username', 'buddypress')); } // User name can't be on the blacklist. $illegal_names = get_site_option('illegal_names'); if (in_array($user_name, (array) $illegal_names)) { $errors->add('user_name', __('That username is not allowed', 'buddypress')); } // User name must pass WP's validity check. if (!validate_username($user_name)) { $errors->add('user_name', __('Usernames can contain only letters, numbers, ., -, and @', 'buddypress')); } // Minimum of 4 characters. if (strlen($user_name) < 4) { $errors->add('user_name', __('Username must be at least 4 characters', 'buddypress')); } // No underscores. @todo Why not? if (false !== strpos(' ' . $user_name, '_')) { $errors->add('user_name', __('Sorry, usernames may not contain the character "_"!', 'buddypress')); } // No usernames that are all numeric. @todo Why? $match = array(); preg_match('/[0-9]*/', $user_name, $match); if ($match[0] == $user_name) { $errors->add('user_name', __('Sorry, usernames must have letters too!', 'buddypress')); } // Check into signups. $signups = BP_Signup::get(array('user_login' => $user_name)); $signup = isset($signups['signups']) && !empty($signups['signups'][0]) ? $signups['signups'][0] : false; // Check if the username has been used already. if (username_exists($user_name) || !empty($signup)) { $errors->add('user_name', __('Sorry, that username already exists!', 'buddypress')); } // Validate the email address and process the validation results into // error messages. $validate_email = bp_core_validate_email_address($user_email); bp_core_add_validation_error_messages($errors, $validate_email); // Assemble the return array. $result = array('user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors); // Apply WPMU legacy filter. $result = apply_filters('wpmu_validate_user_signup', $result); } /** * Filters the result of the user signup validation. * * @since 1.2.2 * * @param array $result Results of user validation including errors, if any. */ return apply_filters('bp_core_validate_user_signup', $result); }
/** * Validate a user name and email address when creating a new user. * * @param string $user_name Username to validate * @param string $user_email Email address to validate * @return array Results of user validation including errors, if any */ function bp_core_validate_user_signup($user_name, $user_email) { $errors = new WP_Error(); // Apply any user_login filters added by BP or other plugins before validating $user_name = apply_filters('pre_user_login', $user_name); if (empty($user_name)) { $errors->add('user_name', __('Please enter a username', 'buddypress')); } // Make sure illegal names include BuddyPress slugs and values bp_core_flush_illegal_names(); $illegal_names = get_site_option('illegal_names'); if (in_array($user_name, (array) $illegal_names)) { $errors->add('user_name', __('That username is not allowed', 'buddypress')); } if (!validate_username($user_name)) { $errors->add('user_name', __('Usernames can contain only letters, numbers, ., -, *, and @', 'buddypress')); } if (strlen($user_name) < 4) { $errors->add('user_name', __('Username must be at least 4 characters', 'buddypress')); } if (strpos(' ' . $user_name, '_') != false) { $errors->add('user_name', __('Sorry, usernames may not contain the character "_"!', 'buddypress')); } // Is the user_name 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!', 'buddypress')); } // Check if the username has been used already. if (username_exists($user_name)) { $errors->add('user_name', __('Sorry, that username already exists!', 'buddypress')); } // Validate the email address and process the validation results into // error messages $validate_email = bp_core_validate_email_address($user_email); bp_core_add_validation_error_messages($errors, $validate_email); // Assemble the return array $result = array('user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors); // Apply WPMU legacy filter $result = apply_filters('wpmu_validate_user_signup', $result); return apply_filters('bp_core_validate_user_signup', $result); }