From 3da15eab1df9c9b322c87fc1aaee38d1ad8dab7b Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 31 Mar 2024 20:14:51 +0100 Subject: [PATCH] fix: misleading error in server status widget if server is offline --- .../DefaultRevamp/widgets/server_status.tpl | 19 ++++++++++--------- modules/Core/widgets/ServerStatusWidget.php | 18 +++++++++++++----- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/custom/templates/DefaultRevamp/widgets/server_status.tpl b/custom/templates/DefaultRevamp/widgets/server_status.tpl index f3f3886783..8520f4a9ab 100644 --- a/custom/templates/DefaultRevamp/widgets/server_status.tpl +++ b/custom/templates/DefaultRevamp/widgets/server_status.tpl @@ -6,15 +6,16 @@
{if $SERVER.status_value eq 1} - {$ONLINE} - {else} + {$ONLINE} + {else} {$OFFLINE} - {/if} -
{$SERVER.name}
-
+ {/if} +
{$SERVER.name}
+
- {if $SERVER.status_value eq 1} -
+
+ + {if $SERVER.status_value eq 1}

{$ONLINE}: {$SERVER.player_count} / {$SERVER.player_count_max}

{if isset($SERVER.format_player_list) && count($SERVER.format_player_list) && ($SERVER.player_count > 0)}

@@ -27,8 +28,8 @@ {if isset($VERSION)}

{$VERSION}

{/if} -

{$IP}: {$SERVER.join_at}

- {/if} + {/if} +

{$IP}: {$SERVER.join_at}

{else} diff --git a/modules/Core/widgets/ServerStatusWidget.php b/modules/Core/widgets/ServerStatusWidget.php index a6e8927f7a..a86d92e3c3 100644 --- a/modules/Core/widgets/ServerStatusWidget.php +++ b/modules/Core/widgets/ServerStatusWidget.php @@ -34,11 +34,12 @@ public function initialise(): void { if ($this->_cache->isCached('server_status')) { $server_array = $this->_cache->retrieve('server_status'); } else { - $server = DB::getInstance()->query('SELECT * FROM nl2_mc_servers WHERE is_default = 1')->results(); - $server = $server[0]; + $server = DB::getInstance()->query('SELECT * FROM nl2_mc_servers WHERE is_default = 1'); - if ($server != null) { + if ($server->count()) { + $server = $server->first(); $server_array_request = HttpClient::get(rtrim(URL::getSelfURL(), '/') . URL::build('/queries/server/', 'id=' . $server->id)); + if (!$server_array_request->hasError()) { $server_array = $server_array_request->json(true); foreach ($server_array as $key => $value) { @@ -49,10 +50,17 @@ public function initialise(): void { $server_array[$key] = Output::getClean($value); } } - $server_array['name'] = $server->name; - $server_array['join_at'] = $server->ip; + } else { + $server_array = [ + 'status_value' => 0, + 'status' => $this->_language->get('general', 'offline'), + 'server_offline' => $this->_language->get('general', 'server_offline'), + ]; } + $server_array['name'] = Output::getCLean($server->name); + $server_array['join_at'] = Output::getClean($server->ip); + $this->_cache->store('server_status', $server_array, 120); } }