/**
 * Create a new visitor account for the current visitor and store its ID
 * in a cookie
 *
 * @access public
 * @since 3.8.9
 * @return string Customer ID
 */
function _wpsc_create_customer_id()
{
    do_action('_wpsc_create_customer_id');
    if (_wpsc_is_bot_user()) {
        $visitor_id = WPSC_BOT_VISITOR_ID;
        wpsc_get_current_customer_id($visitor_id);
        $fake_setting_cookie = true;
    } else {
        $fake_setting_cookie = false;
        $args = array();
        if (is_user_logged_in()) {
            $args['user_id'] = get_current_user_id();
        }
        $visitor_id = wpsc_create_visitor($args);
        if ($visitor_id === false) {
            // can't create a new visitor, just use the BOT visitor id
            $visitor_id = WPSC_BOT_VISITOR_ID;
            $fake_setting_cookie = true;
        }
        wpsc_get_current_customer_id($visitor_id);
        _wpsc_create_customer_id_cookie($visitor_id, $fake_setting_cookie);
        do_action('wpsc_create_customer', $visitor_id);
    }
    return $visitor_id;
}
/**
 * Create a new visitor account for the current visitor and store its ID
 * in a cookie
 *
 * @access public
 * @since 3.8.9
 * @return string Customer ID
 */
function _wpsc_create_customer_id()
{
    // only allow one customer id per request
    static $customer_id = false;
    if ($customer_id) {
        return $customer_id;
    }
    do_action('_wpsc_create_customer_id');
    if (_wpsc_is_bot_user()) {
        $customer_id = WPSC_BOT_VISITOR_ID;
        wpsc_get_current_customer_id($customer_id);
    } else {
        $fake_setting_cookie = false;
        $args = array();
        if (is_user_logged_in()) {
            $args['user_id'] = get_current_user_id();
        }
        $customer_id = wpsc_create_visitor($args);
        if (!$customer_id) {
            // can't create a new visitor, just use the BOT visitor id
            $customer_id = WPSC_BOT_VISITOR_ID;
            $fake_setting_cookie = true;
        }
        wpsc_get_current_customer_id($customer_id);
        _wpsc_create_customer_id_cookie($customer_id, $fake_setting_cookie);
        do_action('wpsc_create_customer', $customer_id);
    }
    return $customer_id;
}
/**
 * Gets a valid WPEC visitor id associated with a WordPress user
 * @access private
 * @since 3.8.14
 * @param unknown $wp_user
 */
function _wpsc_get_wp_user_visitor_id($wp_user_id = null)
{
    if (!_wpsc_visitor_database_ready()) {
        return false;
    }
    $visitor_id = false;
    if (empty($wp_user_id)) {
        $wp_user_id = get_current_user_id();
    }
    if (!empty($wp_user_id)) {
        $visitor_id = get_user_meta($wp_user_id, _wpsc_get_user_meta_key('visitor_id'), true);
        if (empty($visitor_id)) {
            $visitor_id = wpsc_create_visitor(array('user_id' => $wp_user_id));
        }
    }
    return $visitor_id;
}