<?php
session_start();
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['restaurar_db']) && isset($_FILES['archivo_db'])) {
        $archivo = $_FILES['archivo_db']['tmp_name'];

        // Validar que el archivo no esté vacío
        if (filesize($archivo) === 0) {
            $mensaje = "❌ El archivo SQL está vacío.";
        } else {
            // Parámetros de conexión
            $usuario = 'todo2025';
            $contrasena = '0x0sidewinder';
            $baseDatos = 'todo2025';

            // Construir comando seguro
            $comando = sprintf(
                '"C:\xampp\mysql\bin\mysql.exe" --user=%s --password=%s %s < %s',
                escapeshellarg($usuario),
                escapeshellarg($contrasena),
                escapeshellarg($baseDatos),
                escapeshellarg($archivo)
            );

            // Ejecutar y capturar resultado
            exec($comando, $output, $resultado);

            if ($resultado === 0) {
                $mensaje = "✅ Base de datos restaurada correctamente.";
            } else {
                $mensaje = "❌ Error al restaurar la base de datos.";
            }
        }
    }

    if (isset($_POST['restaurar_files']) && isset($_FILES['archivo_files'])) {
        $archivo = $_FILES['archivo_files']['tmp_name'];
        $zip = new ZipArchive();
        if ($zip->open($archivo)) {
            $zip->extractTo('uploads/');
            $zip->close();
            $mensaje = "✅ Archivos restaurados correctamente.";
        } else {
            $mensaje = "❌ Error al descomprimir el archivo.";
        }
    }
}

?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Restaurar Copia de Seguridad</title>
    
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container px-5 py-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2>🔄 Restaurar Copia de Seguridad</h2>
        <a href="index.php" class="btn btn-outline-secondary">❌ Volver al inicio</a>
    </div>
    <?php if (isset($mensaje)): ?>
        <div class="alert alert-info"><?= $mensaje ?></div>
    <?php endif; ?>

    <div class="row g-4">
        <!-- Restaurar Base de Datos -->
        <div class="col-md-6">
            <div class="card border-primary">
                <div class="card-header bg-primary text-white">📄 Restaurar Base de Datos</div>
                <div class="card-body">
                    <p>Selecciona un archivo <strong>.sql</strong> para restaurar la base de datos. Máximo 100 MB.</p>
                    <form method="post" enctype="multipart/form-data">
                        <input type="file" name="archivo_db" class="form-control mb-2" accept=".sql" required>
                        <button type="submit" name="restaurar_db" class="btn btn-primary">Restaurar</button>
                        <button type="button" class="btn btn-outline-secondary">Cambiar codificación</button>
                    </form>
                    <p class="text-danger mt-2">⚠️ Solo restaura si estás seguro de que los datos actuales no son válidos.</p>
                </div>
            </div>
        </div>

        <!-- Restaurar Archivos -->
        <div class="col-md-6">
            <div class="card border-secondary">
                <div class="card-header bg-secondary text-white">🗂️ Restaurar Archivos</div>
                <div class="card-body">
                    <p>Selecciona un archivo <strong>.zip</strong> con los archivos de la carpeta <code>/uploads</code>. Máximo 100 MB.</p>
                    <form method="post" enctype="multipart/form-data">
                        <input type="file" name="archivo_files" class="form-control mb-2" accept=".zip" required>
                        <button type="submit" name="restaurar_files" class="btn btn-secondary">Restaurar</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>
