-
-
-
-
-
-
-
-
- | company_uuid: |
- |
-
-
- | source_uuid: |
- |
-
-
- | company_source_id: |
- |
-
-
- | company_source_id2: |
- |
-
-
- | company_name: |
- |
-
-
- | company_state: |
- |
-
-
- | company_create_timestamp: |
- |
-
-
- | company_modified_timestamp: |
- |
-
-
-
+
+
+
+
+
+
+
+
+
+
+ | company_uuid: |
+ |
+
+
+ | source_uuid: |
+ |
+
+
+ | company_source_id: |
+ |
+
+
+ | company_source_id2: |
+ |
+
+
+ | company_name: |
+ |
+
+
+ | company_state: |
+ |
+
+
+ | company_create_timestamp: |
+ |
+
+
+ | company_modified_timestamp: |
+ |
+
+
+
-
+
+checkPermissions('servers', 'RO', true)) {
+ if (count($servers_data) > 0) {
+ $serverOverview->serverOverviewOutPut();
+ }
+}
+?>
\ No newline at end of file
diff --git a/pub/bin/pages/servers/pageServerOverview_view.php b/pub/bin/pages/servers/pageServerOverview_view.php
index f6e5866..cbac337 100644
--- a/pub/bin/pages/servers/pageServerOverview_view.php
+++ b/pub/bin/pages/servers/pageServerOverview_view.php
@@ -1,6 +1,7 @@
checkPermissions('servers', 'RO', true)) {
+$API_servers = new API_servers();
+if (!$API_servers->checkPermissions('servers', 'RO', true)) {
echo 'error 401 unauthorized';
exit;
}
@@ -30,6 +32,7 @@ $jsScriptLoadData['datatables'] = true;
$jsScriptLoadData['multiFilterSelectServers'] = true;
# PageClasses Setup
+$serverOverview = new serverOverviewBuilder();
# Retrieve Information for the page
if (!isset($_GET['del'])) {
@@ -39,60 +42,6 @@ if (!isset($_GET['del'])) {
$API_servers->baseQuery = "SELECT * FROM servers WHERE servers.server_state != 'deleted'";
}
-$allBackupTypes = [];
-$allLicenseTypes = [];
-foreach ($servers as $server) {
- if (!empty($server['server_backup'])) {
- $backups = json_decode($server['server_backup'], true);
- if (is_array($backups)) {
- foreach ($backups as $item) {
- foreach ($item as $key => $value) {
- $allBackupTypes[$key] = true; // use keys as unique types
- }
- }
- }
- }
-
- if (!empty($server['server_licenses'])) {
- $licenses = json_decode($server['server_licenses'], true);
- if (is_array($licenses)) {
- foreach ($licenses as $item) {
- foreach ($item as $key => $value) {
- $allLicenseTypes[$key] = true; // keys are license types
- }
- }
- }
- }
-
-}
-$allBackupTypes = array_keys($allBackupTypes);
-sort($allBackupTypes);
-
-$allLicenseTypes = array_keys($allLicenseTypes);
-sort($allLicenseTypes);
-
-$showColumns = array(
- 'server_hostname' => false,
- 'company_name' => false,
- 'server_power_state' => false,
- 'server_os' => false,
- 'server_cpu' => false,
- 'server_memory' => false,
- 'server_memory_demand' => false,
- 'server_disks' => false,
- 'server_ipv4' => false,
- 'server_ipv6' => false,
- 'server_vm_snapshot' => false,
- 'server_vm_generation' => false,
- 'server_licenses' => false,
- 'server_backup' => false,
-);
-
-if (isset($_COOKIE['serverTableColumns'])) {
- $CheckedColumns = json_decode(htmlspecialchars(($_COOKIE['serverTableColumns']), true));
- foreach ($CheckedColumns as $CheckedColumn) {
- $showColumns[$CheckedColumn] = true;
- }
} else {
if ($GLOBALS['modules_enabled']['customers']) {
$API_servers->baseQuery = "SELECT * FROM servers LEFT JOIN companies ON companies.company_uuid = servers.company_uuid";
@@ -101,8 +50,11 @@ if (isset($_COOKIE['serverTableColumns'])) {
}
}
- // Otherwise return trimmed float
- return rtrim(rtrim(number_format($num, 10, '.', ''), '0'), '.');
+$servers_data = $API_servers->getServers();
+$serverOverview->servers = $servers_data;
+$serverOverview->processServerData();
+if (!$GLOBALS['modules_enabled']['customers']) {
+ $serverOverview->showCompanies = false;
}
# Set breadcrumb data
@@ -110,363 +62,6 @@ array_push($GLOBALS['breadCrumbArray'], array('display' => __('permission'), 'hr
array_push($GLOBALS['breadCrumbArray'], array('display' => __('view'), 'href' => ''));
# Start page output
+$serverOverview->serverOverviewOutPut();
?>
-
-
-
-
-
-
-
-
- |
- |
- |
- |
-
-
- |
-
-
- |
- |
-
-
- |
-
-
- |
-
-
- |
- |
- |
-
- |
-
- |
-
- |
- |
-
-
- |
-
-
-
-
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
-
- |
-
- |
-
- |
- |
- |
-
-
-
-
- 0) {
- $mem_percent = ($demand / $mem) * 100;
- $mem_percent_numb = round($mem_percent, 1);
- $mem_demand = round($mem_percent, 1) . "%"; // round to 1 decimal place
- $mem_percent_sort = $mem_percent_numb;
-
- if ($mem_percent_numb <= 89) {
- $mem_demand_text_color = 'success';
- }
- if ($mem_percent_numb > 89) {
- $mem_demand_text_color = 'secondary';
- }
- if ($mem_percent_numb > 99) {
- $mem_demand_text_color = 'danger';
- }
-
- } else {
- $mem_demand = "N/A";
- $mem_percent_numb = 'N/A';
- $mem_percent_sort = -1;
- }
-
- $ipv4_list = '';
- if (!empty($server['server_ipv4'])) {
- $ips = json_decode($server['server_ipv4'], true);
- if (is_array($ips)) {
- $ipv4_list = implode(', ', $ips);
- }
- }
-
- $ipv6_list = '';
- if (!empty($server['server_ipv6'])) {
- $ips = json_decode($server['server_ipv6'], true);
- if (is_array($ips)) {
- $ipv6_list = implode(', ', $ips);
- }
- }
-
- $thisServerLicenses = [];
- foreach ($allLicenseTypes as $licenseType) {
- $thisServerLicenses[$licenseType] = false;
- }
-
- if (!empty($server['server_licenses'])) {
- $allLicenseTypesServer = json_decode($server['server_licenses'], true);
- if (is_array($allLicenseTypesServer)) {
- foreach ($allLicenseTypesServer as $licenseTypeServer) {
- foreach ($licenseTypeServer as $licenseTypeServerKey => $licenseTypeServerValue) {
- $thisServerLicenses[$licenseTypeServerKey] = true;
- }
- }
- }
- }
-
- $thisServerBackup = [];
- foreach ($allBackupTypes as $BackupType) {
- $thisServerBackup[$BackupType] = false;
- }
-
- if (!empty($server['server_backup'])) {
- $allBackupTypesServer = json_decode($server['server_backup'], true);
- if (is_array($allBackupTypesServer)) {
- foreach ($allBackupTypesServer as $BackupTypeServer) {
- foreach ($BackupTypeServer as $BackupTypeServerKey => $BackupTypeServerValue) {
- $thisServerBackup[$BackupTypeServerKey] = true;
- }
- }
- }
- }
-
- $company_name = '';
- if (strlen($server['company_name']) > 0) {
- $company_name = $server['company_name'];
- }
-
- $server_state_color = returnServerStateColor($server['server_state']);
-
- ?>
-
-
- |
-
- |
-
-
- |
-
-
- |
- |
-
- |
-
-
- |
-
-
-
- |
-
- 0) {
- $sizes = array_column($disks, 'disk_space');
- $totalDiskSpace = array_sum($sizes);
-
- if ($totalDiskSpace > 0) {
- $sortValue = $totalDiskSpace;
- $filterValue = $totalDiskSpace;
- }
- }
- ?>
- data-sort="" data-filter="">
-
- |
-
-
- |
-
-
- |
-
-
- |
-
-
- |
-
-
- ' : '' ?> |
-
- ' : '' ?> |
-
-
- ';
- } elseif ($server['server_power_state'] == 'Running') {
- echo '';
- } ?>
- |
-
-
- |
-
-
- |
-
-
-
-
-
-
-
-
diff --git a/pub/bin/php/Classes/serverOverviewBuilder.php b/pub/bin/php/Classes/serverOverviewBuilder.php
new file mode 100644
index 0000000..ec7065e
--- /dev/null
+++ b/pub/bin/php/Classes/serverOverviewBuilder.php
@@ -0,0 +1,475 @@
+ false,
+ 'company_name' => false,
+ 'server_power_state' => false,
+ 'server_os' => false,
+ 'server_cpu' => false,
+ 'server_memory' => false,
+ 'server_memory_demand' => false,
+ 'server_disks' => false,
+ 'server_ipv4' => false,
+ 'server_ipv6' => false,
+ 'server_vm_snapshot' => false,
+ 'server_vm_generation' => false,
+ 'server_licenses' => false,
+ 'server_backup' => false,
+ 'server_description' => false,
+ );
+
+ public array $allBackupTypes = [];
+ public array $allLicenseTypes = [];
+
+ public bool $showDelBtn = true;
+ public bool $showServerOverviewTitle = true;
+
+ public bool $showCompanies = true;
+
+ public function processServerData()
+ {
+ foreach ($this->servers as $server) {
+ if (!empty($server['server_backup'])) {
+ $backups = json_decode($server['server_backup'], true);
+ if (is_array($backups)) {
+ foreach ($backups as $item) {
+ foreach ($item as $key => $value) {
+ $this->allBackupTypes[$key] = true;
+ }
+ }
+ }
+ }
+
+ if (!empty($server['server_licenses'])) {
+ $licenses = json_decode($server['server_licenses'], true);
+ if (is_array($licenses)) {
+ foreach ($licenses as $item) {
+ foreach ($item as $key => $value) {
+ $this->allLicenseTypes[$key] = true;
+ }
+ }
+ }
+ }
+ }
+
+ $this->allBackupTypes = array_keys($this->allBackupTypes);
+ sort($this->allBackupTypes);
+
+ $this->allLicenseTypes = array_keys($this->allLicenseTypes);
+ sort($this->allLicenseTypes);
+
+
+ if (isset($_COOKIE['serverTableColumns'])) {
+ $CheckedColumns = json_decode(htmlspecialchars(($_COOKIE['serverTableColumns']), true));
+ foreach ($CheckedColumns as $CheckedColumn) {
+ $this->showColumns[$CheckedColumn] = true;
+ }
+ } else {
+ $this->showColumns['server_hostname'] = true;
+ $this->showColumns['company_name'] = true;
+ $this->showColumns['server_os'] = true;
+ $this->showColumns['server_cpu'] = true;
+ $this->showColumns['server_memory'] = true;
+ $this->showColumns['server_memory_demand'] = true;
+ $this->showColumns['server_disks'] = true;
+ $this->showColumns['server_state'] = true;
+ }
+ }
+
+ private function cleanNumber($num)
+ {
+ // If integer value, return without formatting
+ if (floor($num) == $num) {
+ return (string)$num;
+ }
+
+ // Otherwise return trimmed float
+ return rtrim(rtrim(number_format($num, 10, '.', ''), '0'), '.');
+ }
+
+ public function serverOverviewOutPut()
+ { ?>
+
+
+
+
+
+
+
+
+ |
+ |
+ showCompanies) { ?>
+ |
+
+ |
+
+
+ |
+
+
+ |
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+ |
+ |
+ allLicenseTypes as $licenseType) { ?>
+ |
+ allBackupTypes as $backupType) { ?>
+ |
+
+ |
+ |
+
+
+ |
+
+
+
+
+ |
+ |
+ showCompanies) { ?>
+ |
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ allLicenseTypes as $licenseType) { ?>
+ |
+ allBackupTypes as $backupType) { ?>
+ |
+
+ |
+ |
+ |
+
+
+
+
+ servers as $server) {
+ $disks = json_decode($server['server_disks'], true);
+ $totalDiskSpace = 0;
+ if (is_array($disks)) {
+ foreach ($disks as $disk) {
+ $totalDiskSpace += $disk['disk_space'];
+ }
+
+ }
+
+ if (is_null($server['server_vm_host_name'])) {
+ $hostname = $server['server_hostname'];
+ } else {
+ $hostname = $server['server_vm_host_name'];
+ }
+
+ $mem = isset($server['server_memory']) ? (float)$server['server_memory'] : 0;
+ $demand = isset($server['server_memory_demand']) ? (float)$server['server_memory_demand'] : 0;
+
+ if ($mem == 0 && $demand == 0) {
+ $mem_assigned = 'N/A';
+ } else {
+ $mem_assigned = $this->cleanNumber($mem) . "M";
+ }
+
+ $mem_demand_text_color = '';
+ if ($mem > 0) {
+ $mem_percent = ($demand / $mem) * 100;
+ $mem_percent_numb = round($mem_percent, 1);
+ $mem_demand = round($mem_percent, 1) . "%"; // round to 1 decimal place
+ $mem_percent_sort = $mem_percent_numb;
+
+ if ($mem_percent_numb <= 89) {
+ $mem_demand_text_color = 'success';
+ }
+ if ($mem_percent_numb > 89) {
+ $mem_demand_text_color = 'secondary';
+ }
+ if ($mem_percent_numb > 99) {
+ $mem_demand_text_color = 'danger';
+ }
+
+ } else {
+ $mem_demand = "N/A";
+ $mem_percent_numb = 'N/A';
+ $mem_percent_sort = -1;
+ }
+
+ $ipv4_list = '';
+ if (!empty($server['server_ipv4'])) {
+ $ips = json_decode($server['server_ipv4'], true);
+ if (is_array($ips)) {
+ $ipv4_list = implode(', ', $ips);
+ }
+ }
+
+ $ipv6_list = '';
+ if (!empty($server['server_ipv6'])) {
+ $ips = json_decode($server['server_ipv6'], true);
+ if (is_array($ips)) {
+ $ipv6_list = implode(', ', $ips);
+ }
+ }
+
+ $thisServerLicenses = [];
+ foreach ($this->allLicenseTypes as $licenseType) {
+ $thisServerLicenses[$licenseType] = false;
+ }
+
+ if (!empty($server['server_licenses'])) {
+ $allLicenseTypesServer = json_decode($server['server_licenses'], true);
+ if (is_array($allLicenseTypesServer)) {
+ foreach ($allLicenseTypesServer as $licenseTypeServer) {
+ foreach ($licenseTypeServer as $licenseTypeServerKey => $licenseTypeServerValue) {
+ $thisServerLicenses[$licenseTypeServerKey] = true;
+ }
+ }
+ }
+ }
+
+ $thisServerBackup = [];
+ foreach ($this->allBackupTypes as $BackupType) {
+ $thisServerBackup[$BackupType] = false;
+ }
+
+ if (!empty($server['server_backup'])) {
+ $allBackupTypesServer = json_decode($server['server_backup'], true);
+ if (is_array($allBackupTypesServer)) {
+ foreach ($allBackupTypesServer as $BackupTypeServer) {
+ foreach ($BackupTypeServer as $BackupTypeServerKey => $BackupTypeServerValue) {
+ $thisServerBackup[$BackupTypeServerKey] = true;
+ }
+ }
+ }
+ }
+
+ if ($this->showCompanies) {
+ $company_name = '';
+ if (strlen($server['company_name']) > 0) {
+ $company_name = $server['company_name'];
+ }
+ }
+
+ $server_state_color = returnServerStateColor($server['server_state']);
+
+ ?>
+
+
+ |
+
+ |
+
+
+ |
+ showCompanies) { ?>
+
+
+ |
+
+ |
+
+ |
+
+
+ |
+
+
+
+ |
+
+ 0) {
+ $sizes = array_column($disks, 'disk_space');
+ $totalDiskSpace = array_sum($sizes);
+
+ if ($totalDiskSpace > 0) {
+ $sortValue = $totalDiskSpace;
+ $filterValue = $totalDiskSpace;
+ }
+ }
+ ?>
+ data-sort="" data-filter="">
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ allLicenseTypes as $licenseType) { ?>
+ ' : '' ?> |
+ allBackupTypes as $BackupType) { ?>
+ ' : '' ?> |
+
+
+ ';
+ } elseif ($server['server_power_state'] == 'Running') {
+ echo '';
+ } ?>
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+