0) { try { $pdo = conectarDB(); // USA A FUNÇÃO DO SEU config.php $sql_fav = "SELECT label, href, icon FROM usuarios_favoritos WHERE usuario_id = ? ORDER BY label ASC"; $stmt_fav = $pdo->prepare($sql_fav); $stmt_fav->execute([$usuario_id]); $favoritos_db = $stmt_fav->fetchAll(PDO::FETCH_ASSOC); $sql_check = "SELECT COUNT(*) FROM usuarios_favoritos WHERE usuario_id = ? AND href = ?"; $stmt_check = $pdo->prepare($sql_check); $stmt_check->execute([$usuario_id, $reqPath_full]); $is_current_page_favorited = $stmt_check->fetchColumn() > 0; } catch (PDOException $e) { // die("Erro no _header: " . $e->getMessage()); } } /* ===== CONFIG ===== */ $BASE = ''; $LOGO_SRC = ($BASE ?: '/') . './assets/img/logo.png'; $FAVICON_SRC = ($BASE ?: '/') . 'assets/img/favicon.png'; if (!defined('ICON_PREFIX')) { define('ICON_PREFIX', 'rr'); } $ico = function(string $n, string $size_class = 'text-base') { return ''; }; /* ===== Helpers ===== */ $reqPath = rtrim(parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH), '/'); $normalize = function($href) { return rtrim(parse_url($href, PHP_URL_PATH), '/'); }; $startsWith = function(string $haystack, string $needle) { return $needle !== '' && strncmp($haystack, $needle, strlen($needle)) === 0; }; $isActive = function(string $href) use ($normalize, $reqPath) { return $normalize($href) === $reqPath; }; $isCurrentSection = function(string $href) use ($normalize, $reqPath, $startsWith, $BASE) { $h = $normalize($href); if ($h === rtrim($BASE, '/')) { return $reqPath === $h; } if ($h === $reqPath) return true; if ($h !== '' && $startsWith($reqPath, $h) && ($reqPath[strlen($h)] ?? '') === '/') { return true; } return false; }; $isGroupActive = function(array $group, callable $isCurrentSection): bool { if (empty($group['children'])) return false; foreach ($group['children'] as $child) { if ($isCurrentSection($child['href'])) { return true; } } return false; }; // ========================================================= // MONTAGEM DO MENU DE FAVORITOS // ========================================================= $grupo_favoritos = []; if (!empty($favoritos_db)) { $children_favoritos = []; foreach ($favoritos_db as $fav) { $children_favoritos[] = [ 'label' => $fav['label'], 'href' => $fav['href'], 'icon' => $ico($fav['icon'], 'text-sm') // Usa o ícone salvo ]; } $grupo_favoritos = [ 'label'=>'Favoritos', 'icon'=>$ico('star'), 'children'=> $children_favoritos ]; } /* ===== MENU (VERSÃO LIMPA) ===== */ $MENU = [ ['label'=>'Dashboard', 'href'=>($BASE ?: '').'/dashboard.php', 'icon'=>$ico('home')], [ 'label'=>'Operações', 'icon'=>$ico('layers'), 'children'=>[ ['label'=>'Pedidos', 'href'=>($BASE ?: '').'/pedidos.php', 'icon'=>$ico('file-text', 'text-sm')], ['label'=>'Vendas', 'href'=>($BASE ?: '').'/vendas.php', 'icon'=>$ico('shopping-cart', 'text-sm')], ['label'=>'Estoque', 'href'=>($BASE ?: '').'/estoque.php', 'icon'=>$ico('boxes', 'text-sm')], ] ], [ 'label'=>'Cadastros', 'icon'=>$ico('address-book'), 'children'=>[ ['label'=>'Clientes', 'href'=>($BASE ?: '').'/clientes.php', 'icon'=>$ico('users', 'text-sm')], ['label'=>'Produtos', 'href'=>($BASE ?: '').'/produtos.php', 'icon'=>$ico('box', 'text-sm')], ['label'=>'Fornecedores', 'href'=>($BASE ?: '').'/fornecedores.php', 'icon'=>$ico('truck', 'text-sm')], ['label'=>'Usuários', 'href'=>($BASE ?: '').'/usuarios.php', 'icon'=>$ico('user', 'text-sm')], ] ], [ 'label'=>'Fiscal / Nota Fiscal', 'icon'=>$ico('file-invoice-dollar'), 'children'=>[ ['label'=>'Emitir NF-e', 'href'=>($BASE ?: '').'/fiscal/nfe-emitir.php', 'icon'=>$ico('receipt', 'text-sm')], ['label'=>'Emitir NFS-e', 'href'=>($BASE ?: '').'/fiscal/nfse-emitir.php', 'icon'=>$ico('file-text', 'text-sm')], ['label'=>'Consultar Notas', 'href'=>($BASE ?: '').'/fiscal/notas-consultar.php', 'icon'=>$ico('search', 'text-sm')], ['label'=>'Importar XML', 'href'=>($BASE ?: '').'/fiscal/xml-importar.php', 'icon'=>$ico('upload', 'text-sm')], ['label'=>'Gerar/Imprimir DANFE','href'=>($BASE ?: '').'/fiscal/danfe.php', 'icon'=>$ico('printer', 'text-sm')], ['label'=>'Inutilização de nº', 'href'=>($BASE ?: '').'/fiscal/inutilizacao.php', 'icon'=>$ico('ban', 'text-sm')], ['label'=>'Carta de Correção', 'href'=>($BASE ?: '').'/fiscal/carta-correcao.php', 'icon'=>$ico('edit', 'text-sm')], ['label'=>'Certificado A1', 'href'=>($BASE ?: '').'/fiscal/certificado.php', 'icon'=>$ico('shield-check', 'text-sm')], ['label'=>'Configurações Fiscais','href'=>($BASE ?: '').'/fiscal/config.php', 'icon'=>$ico('settings', 'text-sm')], ] ], [ 'label'=>'Relatórios', 'icon'=>$ico('chart-line'), 'children'=>[ ['label'=>'Vendas', 'href'=>($BASE ?: '').'/relatorios-vendas.php', 'icon'=>$ico('chart-line-up', 'text-sm')], ['label'=>'Financeiro', 'href'=>($BASE ?: '').'/relatorios-financeiro.php', 'icon'=>$ico('chart-pie', 'text-sm')], ['label'=>'Estoque', 'href'=>($BASE ?: '').'/relatorios-estoque.php', 'icon'=>$ico('chart-histogram', 'text-sm')], ] ], [ 'label'=>'Financeiro', 'icon'=>$ico('credit-card'), 'children'=>[ ['label'=>'Contas a Pagar', 'href'=>($BASE ?: '').'/financeiro-pagar.php', 'icon'=>$ico('minus-circle', 'text-sm')], ['label'=>'Contas a Receber', 'href'=>($BASE ?: '').'/financeiro-receber.php', 'icon'=>$ico('plus-circle', 'text-sm')], ['label'=>'Fluxo de Caixa', 'href'=>($BASE ?: '').'/financeiro-fluxo.php', 'icon'=>$ico('arrow-trend-up', 'text-sm')], ] ], [ 'label'=>'Configurações', 'icon'=>$ico('sliders'), 'children'=>[ ['label'=>'Geral', 'href'=>($BASE ?: '').'/configuracoes.php', 'icon'=>$ico('sliders', 'text-sm')], ['label'=>'Notificações', 'href'=>($BASE ?: '').'/notificacoes.php', 'icon'=>$ico('bell', 'text-sm')], ['label'=>'Minha Conta', 'href'=>($BASE ?: '').'/conta.php', 'icon'=>$ico('id-badge', 'text-sm')], ] ], ]; // ADICIONA O GRUPO DE FAVORITOS (se existir) NO COMEÇO DO MENU if (!empty($grupo_favoritos)) { array_unshift($MENU, $grupo_favoritos); } /* ===== USER MENU ===== */ $USER_MENU = [ ['label'=>'Meu Perfil', 'href'=>($BASE ?: '').'/conta.php', 'icon'=>$ico('user')], ['label'=>'Sair', 'href'=>($BASE ?: '').'/logout.php', 'icon'=>$ico('sign-out-alt')], ]; // Define o título da página (deve ser definido na página principal) $PAGE_TITLE = $PAGE_TITLE ?? 'Dashboard'; $PAGE_ICON = $PAGE_ICON ?? 'circle-small'; // Define um ícone padrão // Dados de usuário (fallbacks) $_SESSION['usuario_nome'] = $_SESSION['usuario_nome'] ?? 'Admin'; $_SESSION['usuario_email'] = $_SESSION['usuario_email'] ?? 'admin@medlife.com'; ?> <?= htmlspecialchars($PAGE_TITLE) ?> - Painel