/** * Donate Form Validate New User * * @access private * @since 1.0 * @return array */ function give_purchase_form_validate_new_user() { $registering_new_user = false; $form_id = isset($_POST['give-form-id']) ? $_POST['give-form-id'] : ''; // Start an empty array to collect valid user data $valid_user_data = array('user_id' => -1, 'user_first' => isset($_POST['give_first']) ? sanitize_text_field($_POST['give_first']) : '', 'user_last' => isset($_POST['give_last']) ? sanitize_text_field($_POST['give_last']) : ''); // Check the new user's credentials against existing ones $user_login = isset($_POST['give_user_login']) ? trim($_POST['give_user_login']) : false; $user_email = isset($_POST['give_email']) ? trim($_POST['give_email']) : false; $user_pass = isset($_POST['give_user_pass']) ? trim($_POST['give_user_pass']) : false; $pass_confirm = isset($_POST['give_user_pass_confirm']) ? trim($_POST['give_user_pass_confirm']) : false; // Loop through required fields and show error messages foreach (give_purchase_form_required_fields($form_id) as $field_name => $value) { if (in_array($value, give_purchase_form_required_fields($form_id)) && empty($_POST[$field_name])) { give_set_error($value['error_id'], $value['error_message']); } } // Check if we have an username to register if ($user_login && strlen($user_login) > 0) { $registering_new_user = true; // We have an user name, check if it already exists if (username_exists($user_login)) { // Username already registered give_set_error('username_unavailable', esc_html__('Username already taken.', 'give')); // Check if it's valid } else { if (!give_validate_username($user_login)) { // Invalid username if (is_multisite()) { give_set_error('username_invalid', esc_html__('Invalid username. Only lowercase letters (a-z) and numbers are allowed.', 'give')); } else { give_set_error('username_invalid', esc_html__('Invalid username.', 'give')); } } else { // All the checks have run and it's good to go $valid_user_data['user_login'] = $user_login; } } } elseif (give_logged_in_only($form_id)) { give_set_error('registration_required', esc_html__('You must register or login to complete your donation.', 'give')); } // Check if we have an email to verify if ($user_email && strlen($user_email) > 0) { // Validate email if (!is_email($user_email)) { give_set_error('email_invalid', esc_html__('Sorry, that email is invalid.', 'give')); // Check if email exists } else { if (email_exists($user_email) && $registering_new_user) { give_set_error('email_used', esc_html__('Sorry, that email already active for another user.', 'give')); } else { // All the checks have run and it's good to go $valid_user_data['user_email'] = $user_email; } } } else { // No email give_set_error('email_empty', esc_html__('Enter an email.', 'give')); } // Check password if ($user_pass && $pass_confirm) { // Verify confirmation matches if ($user_pass != $pass_confirm) { // Passwords do not match give_set_error('password_mismatch', esc_html__('Passwords don\'t match.', 'give')); } else { // All is good to go $valid_user_data['user_pass'] = $user_pass; } } else { // Password or confirmation missing if (!$user_pass && $registering_new_user) { // The password is invalid give_set_error('password_empty', esc_html__('Enter a password.', 'give')); } else { if (!$pass_confirm && $registering_new_user) { // Confirmation password is invalid give_set_error('confirmation_empty', esc_html__('Enter the password confirmation.', 'give')); } } } return $valid_user_data; }
public function test_validate_username() { $this->assertTrue(give_validate_username('giveuser')); $this->assertFalse(give_validate_username('give12345$%&+-!@£%^&()(*&^%$£@!')); }