SettingService::getDefaultTenantId(), 'default_role_id' => SettingService::getDefaultRoleId(), 'default_department_id' => SettingService::getDefaultDepartmentId(), 'app_title' => SettingService::getAppTitle(), 'app_locale' => SettingService::getAppLocale(), 'app_theme' => SettingService::getAppTheme(), 'app_theme_user' => SettingService::isUserThemeAllowed(), 'app_primary_color' => SettingService::getAppPrimaryColor(), 'smtp_host' => SettingService::getSmtpHost(), 'smtp_port' => SettingService::getSmtpPort(), 'smtp_user' => SettingService::getSmtpUser(), 'smtp_secure' => SettingService::getSmtpSecure(), 'smtp_from' => SettingService::getSmtpFrom(), 'smtp_from_name' => SettingService::getSmtpFromName(), ]; $settings = [ 'default_tenant' => SettingService::get(SettingService::DEFAULT_TENANT_KEY), 'default_role' => SettingService::get(SettingService::DEFAULT_ROLE_KEY), 'default_department' => SettingService::get(SettingService::DEFAULT_DEPARTMENT_KEY), 'app_title' => SettingService::get(SettingService::APP_TITLE_KEY), 'app_locale' => SettingService::get(SettingService::APP_LOCALE_KEY), 'app_theme' => SettingService::get(SettingService::APP_THEME_KEY), 'app_theme_user' => SettingService::get(SettingService::APP_THEME_USER_KEY), 'app_primary_color' => SettingService::get(SettingService::APP_PRIMARY_COLOR_KEY), 'smtp_host' => SettingService::get(SettingService::SMTP_HOST_KEY), 'smtp_port' => SettingService::get(SettingService::SMTP_PORT_KEY), 'smtp_user' => SettingService::get(SettingService::SMTP_USER_KEY), 'smtp_password' => SettingService::get(SettingService::SMTP_PASSWORD_KEY), 'smtp_secure' => SettingService::get(SettingService::SMTP_SECURE_KEY), 'smtp_from' => SettingService::get(SettingService::SMTP_FROM_KEY), 'smtp_from_name' => SettingService::get(SettingService::SMTP_FROM_NAME_KEY), ]; if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!isset($_POST['settings_submit'])) { Router::redirect('admin/settings'); } Guard::requirePermission(PermissionService::SETTINGS_UPDATE); $defaultTenantId = (int) ($_POST['default_tenant_id'] ?? 0); $defaultRoleId = (int) ($_POST['default_role_id'] ?? 0); $defaultDepartmentId = (int) ($_POST['default_department_id'] ?? 0); $appTitle = trim((string) ($_POST['app_title'] ?? '')); $appLocale = trim((string) ($_POST['app_locale'] ?? '')); $appTheme = trim((string) ($_POST['app_theme'] ?? '')); $appThemeUser = isset($_POST['app_theme_user']); $rawPrimaryColor = $_POST['app_primary_color'] ?? ''; if (is_array($rawPrimaryColor)) { $rawPrimaryColor = ''; } $appPrimaryColor = trim((string) $rawPrimaryColor); if (in_array(strtolower($appPrimaryColor), ['null', 'undefined'], true)) { $appPrimaryColor = ''; } $smtpHost = trim((string) ($_POST['smtp_host'] ?? '')); $smtpPort = (int) ($_POST['smtp_port'] ?? 0); $smtpUser = trim((string) ($_POST['smtp_user'] ?? '')); $smtpPassword = (string) ($_POST['smtp_password'] ?? ''); $smtpSecure = trim((string) ($_POST['smtp_secure'] ?? '')); $smtpFrom = trim((string) ($_POST['smtp_from'] ?? '')); $smtpFromName = trim((string) ($_POST['smtp_from_name'] ?? '')); SettingService::setDefaultTenantId($defaultTenantId > 0 ? $defaultTenantId : null); SettingService::setDefaultRoleId($defaultRoleId > 0 ? $defaultRoleId : null); SettingService::setDefaultDepartmentId($defaultDepartmentId > 0 ? $defaultDepartmentId : null); SettingService::setAppTitle($appTitle); SettingService::setAppLocale($appLocale); SettingService::setAppTheme($appTheme); SettingService::setUserThemeAllowed($appThemeUser); $primaryOk = SettingService::setAppPrimaryColor($appPrimaryColor); if (!$primaryOk) { $appPrimaryColor = ''; Flash::error('Primary color is invalid', 'admin/settings', 'app_primary_invalid'); } SettingService::setSmtpHost($smtpHost); SettingService::setSmtpPort($smtpPort > 0 ? $smtpPort : null); SettingService::setSmtpUser($smtpUser); if (trim($smtpPassword) !== '') { SettingService::setSmtpPassword($smtpPassword); } SettingService::setSmtpSecure($smtpSecure); SettingService::setSmtpFrom($smtpFrom); SettingService::setSmtpFromName($smtpFromName); $cacheFile = __DIR__ . '/../../../config/settings.php'; $cacheData = []; if (is_file($cacheFile)) { $existing = include $cacheFile; if (is_array($existing)) { $cacheData = $existing; } } $cacheData['app_title'] = $appTitle !== '' ? $appTitle : null; $cacheData['app_locale'] = $appLocale !== '' ? $appLocale : null; $cacheData['app_theme'] = $appTheme !== '' ? $appTheme : null; $cacheData['app_theme_user'] = $appThemeUser ? '1' : '0'; $cacheData['app_primary_color'] = $appPrimaryColor !== '' ? $appPrimaryColor : null; file_put_contents($cacheFile, "