38808-vm/includes/settings.php
2026-02-28 05:37:18 +00:00

65 lines
2.9 KiB
PHP

<?php
/**
* Central Settings Management
* Loads all system settings from database tables (charity_settings, smtp_settings)
*/
if (!function_exists('get_settings')) {
function get_settings() {
static $settings = null;
if ($settings === null) {
try {
// Fetch Charity Info
$charity_stmt = db()->query("SELECT * FROM charity_settings WHERE id = 1");
$charity = $charity_stmt->fetch();
// Fetch SMTP Info
$smtp_stmt = db()->query("SELECT * FROM smtp_settings WHERE id = 1");
$smtp = $smtp_stmt->fetch();
$settings = [
'site_name' => $charity['charity_name'] ?? 'نظام إدارة البريد',
'site_email' => $charity['charity_email'] ?? '',
'site_phone' => $charity['charity_phone'] ?? '',
'site_address' => $charity['charity_address'] ?? '',
'site_logo' => $charity['charity_logo'] ?? '',
'site_favicon' => $charity['charity_favicon'] ?? '',
'site_maintenance' => (bool)($charity['site_maintenance'] ?? 0),
'site_footer' => $charity['site_footer'] ?? '',
'allow_registration' => (bool)($charity['allow_registration'] ?? 0),
'smtp' => [
'host' => $smtp['smtp_host'] ?? '',
'port' => $smtp['smtp_port'] ?? 587,
'secure' => $smtp['smtp_secure'] ?? 'tls',
'user' => $smtp['smtp_user'] ?? '',
'pass' => $smtp['smtp_pass'] ?? '',
'from_email' => $smtp['from_email'] ?? '',
'from_name' => $smtp['from_name'] ?? '',
'reply_to' => $smtp['reply_to'] ?? '',
'enabled' => (bool)($smtp['is_enabled'] ?? 1),
'failures' => (int)($smtp['consecutive_failures'] ?? 0),
'max_failures' => (int)($smtp['max_failures'] ?? 5)
]
];
} catch (Exception $e) {
// Fallback settings if DB is not ready
$settings = [
'site_name' => 'نظام إدارة البريد',
'site_maintenance' => false,
'smtp' => ['enabled' => false]
];
}
}
return $settings;
}
}
// Global settings variable
$sys_settings = get_settings();
// Maintenance Mode Check
if ($sys_settings['site_maintenance'] && !isAdmin() && basename($_SERVER['PHP_SELF']) !== 'login.php' && basename($_SERVER['PHP_SELF']) !== 'logout.php') {
die("<h1>النظام تحت الصيانة حالياً</h1><p>يرجى المحاولة مرة أخرى في وقت لاحق.</p>");
}