Example #1
0
/**
 * 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;
}
Example #2
0
 public function test_validate_username()
 {
     $this->assertTrue(give_validate_username('giveuser'));
     $this->assertFalse(give_validate_username('give12345$%&+-!@£%^&()(*&^%$£@!'));
 }