<?php
/**
 * @intranet-file common/db.php
 * @intranet-file-version 2026.03.13.1
 * @intranet-file-date 2026-03-13
 * @intranet-file-owner CSIF Intranet
 */

declare(strict_types=1);

// Asegurar configuración cargada
if (!defined('DB_HOST')) {
    $cfg = __DIR__ . '/config.php';
    if (!is_file($cfg)) {
        http_response_code(500);
        die("Falta common/config.php. Ejecuta el instalador o configura common/config.php y config/secrets.local.php.");
    }
    require_once $cfg;
}

try {
    $dbPort = defined('DB_PORT') ? (int) DB_PORT : 3306;
    $db = new PDO("mysql:host=" . DB_HOST . ";port=" . $dbPort . ";dbname=" . DB_NAME . ";charset=utf8mb4", DB_USER, DB_PASS);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    $db->exec("SET NAMES utf8mb4 COLLATE utf8mb4_spanish_ci");
} catch (PDOException $e) {
    // En producción no mostrar el error detallado al usuario
    error_log("DB Error: " . $e->getMessage());
    die("Error de conexión con la base de datos.");
}

/**
 * Devuelve la conexión PDO (singleton simple sobre $db).
 */
function db(): PDO
{
    /** @var PDO $db */
    global $db;
    return $db;
}

?>
