<?php
/**
 * Script para limpiar archivos webhook de prueba
 * Mantiene los webhooks esenciales y elimina los de prueba
 */

// Configuración
$modo_simulacion = true; // Cambiar a false para eliminar realmente los archivos
$verbose = true; // Mostrar información detallada

// Archivos a preservar (no se eliminarán)
$preservar = [
    'webhook_pagopar.php',      // Webhook principal usado en producción
    'webhook_pagopar_alt.php',  // Webhook alternativo configurado como backup
    'webhook_copia_exacta.php'  // Usado en reportes y configuración
];

// Función para mostrar mensajes si estamos en modo verbose
function log_mensaje($mensaje) {
    global $verbose;
    if ($verbose) {
        echo $mensaje . "\n";
    }
}

// Banner
echo "====================================================\n";
echo "   LIMPIEZA DE ARCHIVOS WEBHOOK DE PRUEBA\n";
echo "====================================================\n\n";

if ($modo_simulacion) {
    echo "⚠️ MODO SIMULACIÓN: No se eliminará ningún archivo ⚠️\n";
    echo "Cambia \$modo_simulacion = false para eliminar los archivos\n\n";
}

// Contadores
$total = 0;
$eliminados = 0;
$preservados = 0;

// Buscar todos los archivos webhook_*.php
$webhooks = glob('webhook_*.php');

echo "Analizando " . count($webhooks) . " archivos webhook_*.php...\n\n";

// Procesar cada archivo
foreach ($webhooks as $archivo) {
    $total++;
    
    // Verificar si el archivo debe ser preservado
    if (in_array($archivo, $preservar)) {
        log_mensaje("✅ PRESERVADO: $archivo - Archivo esencial");
        $preservados++;
        continue;
    }
    
    // Verificar si es un archivo de prueba basado en el nombre
    $es_prueba = false;
    
    if (strpos($archivo, 'test') !== false || 
        strpos($archivo, 'debug') !== false || 
        strpos($archivo, 'prueba') !== false ||
        strpos($archivo, 'validacion') !== false ||
        strpos($archivo, 'echo') !== false ||
        strpos($archivo, 'simple') !== false ||
        strpos($archivo, 'minimo') !== false ||
        strpos($archivo, 'headers') !== false ||
        strpos($archivo, 'ultra') !== false) {
        $es_prueba = true;
    }
    
    // Eliminar archivo si es de prueba
    if ($es_prueba) {
        if ($modo_simulacion) {
            log_mensaje("🗑️ SIMULAR ELIMINAR: $archivo");
        } else {
            if (@unlink($archivo)) {
                log_mensaje("🗑️ ELIMINADO: $archivo");
            } else {
                log_mensaje("❌ ERROR AL ELIMINAR: $archivo");
            }
        }
        $eliminados++;
    } else {
        // Para archivos que no tienen palabras clave de prueba, revisamos el contenido
        $contenido = @file_get_contents($archivo);
        if ($contenido !== false) {
            if (strpos($contenido, 'test') !== false || 
                strpos($contenido, 'prueba') !== false || 
                strpos($contenido, 'DEBUG') !== false) {
                if ($modo_simulacion) {
                    log_mensaje("🗑️ SIMULAR ELIMINAR (por contenido): $archivo");
                } else {
                    if (@unlink($archivo)) {
                        log_mensaje("🗑️ ELIMINADO (por contenido): $archivo");
                    } else {
                        log_mensaje("❌ ERROR AL ELIMINAR: $archivo");
                    }
                }
                $eliminados++;
            } else {
                log_mensaje("❓ DESCONOCIDO: $archivo - No se puede determinar si es de prueba");
            }
        } else {
            log_mensaje("⚠️ NO SE PUDO LEER: $archivo");
        }
    }
}

// Resumen
echo "\n====================================================\n";
echo "RESUMEN DE LA OPERACIÓN\n";
echo "====================================================\n";
echo "Total de archivos webhook analizados: $total\n";
echo "Archivos preservados: $preservados\n";
echo "Archivos " . ($modo_simulacion ? "que se eliminarían" : "eliminados") . ": $eliminados\n";
echo "\n";

if ($modo_simulacion) {
    echo "⚠️ RECUERDA: Este fue un modo de simulación. Para eliminar realmente los archivos:\n";
    echo "1. Edita este script\n";
    echo "2. Cambia \$modo_simulacion = true a \$modo_simulacion = false\n";
    echo "3. Ejecuta el script nuevamente\n";
}

echo "\nArchivos preservados:\n";
foreach ($preservar as $archivo) {
    echo "- $archivo\n";
}

echo "\n¡Proceso completado!\n";