/views/sysadmin/index.php must: // 1. Load $pdo (config/db.php + functions.php) // 2. Run require_sysadmin() // 3. Set $repo_root // Optional overrides (same as platform_update.php / backups.php): // $platform_layout_header / $platform_layout_navbar / $platform_layout_footer // $sysadmin_tools — array of card definitions; merged with the defaults below. // Each entry: ['title'=>str, 'description'=>str, 'icon'=>str (bi-*), // 'url'=>str, 'badge'=>?str, 'color'=>str (primary/info/…)] if (!isset($repo_root) || !is_string($repo_root)) { $repo_root = realpath(dirname(__DIR__, 2)) ?: dirname(__DIR__, 2); } $repo_root = rtrim($repo_root, '/'); $base = function (string $path): string { return function_exists('base_url') ? base_url($path) : '/' . ltrim($path, '/'); }; $default_tools = [ [ 'title' => 'Atualizar plataforma', 'description' => 'Git pull/push, OPcache, migrations e log de erros.', 'icon' => 'bi-arrow-repeat', 'url' => platform_admin_url('platform_update.php'), 'color' => 'primary', ], [ 'title' => 'Backups', 'description' => 'Criar e transferir cópias de segurança dos uploads e da base de dados.', 'icon' => 'bi-archive', 'url' => platform_admin_url('backups.php'), 'color' => 'secondary', ], [ 'title' => 'Estado SMTP', 'description' => 'Configuração do envio de email, teste de ligação e mensagem de teste.', 'icon' => 'bi-envelope-check', 'url' => platform_admin_url('smtp_status.php'), 'color' => 'info', ], // Por omissão e não site a site: a partir do momento em que o cliente do hub // é partilhado, uma plataforma que o tenha instalado sem mostrar a página // fica ligada ao hub sem ninguém saber por onde a desligar. [ 'title' => 'Integração com o hub', 'description' => 'Anunciar esta plataforma à Frota e gerir as chaves de leitura e de operações.', 'icon' => 'bi-hdd-network', 'url' => platform_admin_url('hub_integration.php'), 'color' => 'secondary', // Um site que ainda não tenha o stub não deve mostrar um cartão para 404. 'available' => is_file($repo_root . '/public/views/sysadmin/hub_integration.php') || is_file($repo_root . '/public/views/admin/hub_integration.php'), ], ]; // Um site pode esconder um cartão por omissão declarando // $platform_hide_tools = ['smtp_status.php'] no seu stub. Serve para quando a // plataforma tem uma página própria que já faz o mesmo -- o dance tem as // Comunicações, que editam a configuração e correm os mesmos testes, e ter os // dois cartões lado a lado só faz hesitar em qual clicar. $hide = array_map('strval', $platform_hide_tools ?? []); if ($hide) { $default_tools = array_filter( $default_tools, fn($t) => !array_filter($hide, fn($h) => str_contains((string) $t['url'], $h)) ); } // Cards podem declarar 'available' => bool para serem escondidos quando o // servidor não suporta a ferramenta (ex.: exige proc_open). Ausente = visível. $tools = array_filter( array_merge($default_tools, $sysadmin_tools ?? []), fn($t) => !isset($t['available']) || $t['available'] ); $layout_header = $platform_layout_header ?? ($repo_root . '/includes/header.php'); $layout_navbar = $platform_layout_navbar ?? ($repo_root . '/includes/navbar.php'); $layout_footer = $platform_layout_footer ?? ($repo_root . '/includes/footer.php'); $pageTitle = 'Sistema'; if (is_file($layout_header)) include $layout_header; if (is_file($layout_navbar)) include $layout_navbar; ?>

Sistema

Ferramentas de administração da plataforma.