get('maintenance_enabled', '0') === '1'; } catch (\Throwable $e) { // fall back to file flag } } return file_exists(self::FLAG_PATH); } public static function enable(string $message = ''): bool { if (isset($GLOBALS['db'])) { try { require_once __DIR__ . '/Settings.php'; $settings = new Settings($GLOBALS['db']); $ok1 = $settings->set('maintenance_enabled', '1'); $ok2 = $settings->set('maintenance_message', $message); return $ok1 && $ok2; } catch (\Throwable $e) { // fall back to file flag } } $dir = dirname(self::FLAG_PATH); if (!is_dir($dir)) { mkdir($dir, 0755, true); } $content = $message !== '' ? $message : 'Site is under maintenance'; return file_put_contents(self::FLAG_PATH, $content) !== false; } public static function disable(): bool { if (isset($GLOBALS['db'])) { try { require_once __DIR__ . '/Settings.php'; $settings = new Settings($GLOBALS['db']); $ok1 = $settings->set('maintenance_enabled', '0'); // keep last message for reference, optional to clear return $ok1; } catch (\Throwable $e) { // fall back to file flag } } if (file_exists(self::FLAG_PATH)) { return unlink(self::FLAG_PATH); } return true; } public static function getMessage(): string { if (!self::isEnabled()) { return ''; } $envMsg = getenv('JILO_MAINTENANCE_MESSAGE'); if ($envMsg) { return trim($envMsg); } if (isset($GLOBALS['db'])) { try { require_once __DIR__ . '/Settings.php'; $settings = new Settings($GLOBALS['db']); return (string)$settings->get('maintenance_message', ''); } catch (\Throwable $e) { // ignore and fall back to file flag } } $msg = @file_get_contents(self::FLAG_PATH); return is_string($msg) ? trim($msg) : ''; } }