132 lines
4.9 KiB
PHP
132 lines
4.9 KiB
PHP
<?php
|
|
session_start();
|
|
|
|
// การตั้งค่าเชื่อมต่อฐานข้อมูล HOSxP (his)
|
|
define('DB_HIS_HOST', 'localhost');
|
|
define('DB_HIS_NAME', 'his');
|
|
define('DB_HIS_USER', 'root');
|
|
define('DB_HIS_PASS', '');
|
|
|
|
// การตั้งค่าเชื่อมต่อฐานข้อมูล HR (สำหรับ Login)
|
|
define('DB_HR_HOST', 'localhost');
|
|
define('DB_HR_NAME', 'hr_db');
|
|
define('DB_HR_USER', 'root');
|
|
define('DB_HR_PASS', '');
|
|
|
|
// การตั้งค่าเชื่อมต่อฐานข้อมูลประวัติ (hosxp_export_person)
|
|
define('DB_LOG_HOST', 'localhost');
|
|
define('DB_LOG_NAME', 'hosxp_export_person');
|
|
define('DB_LOG_USER', 'root');
|
|
define('DB_LOG_PASS', '');
|
|
|
|
function getDB($host, $name, $user, $pass) {
|
|
try {
|
|
$dsn = "mysql:host=$host;dbname=$name;charset=utf8mb4";
|
|
$options = [
|
|
PDO::ATTR_ERRMODE => 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
|
|
}
|