/**
 * Create user in Wordpress database.
 */
function the_champ_create_user($profileData, $verification = false)
{
    // create username, firstname and lastname
    $usernameFirstnameLastname = explode('|tc|', the_champ_create_username($profileData));
    $username = $usernameFirstnameLastname[0];
    $firstName = $usernameFirstnameLastname[1];
    $lastName = $usernameFirstnameLastname[2];
    // make username unique
    $nameexists = true;
    $index = 1;
    $username = str_replace(' ', '-', $username);
    //cyrillic username
    $username = sanitize_user($username, true);
    if ($username == '-') {
        $emailParts = explode('@', $profileData['email']);
        $username = $emailParts[0];
    }
    $userName = $username;
    while ($nameexists == true) {
        if (username_exists($userName) != 0) {
            $index++;
            $userName = $username . $index;
        } else {
            $nameexists = false;
        }
    }
    $username = $userName;
    $password = wp_generate_password();
    $userdata = array('user_login' => $username, 'user_pass' => $password, 'user_nicename' => sanitize_user($firstName, true), 'user_email' => $profileData['email'], 'display_name' => $firstName, 'nickname' => $firstName, 'first_name' => $firstName, 'last_name' => $lastName, 'description' => isset($profileData['bio']) && $profileData['bio'] != '' ? $profileData['bio'] : '', 'user_url' => isset($profileData['link']) && $profileData['link'] != '' ? $profileData['link'] : '', 'role' => get_option('default_role'));
    $userId = wp_insert_user($userdata);
    if (!is_wp_error($userId)) {
        if (isset($profileData['id']) && $profileData['id'] != '') {
            update_user_meta($userId, 'thechamp_social_id', $profileData['id']);
        }
        if (isset($profileData['avatar']) && $profileData['avatar'] != '') {
            update_user_meta($userId, 'thechamp_avatar', $profileData['avatar']);
        }
        if (isset($profileData['large_avatar']) && $profileData['large_avatar'] != '') {
            update_user_meta($userId, 'thechamp_large_avatar', $profileData['large_avatar']);
        }
        if (!empty($profileData['provider'])) {
            update_user_meta($userId, 'thechamp_provider', $profileData['provider']);
        }
        if (!$verification) {
            wp_new_user_notification($userId, null, 'both');
        }
        // insert profile data in BP XProfile table
        global $theChampLoginOptions;
        if (isset($theChampLoginOptions['xprofile_mapping']) && is_array($theChampLoginOptions['xprofile_mapping'])) {
            foreach ($theChampLoginOptions['xprofile_mapping'] as $key => $val) {
                // save xprofile fields
                global $wpdb;
                $value = '';
                if (isset($profileData[$val])) {
                    $value = $profileData[$val];
                }
                $wpdb->insert($wpdb->prefix . 'bp_xprofile_data', array('id' => NULL, 'field_id' => $wpdb->get_var($wpdb->prepare("SELECT id FROM " . $wpdb->prefix . "bp_xprofile_fields WHERE name = %s", $key)), 'user_id' => $userId, 'value' => $value, 'last_updated' => ''), array('%d', '%d', '%d', '%s', '%s'));
            }
        }
        // hook - user successfully created
        do_action('the_champ_user_successfully_created', $userId, $userdata, $profileData);
        return $userId;
    }
    return false;
}
/**
 * Create user in Wordpress database.
 */
function the_champ_create_user($profileData, $verification = false)
{
    // create username, firstname and lastname
    $usernameFirstnameLastname = explode('|tc|', the_champ_create_username($profileData));
    $username = $usernameFirstnameLastname[0];
    $firstName = $usernameFirstnameLastname[1];
    $lastName = $usernameFirstnameLastname[2];
    // make username unique
    $nameexists = true;
    $index = 1;
    $username = str_replace(' ', '-', $username);
    $userName = $username;
    while ($nameexists == true) {
        if (username_exists($userName) != 0) {
            $index++;
            $userName = $username . $index;
        } else {
            $nameexists = false;
        }
    }
    $username = $userName;
    $password = wp_generate_password();
    $userdata = array('user_login' => $username, 'user_pass' => $password, 'user_nicename' => sanitize_title($firstName), 'user_email' => $profileData['email'], 'display_name' => $firstName, 'nickname' => $firstName, 'first_name' => $firstName, 'last_name' => $lastName, 'description' => isset($profileData['bio']) && $profileData['bio'] != '' ? $profileData['bio'] : '', 'user_url' => isset($profileData['link']) && $profileData['link'] != '' ? $profileData['link'] : '', 'role' => get_option('default_role'));
    $userId = wp_insert_user($userdata);
    if (!is_wp_error($userId)) {
        if (isset($profileData['id']) && $profileData['id'] != '') {
            update_user_meta($userId, 'thechamp_social_id', $profileData['id']);
        }
        if (isset($profileData['avatar']) && $profileData['avatar'] != '') {
            update_user_meta($userId, 'thechamp_avatar', $profileData['avatar']);
        }
        if (isset($profileData['large_avatar']) && $profileData['large_avatar'] != '') {
            update_user_meta($userId, 'thechamp_large_avatar', $profileData['large_avatar']);
        }
        if (!empty($profileData['provider'])) {
            update_user_meta($userId, 'thechamp_provider', $profileData['provider']);
        }
        if (!$verification) {
            the_champ_password_email($userId, $password);
        }
        // hook - user successfully created
        do_action('the_champ_user_successfully_created', $userId, $userdata, $profileData);
        return $userId;
    }
    return false;
}