PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; return new PDO($dsn, $user, $pass, $options); } catch (\PDOException $e) { throw $e; } } // ตรวจสอบการ Login function checkLogin() { if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) { header("Location: login.php"); exit; } } // ตรวจสอบสิทธิ์ผู้ดูแลระบบ (Admin) function checkAdmin() { checkLogin(); if (!isset($_SESSION['is_admin']) || $_SESSION['is_admin'] !== true) { // Not an admin, redirect to index header("Location: index.php"); exit; } } // แปลงวันที่ให้อยู่ในรูปแบบ วัน-เดือน-ปี(พ.ศ.) function formatThaiDate($datetime) { if (empty($datetime)) return ''; $timestamp = strtotime($datetime); if (!$timestamp) return ''; $d = date('d', $timestamp); $m = date('m', $timestamp); $y = date('Y', $timestamp) + 543; // Check if it has time if (date('H:i:s', $timestamp) !== '00:00:00') { $time = date('H:i', $timestamp); return "$d-$m-$y $time น."; } return "$d-$m-$y"; } // บันทึกประวัติการใช้งานระบบ (System Logs) function addSystemLog($action_type, $details = '') { try { $log_db = getDB(DB_LOG_HOST, DB_LOG_NAME, DB_LOG_USER, DB_LOG_PASS); $cid = isset($_SESSION['cid']) ? substr(str_replace('-', '', $_SESSION['cid']), 0, 13) : null; $name = isset($_SESSION['fullname']) ? mb_substr($_SESSION['fullname'], 0, 100) : null; $ip = isset($_SERVER['REMOTE_ADDR']) ? substr($_SERVER['REMOTE_ADDR'], 0, 45) : null; $stmt = $log_db->prepare("INSERT INTO system_logs (action_type, user_cid, user_name, details, ip_address) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([$action_type, $cid, $name, $details, $ip]); } catch (Exception $e) { // บันทึก error ลงไฟล์ error.log เพื่อให้ตรวจสอบได้ง่ายขึ้น error_log("addSystemLog Error: " . $e->getMessage()); } } // ========================================== // System Settings Functions // ========================================== function getSystemSetting($key, $default = '') { try { $db = getDB(DB_LOG_HOST, DB_LOG_NAME, DB_LOG_USER, DB_LOG_PASS); $stmt = $db->prepare("SELECT setting_value FROM general_settings WHERE setting_key = ?"); $stmt->execute([$key]); $row = $stmt->fetch(); return $row ? $row['setting_value'] : $default; } catch (PDOException $e) { return $default; } } function setSystemSetting($key, $value) { try { $db = getDB(DB_LOG_HOST, DB_LOG_NAME, DB_LOG_USER, DB_LOG_PASS); $stmt = $db->prepare("INSERT INTO general_settings (setting_key, setting_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)"); return $stmt->execute([$key, $value]); } catch (PDOException $e) { return false; } } // Auto-create and initialize general_settings table if it doesn't exist try { $db = getDB(DB_LOG_HOST, DB_LOG_NAME, DB_LOG_USER, DB_LOG_PASS); $db->exec("CREATE TABLE IF NOT EXISTS general_settings ( setting_key VARCHAR(50) PRIMARY KEY, setting_value TEXT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"); // Insert defaults if not exists $db->exec("INSERT IGNORE INTO general_settings (setting_key, setting_value) VALUES ('topbar_text', 'HOSxP Mapping Data'), ('footer_text', 'หน่วยงานสุขภาพดิจิทัล โรงพยาบาลเกาะสมุย') ;"); } catch (PDOException $e) { // Ignore error if DB connection fails during config load }