<?php
/**
 * Fired when the plugin is uninstalled.
 *
 * @package EONSR_AEO_Agent
 */

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

/*
 * Tắt cảnh báo biến toàn cục cho file này vì uninstall.php chạy ở global scope.
 * Các biến bên dưới (eonsr_options_to_delete, eonsr_table_cost...) đã có prefix nhưng
 * tool check vẫn báo warning, ta disable rule này để file sạch lỗi.
 */
// phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound

// 1. Xóa tất cả Options (Cấu hình)
// FIX: Thêm prefix eonsr_ vào tên biến
$eonsr_options_to_delete = [
    'eonsr_aeo_agent_license_status',
    'eonsr_aeo_agent_license_key',
    'eonsr_aeo_agent_license_plan',
    'eonsr_aeo_agent_license_details',
    'eonsr_aeo_agent_license_features',
    'eonsr_aeo_agent_setup_completed',
    'eonsr_aeo_agent_selected_languages',
    'eonsr_aeo_agent_selected_countries',
    'eonsr_aeo_agent_selected_styles',
    'eonsr_aeo_agent_use_custom_logo',
    'eonsr_aeo_agent_custom_logo_url',
    'eonsr_aeo_agent_custom_logo_path',
    'eonsr_aeo_agent_user_email',
];

// FIX: Thêm prefix vào biến chạy trong vòng lặp luôn
foreach ( $eonsr_options_to_delete as $eonsr_option_name ) {
    delete_option( $eonsr_option_name );
}

// 2. Xóa Transients (Cache)
delete_transient( 'eonsr_aeo_agent_all_posts_list' );
delete_transient( 'eonsr_aeo_agent_recheck_license' );

global $wpdb;

// Xóa các transient động
// Cho phép chạy query trực tiếp để cleanup triệt để các transient wildcard
// phpcs:ignore WordPress.DB.DirectDatabaseQuery
$wpdb->query( 
    "DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_eonsr_aeo_agent_%' OR option_name LIKE '_transient_timeout_eonsr_aeo_agent_%'"
);

// 3. Xóa Bảng Database (Custom Tables)
// FIX: Thêm prefix vào tên biến bảng
$eonsr_table_cost = $wpdb->prefix . 'eonsr_aeo_agent_cost_logs';
$eonsr_table_bulk = $wpdb->prefix . 'eonsr_aeo_agent_bulk_logs';

// FIX: Sử dụng esc_sql() và nối chuỗi
// Cho phép DROP TABLE trong uninstall
// phpcs:ignore WordPress.DB.DirectDatabaseQuery
$wpdb->query( 'DROP TABLE IF EXISTS ' . esc_sql( $eonsr_table_cost ) );

// phpcs:ignore WordPress.DB.DirectDatabaseQuery
$wpdb->query( 'DROP TABLE IF EXISTS ' . esc_sql( $eonsr_table_bulk ) );

// 4. Xóa Cron Jobs
// FIX: Thêm prefix vào biến timestamp
$eonsr_timestamp = wp_next_scheduled( 'eonsr_aeo_agent_cleanup_locks_cron' );
if ( $eonsr_timestamp ) {
    wp_unschedule_event( $eonsr_timestamp, 'eonsr_aeo_agent_cleanup_locks_cron' );
}

// FIX: Thêm prefix vào biến timestamp_poll
$eonsr_timestamp_poll = wp_next_scheduled( 'eonsr_aeo_agent_poll_translation_jobs' );
if ( $eonsr_timestamp_poll ) {
    wp_unschedule_event( $eonsr_timestamp_poll, 'eonsr_aeo_agent_poll_translation_jobs' );
}