<?php
/**
 * Uninstall Livraison API
 *
 * @package LivraisonAPI
 */

// ✅ Vérification de la constante WP_UNINSTALL_PLUGIN
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
    exit;
}

global $wpdb;

// ✅ Supprimer la table
$livraison_table_name = $wpdb->prefix . 'livraison_api_logs';

// ✅ Solution 1 : Utiliser esc_sql() pour échapper le nom de la table
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange
$wpdb->query( "DROP TABLE IF EXISTS " . esc_sql( $livraison_table_name ) );

// ✅ Supprimer les options
$livraison_options = array( // Préfixé pour éviter NonPrefixedVariableFound
    'livraison_api_url',
    'livraison_api_key',
    'livraison_api_auto_send',
    'livraison_api_auto_complete',
    'livraison_api_pickup_commune',
    'livraison_api_pickup_address',
    'livraison_api_merchant_name',
    'livraison_api_merchant_phone',
    'livraison_api_merchant_email',
    'livraison_api_webhook_secret',
    'livraison_api_currency'
);

foreach ( $livraison_options as $livraison_option ) { // Préfixé
    delete_option( $livraison_option );
}

// ✅ Supprimer le dossier de logs avec WP_Filesystem
$livraison_upload_dir = wp_upload_dir(); // Préfixé
$livraison_log_dir = trailingslashit( $livraison_upload_dir['basedir'] ) . 'sendi-api-logs/'; // Préfixé

if ( file_exists( $livraison_log_dir ) ) {
    // ✅ Utiliser WP_Filesystem (méthode recommandée)
    require_once ABSPATH . 'wp-admin/includes/file.php';
    
    if ( function_exists( 'WP_Filesystem' ) ) {
        WP_Filesystem();
        global $wp_filesystem;
        $wp_filesystem->delete( $livraison_log_dir, true );
    } else {
        // ✅ Fallback sécurisé avec wp_delete_file()
        $livraison_files = glob( $livraison_log_dir . '*' ); // Préfixé
        if ( is_array( $livraison_files ) ) {
            foreach ( $livraison_files as $livraison_file ) { // Préfixé
                if ( is_file( $livraison_file ) ) {
                    wp_delete_file( $livraison_file );
                }
            }
        }
        // ✅ Supprimer le dossier
        if ( is_dir( $livraison_log_dir ) ) {
            wp_delete_file( $livraison_log_dir );
        }
    }
}

// ✅ Nettoyer le cache
wp_cache_flush();