<?php

defined('WP_UNINSTALL_PLUGIN') || exit;
global $wpdb, $wp_version;
wp_clear_scheduled_hook('woocommerce_scheduled_sales');
wp_clear_scheduled_hook('woocommerce_cancel_unpaid_orders');
wp_clear_scheduled_hook('woocommerce_cleanup_sessions');
wp_clear_scheduled_hook('woocommerce_cleanup_personal_data');
wp_clear_scheduled_hook('woocommerce_cleanup_logs');
wp_clear_scheduled_hook('woocommerce_geoip_updater');
wp_clear_scheduled_hook('woocommerce_tracker_send_event');
if (defined('WC_REMOVE_ALL_DATA') && true === WC_REMOVE_ALL_DATA) {
    include_once dirname(__FILE__) . '/packages/woocommerce-admin/src/Install.php';
    \Automattic\WooCommerce\Admin\Install::drop_tables();
    include_once dirname(__FILE__) . '/includes/class-wc-install.php';
    WC_Install::remove_roles();
    wp_trash_post(get_option('woocommerce_shop_page_id'));
    wp_trash_post(get_option('woocommerce_cart_page_id'));
    wp_trash_post(get_option('woocommerce_checkout_page_id'));
    wp_trash_post(get_option('woocommerce_myaccount_page_id'));
    wp_trash_post(get_option('woocommerce_edit_address_page_id'));
    wp_trash_post(get_option('woocommerce_view_order_page_id'));
    wp_trash_post(get_option('woocommerce_change_password_page_id'));
    wp_trash_post(get_option('woocommerce_logout_page_id'));
    if ($wpdb->get_var("SHOW TABLES LIKE '{$wpdb->prefix}woocommerce_attribute_taxonomies';")) {
        $wc_attributes = array_filter((array) $wpdb->get_col("SELECT attribute_name FROM {$wpdb->prefix}woocommerce_attribute_taxonomies;"));
    } else {
        $wc_attributes = array();
    }
    WC_Install::drop_tables();
    $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'woocommerce\\_%';");
    $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'widget\\_woocommerce\\_%';");
    $wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE 'woocommerce\\_%';");
    $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type IN ( 'product', 'product_variation', 'shop_coupon', 'shop_order', 'shop_order_refund' );");
    $wpdb->query("DELETE meta FROM {$wpdb->postmeta} meta LEFT JOIN {$wpdb->posts} posts ON posts.ID = meta.post_id WHERE posts.ID IS NULL;");
    $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_type IN ( 'order_note' );");
    $wpdb->query("DELETE meta FROM {$wpdb->commentmeta} meta LEFT JOIN {$wpdb->comments} comments ON comments.comment_ID = meta.comment_id WHERE comments.comment_ID IS NULL;");
    $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}woocommerce_order_items");
    $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}woocommerce_order_itemmeta");
    if (version_compare($wp_version, '4.2', '>=')) {
        foreach (array('product_cat', 'product_tag', 'product_shipping_class', 'product_type') as $_taxonomy) {
            $wpdb->delete($wpdb->term_taxonomy, array('taxonomy' => $_taxonomy));
        }
        foreach ($wc_attributes as $_taxonomy) {
            $wpdb->delete($wpdb->term_taxonomy, array('taxonomy' => 'pa_' . $_taxonomy));
        }
        $wpdb->query("DELETE tr FROM {$wpdb->term_relationships} tr LEFT JOIN {$wpdb->posts} posts ON posts.ID = tr.object_id WHERE posts.ID IS NULL;");
        $wpdb->query("DELETE t FROM {$wpdb->terms} t LEFT JOIN {$wpdb->term_taxonomy} tt ON t.term_id = tt.term_id WHERE tt.term_id IS NULL;");
        if (!empty($wpdb->termmeta)) {
            $wpdb->query("DELETE tm FROM {$wpdb->termmeta} tm LEFT JOIN {$wpdb->term_taxonomy} tt ON tm.term_id = tt.term_id WHERE tt.term_id IS NULL;");
        }
    }
    wp_cache_flush();
}