HEX
Server: Apache
System: Linux host.fiblib.com 5.14.0-570.58.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 29 06:24:11 EDT 2025 x86_64
User: scientificreligi (1062)
PHP: 8.0.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/houseofayushjain/public_html/wp-content/plugins/oneclick-whatsapp-order/uninstall.php
<?php

/**
 * OneClick Chat to Order Uninstall
 *
 * @package     OneClick Chat to Order
 * @author      Walter Pinem <hello@walterpinem.me>
 * @link        https://walterpinem.me/
 * @link        https://www.onlinestorekit.com/oneclick-chat-to-order/
 * @copyright   Copyright (c) 2019 - 2025, Walter Pinem | Online Store Kit
 * @license     http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0
 * @category    Uninstall
 *
 ********************************* Uninstall ********************************* */

// If uninstall not called from WordPress, then exit.
if (!defined('WP_UNINSTALL_PLUGIN')) {
    exit;
}

// Check if user wants to delete plugin data
$delete_data = get_option('wa_order_delete_data_on_uninstall', 'no');

if ($delete_data === 'yes') {
    wa_order_delete_all_plugin_data();
}

/**
 * Delete all plugin data including options, posts, meta, and transients
 */
function wa_order_delete_all_plugin_data()
{
    global $wpdb;

    // Delete all plugin options
    wa_order_delete_plugin_options();

    // Delete custom post type and related data
    wa_order_delete_custom_post_type_data();

    // Delete product meta data
    wa_order_delete_product_meta_data();

    // Delete transients and cache
    wa_order_delete_transients_and_cache();

    // Log the cleanup (if WP_DEBUG is enabled)
    if (defined('WP_DEBUG') && WP_DEBUG) {
        error_log('[OneClick Chat to Order] All plugin data has been deleted during uninstall.');
    }
}

/**
 * Delete all plugin options
 */
function wa_order_delete_plugin_options()
{
    // Basic Configuration Options
    delete_option('wa_order_selected_wa_number_single_product');
    delete_option('wa_order_option_dismiss_notice_confirmation');
    delete_option('wa_order_whatsapp_base_url');
    delete_option('wa_order_whatsapp_base_url_desktop');
    delete_option('wa_order_force_use_wa_me');
    delete_option('wa_order_single_product_link_type');
    delete_option('wa_order_single_product_button_position');
    delete_option('wa_order_option_enable_single_product');
    delete_option('wa_order_option_message');
    delete_option('wa_order_option_text_button');
    delete_option('wa_order_option_target');
    delete_option('wa_order_exclude_price');
    delete_option('wa_order_exclude_product_url');
    delete_option('wa_order_option_quantity_label');
    delete_option('wa_order_option_price_label');
    delete_option('wa_order_option_url_label');
    delete_option('wa_order_option_total_amount_label');
    delete_option('wa_order_option_total_discount_label');
    delete_option('wa_order_option_payment_method_label');
    delete_option('wa_order_option_thank_you_label');
    delete_option('wa_order_option_tax_label');
    delete_option('wa_order_single_force_fullwidth');
    delete_option('wa_order_option_single_show_regular_sale_prices');

    // Display Options
    delete_option('wa_order_bg_color');
    delete_option('wa_order_bg_hover_color');
    delete_option('wa_order_txt_color');
    delete_option('wa_order_txt_hover_color');
    delete_option('wa_order_btn_box_shdw');
    delete_option('wa_order_bshdw_horizontal');
    delete_option('wa_order_bshdw_vertical');
    delete_option('wa_order_bshdw_blur');
    delete_option('wa_order_bshdw_spread');
    delete_option('wa_order_bshdw_position');
    delete_option('wa_order_btn_box_shdw_hover');
    delete_option('wa_order_bshdw_horizontal_hover');
    delete_option('wa_order_bshdw_vertical_hover');
    delete_option('wa_order_bshdw_blur_hover');
    delete_option('wa_order_bshdw_spread_hover');
    delete_option('wa_order_bshdw_position_hover');
    delete_option('wa_order_option_remove_btn');
    delete_option('wa_order_option_remove_btn_mobile');
    delete_option('wa_order_option_remove_price');
    delete_option('wa_order_option_remove_cart_btn');
    delete_option('wa_order_option_remove_quantity');
    delete_option('wa_order_option_exlude_single_product_cats');
    delete_option('wa_order_option_exlude_single_product_tags');
    delete_option('wa_order_single_button_margin_top');
    delete_option('wa_order_single_button_margin_right');
    delete_option('wa_order_single_button_margin_bottom');
    delete_option('wa_order_single_button_margin_left');
    delete_option('wa_order_single_button_padding_top');
    delete_option('wa_order_single_button_padding_right');
    delete_option('wa_order_single_button_padding_bottom');
    delete_option('wa_order_single_button_padding_left');
    delete_option('wa_order_display_option_shop_loop_hide_desktop');
    delete_option('wa_order_display_option_shop_loop_hide_mobile');
    delete_option('wa_order_option_exlude_shop_product_cats');
    delete_option('wa_order_exlude_shop_product_cats_archive');
    delete_option('wa_order_option_exlude_shop_product_tags');
    delete_option('wa_order_exlude_shop_product_tags_archive');
    delete_option('wa_order_display_option_cart_hide_desktop');
    delete_option('wa_order_display_option_cart_hide_mobile');
    delete_option('wa_order_display_option_checkout_hide_desktop');
    delete_option('wa_order_display_option_checkout_hide_mobile');
    delete_option('wa_order_option_convert_phone_order_details');
    delete_option('wa_order_option_custom_message_backend_order_details');

    // GDPR Options
    delete_option('wa_order_gdpr_status_enable');
    delete_option('wa_order_gdpr_message');
    delete_option('wa_order_gdpr_privacy_page');

    // Floating Button Options
    delete_option('wa_order_selected_wa_number_floating');
    delete_option('wa_order_floating_button');
    delete_option('wa_order_floating_button_position');
    delete_option('wa_order_floating_message');
    delete_option('wa_order_floating_target');
    delete_option('wa_order_floating_tooltip_enable');
    delete_option('wa_order_floating_tooltip');
    delete_option('wa_order_floating_hide_mobile');
    delete_option('wa_order_floating_hide_desktop');
    delete_option('wa_order_floating_source_url');
    delete_option('wa_order_floating_source_url_label');
    delete_option('wa_order_floating_hide_all_single_posts');
    delete_option('wa_order_floating_hide_all_single_pages');
    delete_option('wa_order_floating_hide_specific_posts');
    delete_option('wa_order_floating_hide_specific_pages');
    delete_option('wa_order_floating_hide_product_cats');
    delete_option('wa_order_floating_hide_product_tags');
    delete_option('wa_order_floating_button_margin_top');
    delete_option('wa_order_floating_button_margin_right');
    delete_option('wa_order_floating_button_margin_bottom');
    delete_option('wa_order_floating_button_margin_left');
    delete_option('wa_order_floating_button_padding_top');
    delete_option('wa_order_floating_button_padding_right');
    delete_option('wa_order_floating_button_padding_bottom');
    delete_option('wa_order_floating_button_padding_left');
    delete_option('wa_order_floating_button_icon_margin_top');
    delete_option('wa_order_floating_button_icon_margin_right');
    delete_option('wa_order_floating_button_icon_margin_bottom');
    delete_option('wa_order_floating_button_icon_margin_left');
    delete_option('wa_order_floating_button_icon_padding_top');
    delete_option('wa_order_floating_button_icon_padding_right');
    delete_option('wa_order_floating_button_icon_padding_bottom');
    delete_option('wa_order_floating_button_icon_padding_left');

    // Shortcode Options
    delete_option('wa_order_selected_wa_number_shortcode');
    delete_option('wa_order_shortcode_message');
    delete_option('wa_order_shortcode_text_button');
    delete_option('wa_order_shortcode_target');

    // Cart Options
    delete_option('wa_order_selected_wa_number_cart');
    delete_option('wa_order_option_add_button_to_cart');
    delete_option('wa_order_option_cart_custom_message');
    delete_option('wa_order_option_cart_button_text');
    delete_option('wa_order_option_cart_hide_checkout');
    delete_option('wa_order_option_cart_hide_product_url');
    delete_option('wa_order_option_cart_open_new_tab');
    delete_option('wa_order_option_cart_enable_variations');
    delete_option('wa_order_option_cart_include_tax');

    // Thank You Page Options
    delete_option('wa_order_selected_wa_number_thanks');
    delete_option('wa_order_option_thank_you_redirect_checkout');
    delete_option('wa_order_option_enable_button_thank_you');
    delete_option('wa_order_option_custom_thank_you_title');
    delete_option('wa_order_option_custom_thank_you_subtitle');
    delete_option('wa_order_option_custom_thank_you_button_text');
    delete_option('wa_order_option_custom_thank_you_custom_message');
    delete_option('wa_order_option_custom_thank_you_include_order_date');
    delete_option('wa_order_option_custom_thank_you_order_number');
    delete_option('wa_order_option_custom_thank_you_order_number_label');
    delete_option('wa_order_option_thank_you_order_summary_link');
    delete_option('wa_order_option_thank_you_order_summary_label');
    delete_option('wa_order_option_thank_you_payment_link');
    delete_option('wa_order_option_thank_you_payment_link_label');
    delete_option('wa_order_option_thank_you_view_order_link');
    delete_option('wa_order_option_thank_you_view_order_label');
    delete_option('wa_order_option_custom_thank_you_open_new_tab');
    delete_option('wa_order_option_custom_thank_you_customer_details_label');
    delete_option('wa_order_option_custom_thank_you_total_products_label');
    delete_option('wa_order_option_custom_thank_you_include_sku');
    delete_option('wa_order_option_custom_thank_you_include_tax');
    delete_option('wa_order_option_custom_thank_you_inclue_coupon');
    delete_option('wa_order_option_custom_thank_you_coupon_label');
    delete_option('wa_order_option_custom_thank_you_include_shipping');
    delete_option('wa_order_option_custom_thank_you_shipping_label');

    // Shop Page Options
    delete_option('wa_order_selected_wa_number_shop');
    delete_option('wa_order_option_enable_button_shop_loop');
    delete_option('wa_order_option_hide_atc_shop_loop');
    delete_option('wa_order_option_button_text_shop_loop');
    delete_option('wa_order_option_custom_message_shop_loop');
    delete_option('wa_order_option_shop_loop_hide_product_url');
    delete_option('wa_order_option_shop_loop_exclude_price');
    delete_option('wa_order_option_shop_loop_open_new_tab');
    delete_option('wa_order_option_shop_loop_show_regular_sale_prices');

    // Delete the uninstall option itself
    delete_option('wa_order_delete_data_on_uninstall');

    // Delete any legacy options that might exist
    delete_option('wa_order_option_phone_number'); // Old phone number option
    delete_option('wa_order_selected_wa_number'); // Legacy option
}

/**
 * Delete custom post type data and related meta
 */
function wa_order_delete_custom_post_type_data()
{
    global $wpdb;

    // Get all WhatsApp number posts
    $posts = get_posts(array(
        'post_type' => 'wa-order-numbers',
        'post_status' => 'any',
        'numberposts' => -1,
        'fields' => 'ids'
    ));

    // Delete each post and its meta
    foreach ($posts as $post_id) {
        // Delete all post meta
        $wpdb->delete($wpdb->postmeta, array('post_id' => $post_id));

        // Delete the post
        wp_delete_post($post_id, true);
    }

    // Clean up any orphaned meta for this post type
    $wpdb->query($wpdb->prepare("
        DELETE pm FROM {$wpdb->postmeta} pm
        LEFT JOIN {$wpdb->posts} p ON pm.post_id = p.ID
        WHERE p.ID IS NULL AND pm.meta_key LIKE %s
    ", 'wa_order_%'));
}

/**
 * Delete product meta data added by the plugin
 */
function wa_order_delete_product_meta_data()
{
    global $wpdb;

    // Delete all product meta keys added by the plugin
    $meta_keys = array(
        '_wa_order_phone_number_check',
        '_wa_order_phone_number',
        '_wa_order_button_text',
        '_wa_order_custom_message',
        '_hide_wa_button',
        '_hide_atc_button',
        '_force_show_atc_button'
    );

    foreach ($meta_keys as $meta_key) {
        $wpdb->delete($wpdb->postmeta, array('meta_key' => $meta_key));
    }
}

/**
 * Delete transients and cache data
 */
function wa_order_delete_transients_and_cache()
{
    global $wpdb;

    // Delete phone number cache transients
    $wpdb->query($wpdb->prepare("
        DELETE FROM {$wpdb->options}
        WHERE option_name LIKE %s
    ", '_transient_wa_order_phone_%'));

    // Delete timeout transients
    $wpdb->query($wpdb->prepare("
        DELETE FROM {$wpdb->options}
        WHERE option_name LIKE %s
    ", '_transient_timeout_wa_order_phone_%'));

    // Delete shop taxonomy cache transients
    delete_transient('wa_order_cat_ids');
    delete_transient('wa_order_tag_ids');

    // Delete admin notice transients
    delete_transient('wa_order_number_empty_notice');

    // Delete any other plugin-specific transients
    $wpdb->query($wpdb->prepare("
        DELETE FROM {$wpdb->options}
        WHERE option_name LIKE %s OR option_name LIKE %s
    ", '_transient_wa_order_%', '_transient_timeout_wa_order_%'));
}