PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ]; return new PDO($dsn, $user, $pass, $options); } function getDbConnection(): PDO { // Routage dynamique posé par aspic.php à l'identification (MIRADOR) : // prioritaire dès qu'une session valide le porte. if (session_status() === PHP_SESSION_ACTIVE && !empty($_SESSION['ASPIC_DB_HOST'])) { return ouvrirConnexionPdo( $_SESSION['ASPIC_DB_HOST'], $_SESSION['ASPIC_DB_NAME'], getenv('DB_USER') ?: 'crm_user', getenv('DB_PASS') ?: '', (int) ($_SESSION['ASPIC_DB_PORT'] ?? 3306) ); } // Repli : base par défaut du conteneur, inchangé depuis avant MIRADOR — // utilisé par les scripts publics sans session (prospection). $host = getenv('DB_HOST') ?: 'mysql'; $db = getenv('DB_NAME') ?: 'crm'; $user = getenv('DB_USER') ?: 'crm_user'; $pass = getenv('DB_PASS') ?: ''; return ouvrirConnexionPdo($host, $db, $user, $pass); } function getRouterConnection(): PDO { $host = getenv('ROUTER_DB_HOST') ?: 'mysql2'; $db = getenv('ROUTER_DB_NAME') ?: 'MIRADOR'; $user = getenv('ROUTER_DB_USER') ?: 'crm_user'; $pass = getenv('ROUTER_DB_PASS') ?: ''; return ouvrirConnexionPdo($host, $db, $user, $pass); }