<?php
// 開啟 session，用於記錄登入狀態
session_start();

// ==========================================
// 1. MySQL 全域資料庫設定
// ==========================================
$db_host = 'localhost';
$db_name = 'timetkrd_tmtrdsnet';
$db_user = 'timetkrd_tmtrdsnetusr';
$db_pass = 'QWAGcNiM^crZv87j';

try {
    // 建立 MySQL PDO 連線
    $mysql_db = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
    // 設定錯誤模式為拋出例外，方便 Debug
    $mysql_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // 提取資料時預設返回關聯陣列
    $mysql_db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    
    // ==========================================
    // ★ 全球時區自動同步設定 (解決跨國伺服器問題)
    // ==========================================
    try {
        $stmt_tz = $mysql_db->query("SELECT timezone FROM global_settings WHERE id = 1");
        $tz_data = $stmt_tz->fetch();
        $sys_timezone = ($tz_data && !empty($tz_data['timezone'])) ? $tz_data['timezone'] : 'Asia/Taipei';
        
        // 1. 設定 PHP 執行環境的時區
        date_default_timezone_set($sys_timezone); 
        
        // 2. 動態計算時區偏移量，並設定給 MySQL，確保資料庫寫入時間也一致
        $now = new DateTime();
        $mins = $now->getOffset() / 60;
        $sgn = ($mins < 0 ? -1 : 1);
        $mins = abs($mins);
        $hrs = floor($mins / 60);
        $mins -= $hrs * 60;
        $offset = sprintf('%+d:%02d', $sgn * $hrs, $mins);
        $mysql_db->exec("SET time_zone = '$offset'");
        
    } catch (Exception $e) {
        // 如果 global_settings 表格還沒建好，預設退回台灣時間防呆
        date_default_timezone_set('Asia/Taipei'); 
    }

} catch (PDOException $e) {
    die("MySQL 連線失敗：" . $e->getMessage());
}

// ==========================================
// 2. SQLite 個人資料庫連線函數
// ==========================================
/**
 * 取得特定玩家的 SQLite 連線
 * @param string $sqlite_file_path SQLite 檔案相對路徑
 * @return PDO
 */
function getPlayerSQLiteConnection($sqlite_file_path) {
    // 確保檔案路徑正確，以網站根目錄為基準
    $full_path = __DIR__ . '/' . $sqlite_file_path;
    
    try {
        $sqlite_db = new PDO("sqlite:" . $full_path);
        $sqlite_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sqlite_db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        
        // 啟用 SQLite 的外鍵支持
        $sqlite_db->exec('PRAGMA foreign_keys = ON;');
        
        return $sqlite_db;
    } catch (PDOException $e) {
        die("SQLite 連線失敗：" . $e->getMessage());
    }
}
?>