fetchAll( "SELECT clave, valor FROM lab_config WHERE clave IN ('doc_color','doc_logo_base64','empresa_nombre')" ); foreach ($__cfgs as $__r) { if ($__r['clave'] === 'doc_color' && preg_match('/^#[0-9a-fA-F]{3,8}$/', $__r['valor'])) { $_sb_brand = $__r['valor']; } elseif ($__r['clave'] === 'doc_logo_base64' && !empty($__r['valor'])) { $_sb_logo = $__r['valor']; } elseif ($__r['clave'] === 'empresa_nombre') { $_sb_lab_nombre = $__r['valor']; } } $_sb_hex = ltrim($_sb_brand, '#'); $_sb_brand_dark = sprintf('#%02x%02x%02x', max(0, hexdec(substr($_sb_hex, 0, 2)) - 40), max(0, hexdec(substr($_sb_hex, 2, 2)) - 40), max(0, hexdec(substr($_sb_hex, 4, 2)) - 40) ); } } catch (\Throwable $_) {} echo "\n"; // Dark mode: activa Bootstrap 5.3 data-bs-theme si el head de la página no lo hizo ya if (!defined('_DM_SCRIPT_INJECTED')) { define('_DM_SCRIPT_INJECTED', true); echo '' . "\n"; } } // Ruta del script que está siendo cargado actualmente $_current_script = basename($_SERVER['PHP_SELF']); /** * Retorna 'active' si la URL o script actual coincide con la ruta dada. */ $_isActive = function (string $route) use ($_current_script): string { if ($route === '') return ''; $parsed = parse_url($route); $routeBase = basename($parsed['path'] ?? ''); // Rutas ERP con query params: comparar script Y cada param de la ruta if (!empty($parsed['query'])) { $uriParsed = parse_url($_SERVER['REQUEST_URI'] ?? ''); if ($routeBase !== basename($uriParsed['path'] ?? '')) return ''; parse_str($parsed['query'], $routeParams); parse_str($uriParsed['query'] ?? '', $uriParams); foreach ($routeParams as $k => $v) { if (($uriParams[$k] ?? null) !== $v) return ''; } return ' active'; } // Rutas directas como /lab_domicilios.php return $routeBase === $_current_script ? ' active' : ''; }; $_sb_display_name = $_sb_lab_nombre ?: 'Panel ERP'; // Nombre del usuario para el pie del sidebar $_user_name = $_SESSION['admin_user']['full_name'] ?? $_SESSION['admin_user']['username'] ?? 'Usuario'; $_user_role = $_SESSION['admin_user']['role'] ?? 'admin'; // Mapa de roles a etiqueta legible $_role_label = [ 'superadmin' => 'Super Admin', 'admin' => 'Administrador', 'recepcionista' => 'Recepcionista', 'bacteriologo' => 'Bacteriólogo', 'enfermero' => 'Enfermero', 'supervisor' => 'Supervisor', 'operador_bot' => 'Operador Bot', 'readonly' => 'Solo Lectura', ][$_user_role] ?? ucfirst($_user_role); // Base URL para rutas relativas $_base = defined('APP_URL') ? rtrim(APP_URL, '/') : ''; ?>