function pmpro_upgrade_1_8_6_9()
{
    global $wpdb;
    $orders = $wpdb->get_results("SELECT id, user_id, membership_id, subscription_transaction_id FROM {$wpdb->pmpro_membership_orders} WHERE gateway = 'stripe' AND subscription_transaction_id LIKE 'cus_%'");
    if (!empty($orders)) {
        if (count($orders) > 100) {
            //if more than 100 orders, we'll need to do this via AJAX
            pmpro_addUpdate('pmpro_upgrade_1_8_6_9_ajax');
        } else {
            //less than 100, let's just do them now
            $subids = array();
            foreach ($orders as $order) {
                if (!empty($subids[$order->subscription_transaction_id])) {
                    $wpdb->query("UPDATE {$wpdb->pmpro_membership_orders} SET subscription_transaction_id = '" . esc_sql($subids[$order->subscription_transaction_id]) . "' WHERE id = '" . $order->id . "' LIMIT 1");
                    //echo "Updating subid for #" . $order->id . " " . $order->subscription_transaction_id . ".<br />";
                } elseif (isset($subids[$order->subscription_transaction_id])) {
                    //no sub id found, so let it go
                    //echo "No subid found for #" . $order->id . " " . $order->subscription_transaction_id . " in cache.<br />";
                } else {
                    //need to look for a sub id in the database
                    $subid = $wpdb->get_var("SELECT subscription_transaction_id FROM {$wpdb->pmpro_membership_orders} WHERE membership_id = '" . $order->membership_id . "' AND user_id = '" . $order->user_id . "' AND subscription_transaction_id LIKE 'sub_%' LIMIT 1");
                    $subids[$order->subscription_transaction_id] = $subid;
                    if (!empty($subid)) {
                        $wpdb->query("UPDATE {$wpdb->pmpro_membership_orders} SET subscription_transaction_id = '" . esc_sql($subid) . "' WHERE id = '" . $order->id . "' LIMIT 1");
                        //echo "Updating subid for #" . $order->id . " " . $order->subscription_transaction_id . ".<br />";
                    } else {
                        //echo "No subid found for #" . $order->id . " " . $order->subscription_transaction_id . ".<br />";
                    }
                }
            }
        }
    }
    pmpro_setOption("db_version", "1.869");
    return 1.869;
}
function pmpro_upgrade_1_8_9_3()
{
    global $wpdb;
    //Fixing incorrect start and end dates. (Sets up update via AJAX)
    $user_ids = $wpdb->get_col("SELECT user_id FROM {$wpdb->pmpro_memberships_users} WHERE status = 'active' AND modified > '2016-05-19'");
    if (!empty($user_ids)) {
        pmpro_addUpdate('pmpro_upgrade_1_8_9_3_ajax');
    }
    pmpro_setOption("db_version", "1.91");
    return 1.893;
}
function pmpro_upgrade_1_8_9_1()
{
    global $wpdb;
    //Fixing Stripe orders where user_id/membership_id = 0. (Sets up update via AJAX)
    $orders = $wpdb->get_col("SELECT id FROM {$wpdb->pmpro_membership_orders} WHERE gateway = 'stripe' AND user_id = 0 AND membership_id = 0 AND status <> 'error' ");
    if (!empty($orders)) {
        pmpro_addUpdate('pmpro_upgrade_1_8_9_1_ajax');
    }
    pmpro_setOption("db_version", "1.891");
    return 1.891;
}
function pmpro_upgrade_1_8_8()
{
    global $wpdb;
    //Running the cron job cleanup again.
    require_once PMPRO_DIR . "/includes/updates/upgrade_1_8_7.php";
    pmpro_upgrade_1_8_7();
    //Fixing old Authorize.net orders with empty status.
    $sqlQuery = "UPDATE {$wpdb->pmpro_membership_orders} SET status = 'success' WHERE gateway = 'authorizenet' AND status = ''";
    $wpdb->query($sqlQuery);
    //Fixing old $0 Stripe orders. (Sets up update via AJAX)
    $orders = $wpdb->get_col("SELECT id FROM {$wpdb->pmpro_membership_orders} WHERE gateway = 'stripe' AND total = 0");
    if (!empty($orders)) {
        pmpro_addUpdate('pmpro_upgrade_1_8_8_ajax');
    }
    pmpro_setOption("db_version", "1.88");
    return 1.88;
}