Co-authored-by: blaerf <blaerf@gmx.de> Reviewed-on: https://git.eckertplayground.de/taarly/PHP_AdminTool_Projekt/pulls/10
73 lines
2.5 KiB
PHP
73 lines
2.5 KiB
PHP
<?php
|
|
|
|
// Strenge Typprüfung für Parameter- und Rückgabetypen aktivieren.
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Services\Snmp\SnmpServerStatusService;
|
|
|
|
/**
|
|
* Controller für das Dashboard.
|
|
* Zuständig für:
|
|
* - Abrufen des Serverstatus (über SnmpServerStatusService)
|
|
* - Auswählen und Rendern der Dashboard-View
|
|
*
|
|
* NEU:
|
|
* - Gibt ein View-Result zurück, das von index.php + Layout gerendert wird.
|
|
*/
|
|
class DashboardController
|
|
{
|
|
/** @var array<string, mixed> Vollständige Anwendungskonfiguration (aus config.php) */
|
|
private array $config;
|
|
|
|
/** @var SnmpServerStatusService Service, der den Serverstatus (später per SNMP) liefert */
|
|
private SnmpServerStatusService $snmpService;
|
|
|
|
/**
|
|
* Übergibt die Konfiguration an den Controller und initialisiert den SNMP-Statusservice.
|
|
*
|
|
* @param array<string, mixed> $config Vollständige Konfiguration aus config.php
|
|
*/
|
|
public function __construct(array $config)
|
|
{
|
|
// Komplette Config lokal speichern (falls später weitere Werte benötigt werden).
|
|
$this->config = $config;
|
|
|
|
// Teilbereich "snmp" aus der Konfiguration ziehen.
|
|
// Wenn nicht vorhanden, wird ein leeres Array übergeben (der Service prüft das selbst).
|
|
$snmpConfig = $config['snmp'] ?? [];
|
|
|
|
// SNMP-Service initialisieren, der den Serverstatus liefert.
|
|
$this->snmpService = new SnmpServerStatusService($snmpConfig);
|
|
}
|
|
|
|
/**
|
|
* Zeigt das Dashboard an.
|
|
* Holt die Serverstatus-Daten aus dem SnmpServerStatusService und übergibt sie an die View.
|
|
*
|
|
* @return array<string, mixed> View-Result für das zentrale Layout
|
|
*/
|
|
public function show(): array
|
|
{
|
|
// Serverstatus über den SNMP-Service ermitteln.
|
|
// In der aktuellen Version liefert der Service noch Demo-Daten.
|
|
$serverStatus = $this->snmpService->getServerStatus();
|
|
|
|
// Pfad zur Dashboard-View (Template-Datei) ermitteln.
|
|
$viewPath = __DIR__ . '/../../public/views/dashboard.php';
|
|
|
|
return [
|
|
'view' => $viewPath,
|
|
'data' => [
|
|
// Die View erwartet aktuell $serverStatus.
|
|
'serverStatus' => $serverStatus,
|
|
'loginPage' => false,
|
|
],
|
|
'pageTitle' => 'Dashboard',
|
|
// In der Sidebar soll der Dashboard-Menüpunkt aktiv sein.
|
|
'activeMenu' => 'dashboard',
|
|
];
|
|
}
|
|
}
|