<?php
/**
 * Configuration Base de données - PROTÉGÉ CONTRE L'ACCÈS DIRECT
 * 
 * Ce fichier NE DOIT JAMAIS être accessible via le navigateur.
 * Il est destiné à être INCLUS (require/include) par d'autres scripts PHP uniquement.
 * 
 * SÉCURITÉ : Si ce fichier est accessible via HTTP, la base de données est compromise.
 * Vérifiez que .htaccess bloque l'accès direct ou déplacez ce fichier hors de la racine web.
 */

// Empêche l'accès direct via le navigateur
if (basename($_SERVER['SCRIPT_FILENAME'] ?? '') === basename(__FILE__)) {
    header('HTTP/1.0 403 Forbidden');
    exit('Accès direct interdit. Ce fichier ne peut être inclus que par d\'autres scripts.');
}

// Configuration Base de données PointageBus
define('DB_HOST_POINTAGE', '127.0.0.1');
define('DB_USER_POINTAGE', 'transubd_transub_user');
define('DB_PASS_POINTAGE', 'Tr@nsub2@24');
define('DB_NAME_POINTAGE', 'transubd_PointageBus');

// Configuration Base de données GGR (Utilisateurs)
define('DB_HOST_GGR', '127.0.0.1');
define('DB_USER_GGR', 'transubd_transub_user');
define('DB_PASS_GGR', 'Tr@nsub2@24');
define('DB_NAME_GGR', 'transubd_GGR');

function getConnectionPointage() {
    try {
        $conn = new mysqli(DB_HOST_POINTAGE, DB_USER_POINTAGE, DB_PASS_POINTAGE, DB_NAME_POINTAGE);
        if ($conn->connect_error) {
            throw new Exception("Erreur connexion Pointage: " . $conn->connect_error);
        }
        $conn->set_charset("utf8mb4");
        return $conn;
    } catch (Exception $e) {
        return null;
    }
}

function getConnectionGGR() {
    try {
        $conn = new mysqli(DB_HOST_GGR, DB_USER_GGR, DB_PASS_GGR, DB_NAME_GGR);
        if ($conn->connect_error) {
            throw new Exception("Erreur connexion GGR: " . $conn->connect_error);
        }
        $conn->set_charset("utf8mb4");
        return $conn;
    } catch (Exception $e) {
        return null;
    }
}

// Normalise récursivement en UTF-8
function normalizeUtf8($value) {
    if (is_array($value)) {
        $normalized = array();
        foreach ($value as $k => $v) {
            $normalized[$k] = normalizeUtf8($v);
        }
        return $normalized;
    }

    if (is_string($value)) {
        // Si déjà UTF-8 valide, on garde
        if (preg_match('//u', $value)) {
            return $value;
        }

        // Tentative conversion ISO-8859-1/Windows-1252 -> UTF-8
        if (function_exists('mb_convert_encoding')) {
            return mb_convert_encoding($value, 'UTF-8', 'ISO-8859-1,Windows-1252,UTF-8');
        }

        if (function_exists('iconv')) {
            $converted = @iconv('ISO-8859-1', 'UTF-8//IGNORE', $value);
            if ($converted !== false) {
                return $converted;
            }
        }
    }

    return $value;
}

// Fonction pour envoyer une réponse JSON
function sendResponse($data, $success = true, $message = "") {
    header('Content-Type: application/json; charset=utf-8');
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST');
    header('Access-Control-Allow-Headers: Content-Type');
    
    $response = array(
        'success' => $success,
        'data' => normalizeUtf8($data),
        'message' => normalizeUtf8($message)
    );

    echo json_encode(
        $response,
        JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_SUBSTITUTE
    );
    exit;
}

// Fonction pour envoyer une erreur
function sendError($message) {
    sendResponse(null, false, $message);
}
?>