<?php
// CONFIGURACIÓN DE PRODUCCIÓN - BASE DE DATOS SEGURA
// NO SUBIR CREDENCIALES REALES AL REPOSITORIO

// Usar variables de entorno para credenciales sensibles
$host = $_ENV['DB_HOST'] ?? 'localhost';
$port = $_ENV['DB_PORT'] ?? '3306';
$db = $_ENV['DB_NAME'] ?? 'matricula';
$user = $_ENV['DB_USER'] ?? 'app_user'; // NO usar root en producción
$pass = $_ENV['DB_PASS'] ?? '';
$charset = 'utf8mb4';

// Configuración de PDO con seguridad mejorada
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
    PDO::ATTR_TIMEOUT            => 30, // Timeout de conexión
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false, // Ajustar según SSL
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES $charset"
];

try {
    // DSN para producción (no usar unix_socket)
    $dsn = "mysql:host=$host;port=$port;dbname=$db;charset=$charset";
    $pdo = new PDO($dsn, $user, $pass, $options);

    // Configuraciones adicionales de seguridad
    $pdo->exec("SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
} catch (PDOException $e) {
    // En producción, no mostrar detalles del error
    error_log("Error de conexión a base de datos: " . $e->getMessage());

    if ($_ENV['APP_ENV'] === 'production') {
        die('Error de conexión a la base de datos. Contacte al administrador.');
    } else {
        throw new PDOException($e->getMessage(), (int)$e->getCode());
    }
}
