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, '/') : '';
?>