"; // Statistics cards echo "
"; // Critical vulnerabilities card echo "
"; echo "
"; echo "
"; echo "
" . __('Critical Vulnerabilities', 'cve') . "
"; echo "
" . ($cve_stats['severity']['CRITICAL'] ?? 0) . "
"; echo "
"; echo "
"; // High risk card echo "
"; echo "
"; echo "
"; echo "
" . __('High Vulnerabilities', 'cve') . "
"; echo "
" . ($cve_stats['severity']['HIGH'] ?? 0) . "
"; echo "
"; echo "
"; // New alerts card echo "
"; echo "
"; echo "
"; echo "
" . __('New Alerts', 'cve') . "
"; echo "
" . ($alert_stats['by_status']['NEW'] ?? 0) . "
"; echo "
"; echo "
"; // Resolved card echo "
"; echo "
"; echo "
"; echo "
" . __('Resolved', 'cve') . "
"; echo "
" . ($cve_stats['status']['RESOLVED'] ?? 0) . "
"; echo "
"; echo "
"; echo "
"; // Severity distribution chart if (!empty($severity_data)) { echo "
"; echo "

" . __('CVE Severity Distribution', 'cve') . "

"; echo "
"; // This would be replaced with an actual chart library in production echo "
"; foreach ($severity_data['labels'] as $i => $label) { $value = $severity_data['series'][$i]['data'][0] ?? 0; $color = $severity_data['series'][$i]['color'] ?? '#999999'; echo "
"; echo "
" . $label . "
"; echo "
"; echo "
" . $value . "
"; echo "
"; } echo "
"; echo "
"; echo "
"; } // Recent CVEs table if (!empty($recent_cves)) { echo "
"; echo "

" . __('Recent CVEs', 'cve') . "

"; echo ""; echo ""; foreach ($recent_cves['headers'] as $header) { echo ""; } echo ""; foreach ($recent_cves['rows'] as $row) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
" . $header . "
" . $row['cve_id'] . "" . $row['severity'] . "" . $row['cvss_score'] . "" . Html::convDateTime($row['published']) . "" . $row['status'] . "
"; echo "
" . __('View all CVEs', 'cve') . "
"; echo "
"; } // Device Vulnerability Alerts echo "
"; echo "

" . __('Alerts by Device', 'cve') . "

"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; // This would be populated with actual data from the database // Placeholder for demonstration purposes $deviceAlerts = [ ['name' => 'Windows Server 2019', 'alerts' => 12, 'critical' => 3, 'high' => 6], ['name' => 'Ubuntu 20.04 LTS', 'alerts' => 8, 'critical' => 2, 'high' => 3], ['name' => 'macOS Monterey', 'alerts' => 5, 'critical' => 0, 'high' => 2], ['name' => 'Cisco IOS Router', 'alerts' => 7, 'critical' => 4, 'high' => 2], ['name' => 'Database Server', 'alerts' => 9, 'critical' => 1, 'high' => 5], ]; foreach ($deviceAlerts as $device) { echo ""; echo ""; echo ""; // Critical alerts with badge echo ""; // High alerts with badge echo ""; echo ""; echo ""; } echo "
" . __('Device', 'cve') . "" . __('Total Alerts', 'cve') . "" . __('Critical', 'cve') . "" . __('High', 'cve') . "
" . $device['name'] . "" . $device['alerts'] . ""; if ($device['critical'] > 0) { echo "" . $device['critical'] . ""; } else { echo "0"; } echo ""; if ($device['high'] > 0) { echo "" . $device['high'] . ""; } else { echo "0"; } echo ""; echo "" . __('View', 'cve') . ""; echo "
"; echo "
" . __('View all alerts', 'cve') . "
"; echo "
"; echo ""; // End of dashboard container Html::footer();