<?php
// ======================================================================
// PASO 1: HABILITAR ERRORES PARA DEPURACIÓN (¡MUY IMPORTANTE!)
// ======================================================================
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// ======================================================================
// SCRIPT PRINCIPAL
// ======================================================================

// Verifica si el formulario fue enviado
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    // Verifica si la variable de archivos existe y no está vacía
    if (isset($_FILES["pdfs"]) && !empty($_FILES["pdfs"]["name"][0])) {

        $directorioDestino = "subidas/";
        $rutasArchivos = [];
        $errores = [];

        // PASO 2: VERIFICAR Y CREAR EL DIRECTORIO DE DESTINO
        if (!file_exists($directorioDestino)) {
            // Intenta crear el directorio. Si falla, muestra un error.
            if (!mkdir($directorioDestino, 0777, true)) {
                die("Error: No se pudo crear el directorio de subidas. Verifica los permisos.");
            }
        }

        // Iterar sobre cada archivo subido
        foreach ($_FILES["pdfs"]["name"] as $key => $nombre) {
            
            // PASO 3: VERIFICAR ERRORES DE SUBIDA
            if ($_FILES["pdfs"]["error"][$key] === UPLOAD_ERR_OK) {
                
                $nombreTemporal = $_FILES["pdfs"]["tmp_name"][$key];
                // Sanitizar el nombre del archivo para mayor seguridad
                $nombreArchivo = preg_replace("/[^A-Za-z0-9._-]/", "", basename($nombre));
                $rutaDestino = $directorioDestino . $nombreArchivo;
                $tipoArchivo = strtolower(pathinfo($rutaDestino, PATHINFO_EXTENSION));

                // PASO 4: VERIFICAR QUE ES UN ARCHIVO PDF
                if ($tipoArchivo == "pdf") {
                    
                    // PASO 5: MOVER EL ARCHIVO
                    if (move_uploaded_file($nombreTemporal, $rutaDestino)) {
                        // Generar la ruta del archivo para mostrarla
                        $protocolo = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
                        $host = $_SERVER['HTTP_HOST'];
                        $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
                        $urlAbsoluta = $protocolo . $host . $uri . "/" . $rutaDestino;

                        $rutasArchivos[] = [
                            'nombre' => $nombreArchivo,
                            'ruta_servidor' => $rutaDestino,
                            'url' => $urlAbsoluta
                        ];
                    } else {
                        $errores[] = "Error al mover el archivo: " . htmlspecialchars($nombreArchivo) . ". Verifica los permisos de la carpeta 'subidas'.";
                    }
                } else {
                    $errores[] = "Solo se permiten archivos PDF. El archivo '" . htmlspecialchars($nombreArchivo) . "' no es válido.";
                }
            } else {
                // Traducir códigos de error de subida a mensajes legibles
                switch ($_FILES["pdfs"]["error"][$key]) {
                    case UPLOAD_ERR_INI_SIZE:
                        $errores[] = "El archivo '" . htmlspecialchars($nombre) . "' excede el tamaño permitido por el servidor (directiva upload_max_filesize en php.ini).";
                        break;
                    case UPLOAD_ERR_FORM_SIZE:
                        $errores[] = "El archivo '" . htmlspecialchars($nombre) . "' excede el tamaño permitido en el formulario (MAX_FILE_SIZE).";
                        break;
                    case UPLOAD_ERR_PARTIAL:
                        $errores[] = "El archivo '" . htmlspecialchars($nombre) . "' se subió solo parcialmente.";
                        break;
                    case UPLOAD_ERR_NO_FILE:
                        // Este caso no debería ocurrir si el 'name' no está vacío, pero se incluye por completitud.
                        $errores[] = "No se subió ningún archivo.";
                        break;
                    default:
                        $errores[] = "Error desconocido al subir el archivo '" . htmlspecialchars($nombre) . "'.";
                        break;
                }
            }
        }

        // ======================================================================
        // MOSTRAR RESULTADOS
        // ======================================================================

        echo "<h2>Resultados de la Subida</h2>";

        if (!empty($rutasArchivos)) {
            echo "<h3>Archivos subidos exitosamente:</h3>";
            echo "<ul>";
            foreach ($rutasArchivos as $archivo) {
                echo "<li>";
                echo "<strong>Nombre:</strong> " . htmlspecialchars($archivo['nombre']) . "<br>";
                echo "<strong>Ruta en el servidor:</strong> " . htmlspecialchars($archivo['ruta_servidor']) . "<br>";
                echo "<strong>URL de acceso:</strong> <a href='" . htmlspecialchars($archivo['url']) . "' target='_blank'>" . htmlspecialchars($archivo['url']) . "</a>";
                echo "</li><br>";
            }
            echo "</ul>";
        }

        if (!empty($errores)) {
            echo "<h3>Ocurrieron los siguientes errores:</h3>";
            echo "<ul style='color: red;'>";
            foreach ($errores as $error) {
                echo "<li>" . $error . "</li>";
            }
            echo "</ul>";
        }
        
    } else {
        echo "<p>No se seleccionó ningún archivo para subir.</p>";
    }
} else {
    echo "<p>Por favor, envía el formulario desde la página principal.</p>";
}
?>