123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450 |
- <?php
- /*
- * Incluir en cada página para pintar el menú. Se necesita conexión de base de datos.
- * * @author Alejandro
- */
- class MainMenu {
- //put your code here
- private $usr, $selected, $pdo, $xtpl, $sistema, $titulo, $hasError, $error;
- private $menuEstatico = array();
-
- /**
- * @param int $usr_id Id del usuario actual
- * @param int $menu_selected Id del menú seleccionado
- * @param PDO $this->pdo Conexión de base de datos
- */
- function __construct($usr_id, $menu_selected, $pdo, $sistema, $titulo=""){
- $this->selected = $menu_selected;
- $this->usr = $usr_id;
- $this->pdo = $pdo;
- $this->sistema = $sistema;
- $this->titulo = trim($titulo);
-
- }
-
- //Agrega menú estático
- public function agregaMenu($texto, $link, $icono =""){
- $this->menuEstatico[] = array("nombre"=>$texto, "link"=>$link, "icono"=>$icono);
- }
-
- private function creaMenu($id, $nombre, $icono){
- $this->xtpl->assign("MENU_ID", $id);
- $this->xtpl->assign("MENU_NOMBRE", $nombre);
- if($icono != ""){
- $this->xtpl->assign("MENU_ICONO", $icono);
- $this->xtpl->parse("main.sidebar.menus.menu.icono");
- }
- if($this->selected == $id){
- $this->xtpl->parse("main.sidebar.menus.menu.activo");
- $this->xtpl->parse("main.sidebar.menus.menu.show");
- if($this->titulo == "")
- $this->xtpl->assign("TITULO", $nombre);
- }else{
- $this->xtpl->parse("main.sidebar.menus.menu.inactivo");
- $this->xtpl->parse("main.sidebar.menus.menu.collapsed");
- }
- }
-
- public function printMenu(){
- if(!is_null($this->sistema)){
- require_once("../include/xTemplate/xtemplate.class.php");
- $this->xtpl = new XTemplate('../tpl/main_menu.tpl.html');
- }else{
- require_once("./include/xTemplate/xtemplate.class.php");
- $this->xtpl = new XTemplate('./tpl/main_menu.tpl.html');
- }
- //$this->xtpl->assign("LOGO_LINK", "main.php");
-
- $rutaLogo = "/img/logo_lasalle.png";
- //$rutaLogo = '/img/60_logo.svg'; //logo60
- $this->xtpl->assign("LOGO_IMG", $rutaLogo);
-
- $stmt = $this->pdo->prepare('Select * from fs_sistemausuarioacceso(:usr)');
- $stmt->bindParam(":usr", $this->usr);
- if(!$stmt->execute()){
- echo "Error al imprimir los menus";
- print_r($stmt->errorInfo());
- exit();
- }
- $sistemasArr = $stmt->fetchAll();
- $stmt->closeCursor();
- $stmt = null;
-
- if(!is_null($this->sistema)){//Hay sistema
- $rutaLogo = "..".$rutaLogo;
- $this->xtpl->assign("LOGO_IMG", $rutaLogo);
-
- if(count($sistemasArr) > 1 || $_SESSION["sgi_administrador"]){
- $this->xtpl->assign("LINK", "../main.php");
- $this->xtpl->assign("TEXTO", "Inicio");
- $this->xtpl->assign("ICONO", "");
- $this->xtpl->parse("main.sistemas.list.link");
- $this->xtpl->parse("main.sistemas.list");
- $this->xtpl->parse("main.sidebar.sistemas.link");
-
- foreach($sistemasArr as $sistema){
- if(trim($sistema["Sistema_pagina"]) != ""){
- $pag = dirname($_SERVER['PHP_SELF']);
- if(!is_null($this->sistema)){
- $pag = dirname($pag);
- }
- $pag .= $sistema["Sistema_pagina"];
- $this->xtpl->assign("SISTEMA_LINK", $pag);
- $this->xtpl->assign("SISTEMA_NOMBRE", $sistema["Sistema_nombre"]);
- if(intval($sistema["Sistema_id"]) == intval($this->sistema)){
- $this->xtpl->parse("main.sidebar.sistemas.sistema.active");
- $this->xtpl->parse("main.sistemas.list.sistema.active");
- }
- $this->xtpl->parse("main.sidebar.sistemas.sistema");
- $this->xtpl->parse("main.sistemas.list.sistema");
- }
- }
- }
-
- $this->xtpl->assign("SALIR", "../salir.php");
- $this->xtpl->parse("main.sistemas.list");
-
- $this->xtpl->parse("main.sistemas");
- $this->xtpl->parse("main.sidebar.sistemas");
-
- $stmt = $this->pdo->prepare('SELECT * FROM fs_menuspagina (:usr, :sist)');
- $stmt->bindParam(":sist", $this->sistema);
- $stmt->bindParam(":usr", $this->usr);
- if(!$stmt->execute()){
- echo "Error al imprimir el submenú";
- print_r($stmt->errorInfo());
- exit();
- }
- $menuArr = $stmt->fetchAll();
- $stmt->closeCursor();
- $stmt = null;
-
- //Inicio por default
- $this->xtpl->assign("MENU_ID", 1);
- $this->xtpl->assign("MENU_LINK", "main.php");
- $this->xtpl->assign("MENU_NOMBRE", "Inicio");
- $this->xtpl->assign("MENU_ICONO", "ing-home");
- $this->xtpl->parse("main.sidebar.menus.menu_link.icono");
- if($this->selected == 1){
- $this->xtpl->parse("main.sidebar.menus.menu_link.activo");
- }
- $this->xtpl->parse("main.sidebar.menus.menu_link");
-
- if(count($this->menuEstatico)>0){
- foreach($this->menuEstatico as $menu){
- $this->xtpl->assign("MENU_LINK", $menu["link"]);
- $this->xtpl->assign("MENU_NOMBRE", $menu["nombre"]);
- if($menu["icono"] != ""){
- $this->xtpl->assign("MENU_ICONO", $menu["icono"]);
- $this->xtpl->parse("main.sidebar.menus.menu_link.icono");
- }
- $this->xtpl->parse("main.sidebar.menus.menu_link");
- }
- }
- //Recorre menus
- $lastMenu = -1;
- $numMenus = 0;
- foreach($menuArr as $menu){
- if($lastMenu == -1){//Sin menú anterior
- $lastMenu = $menu["Menu_id"];
- $numMenus++;
- $this->creaMenu($menu["Menu_id"], $menu["Menu_desc"], $menu["Menu_icono"]);
- }else if($lastMenu != $menu["Menu_id"]){//Cambio de menú
- $this->xtpl->parse("main.sidebar.menus.menu");//guarda menu anterior
- $lastMenu = $menu["Menu_id"];
- $numMenus++;
- $this->creaMenu($menu["Menu_id"], $menu["Menu_desc"], $menu["Menu_icono"]);
- }
- $this->xtpl->assign("MENU_ID", $menu["Menu_id"]);
- $this->xtpl->assign("SUBMENU_LINK", $menu["Submenu_pag_base"]);
- $this->xtpl->assign("SUBMENU_NOMBRE", $menu["Submenu_desc"]);
- $this->xtpl->assign("SUBMENU_ICONO", $menu["Submenu_icono"]);
- $this->xtpl->parse("main.sidebar.menus.menu.submenu");
- }
- if(count($menuArr)>0){
- $this->xtpl->parse("main.sidebar.menus.menu");
-
- }
- $this->xtpl->parse("main.sidebar.menus");
-
-
-
- $this->xtpl->parse("main.sidebar.menus");
-
- //'Compilar' resultados
- $this->xtpl->parse("main.sidebar.salir");
- $this->xtpl->parse("main.sidebar");
- $this->xtpl->parse("main.menu_sidebar");
-
-
- //carga datos de sistema
- $stmt = $this->pdo->prepare('Select * from fs_sistema(:sist)');//devuelve: permiso, edicion
- $stmt->bindParam(":sist", $this->sistema);
- if(!$stmt->execute()){
- $this->hasError = true;
- $this->error = $stmt->errorInfo();
- }else{
- $rs = $stmt->fetch();
- $stmt->closeCursor(); // cierra conexion de resultado
- $stmt = null; // cierra conexion
-
- $this->xtpl->assign("SISTEMA", $rs["Sistema_nombre"]);
- $this->xtpl->assign("SISTEMA_NOMBRE", $rs["Sistema_desc"]);
- $rs = null;
- }
- $this->xtpl->parse("main.sistema_barra");
-
- }else{// ---- Sin sistema -----
-
- $this->xtpl->assign("SISTEMA_LINK", "main.php");
- $this->xtpl->assign("SISTEMA_NOMBRE", "Inicio");
- $this->xtpl->parse("main.sidebar.sistemas.sistema.active");
- $this->xtpl->parse("main.sistemas.sistema.active");
- $this->xtpl->parse("main.sidebar.sistemas.sistema");
- $this->xtpl->parse("main.sistemas.list.sistema");
- foreach($sistemasArr as $sistema){
- if(trim($sistema["Sistema_pagina"]) != ""){
- $pag = dirname($_SERVER['PHP_SELF']);
- if(!is_null($this->sistema)){
- $pag = dirname($pag);
- }
- $pag .= $sistema["Sistema_pagina"];
- $this->xtpl->assign("SISTEMA_LINK", $pag);
- $this->xtpl->assign("SISTEMA_NOMBRE", $sistema["Sistema_nombre"]);
- if(intval($sistema["Sistema_id"]) == intval($this->sistema)){
- $this->xtpl->parse("main.sidebar.sistemas.sistema.active");
- $this->xtpl->parse("main.sistemas.sistema.active");
- }
- $this->xtpl->parse("main.sidebar.sistemas.sistema");
- $this->xtpl->parse("main.sistemas.list.sistema");
- }
- }
-
- $this->xtpl->assign("SALIR", "salir.php");
- $this->xtpl->parse("main.sistemas.list");
- $this->xtpl->parse("main.sistemas");
- $this->xtpl->parse("main.sidebar.sistemas");
-
- //Menus superadmin
- if($_SESSION["sgi_administrador"]){
- $this->xtpl->assign("MENU_LINK", "main.php");
- $this->xtpl->assign("MENU_NOMBRE", "Inicio");
- $this->xtpl->parse("main.sidebar.menus.menu_link");
-
- if(count($this->menuEstatico)>0){
- foreach($this->menuEstatico as $menu){
- $this->xtpl->assign("MENU_LINK", $menu["link"]);
- $this->xtpl->assign("MENU_NOMBRE", $menu["nombre"]);
- if($menu["icono"] != ""){
- $this->xtpl->assign("MENU_ICONO", $menu["icono"]);
- $this->xtpl->parse("main.sidebar.menus.menu_link.icono");
- }
- $this->xtpl->parse("main.sidebar.menus.menu_link");
- }
- }
-
- //Recorre menus
- /*$lastMenu = -1;
- $numMenus = 0;
- //$menuArr = array(
- // array("Menu_id" => 1, "Menu_desc" => "Configuración", "Menu_icono" => "ing-configuracion", "Submenu_pag_base" =>"sistemas.php", "Submenu_desc" => "Sistemas"),
- // array("Menu_id" => 1, "Menu_desc" => "Configuración", "Menu_icono" => "ing-configuracion", "Submenu_pag_base" =>"roles.php", "Submenu_desc" => "Roles de sistema"),
- //);
-
- $this->selected = $menuArr[0]["Menu_id"];
-
- foreach($menuArr as $menu){
- if($lastMenu == -1){//Sin menú anterior
- $lastMenu = $menu["Menu_id"];
- $numMenus++;
- $this->creaMenu($menu["Menu_id"], $menu["Menu_desc"], $menu["Menu_icono"]);
- }else if($lastMenu != $menu["Menu_id"]){//Cambio de menú
- $this->xtpl->parse("main.sidebar.menus.menu");//guarda menu anterior
- $lastMenu = $menu["Menu_id"];
- $numMenus++;
- $this->creaMenu($menu["Menu_id"], $menu["Menu_desc"], $menu["Menu_icono"]);
- }
- $this->xtpl->assign("MENU_ID", $menu["Menu_id"]);
- $this->xtpl->assign("SUBMENU_LINK", $menu["Submenu_pag_base"]);
- $this->xtpl->assign("SUBMENU_NOMBRE", $menu["Submenu_desc"]);
- $this->xtpl->parse("main.sidebar.menus.menu.submenu");
- }
- if(count($menuArr)>0){
- $this->xtpl->parse("main.sidebar.menus.menu");
- }*/
- $this->xtpl->parse("main.sidebar.menus");
- }else{
- $this->xtpl->assign("MENU_LINK", "salir.php");
- $this->xtpl->assign("MENU_NOMBRE", "Salir");
- $this->xtpl->parse("main.sidebar.menus.menu_link");
- $this->xtpl->parse("main.sidebar.menus");
- }
- $this->xtpl->parse("main.sidebar.salir");
- $this->xtpl->parse("main.sidebar");
- $this->xtpl->parse("main.menu_sidebar");
-
-
-
- }
- if($this->titulo != "")
- $this->xtpl->assign("TITULO", $this->titulo);
- $this->xtpl->parse("main");
- $this->xtpl->out("main");
- }
- public function printHead(){
- require_once("./include/xTemplate/xtemplate.class.php");
- $this->xtpl = new XTemplate('./tpl/main_menu.tpl.html');
-
- $rutaLogo = "/img/logo_lasalle.png";
- //$rutaLogo = 'img/60_logo.svg'; //logo 60
- $this->xtpl->assign("LOGO_IMG", $rutaLogo);
-
- $this->xtpl->assign("SALIR", "salir.php");
- $this->xtpl->parse("main.sistemas.list");
- $this->xtpl->parse("main.sistemas");
- $this->xtpl->parse("main.sidebar.sistemas");
- $this->xtpl->assign("MENU_LINK", "salir.php");
- $this->xtpl->assign("MENU_NOMBRE", "Salir");
- $this->xtpl->parse("main.sidebar.menus.menu_link");
- $this->xtpl->parse("main.sidebar.menus");
-
- $this->xtpl->parse("main.sidebar.salir");
- $this->xtpl->parse("main.sidebar");
- $this->xtpl->parse("main.menu_sidebar");
-
-
- if($this->titulo != "")
- $this->xtpl->assign("TITULO", $this->titulo);
- $this->xtpl->parse("main");
- $this->xtpl->out("main");
- }
-
- public function printMenuFooter($iconos = false){
- if(!is_null($this->sistema)){
- require_once("../include/xTemplate/xtemplate.class.php");
- $this->xtpl = new XTemplate('../tpl/footer_menu.tpl.html');
- }else{
- require_once("./include/xTemplate/xtemplate.class.php");
- $this->xtpl = new XTemplate('./tpl/footer_menu.tpl.html');
- }
- //$this->xtpl->assign("LOGO_LINK", "main.php");
-
- if(!is_null($this->sistema)){
- $stmt = $this->pdo->prepare('SELECT * FROM fs_menuspagina (:usr, :sist)');
- $stmt->bindParam(":sist", $this->sistema);
- $stmt->bindParam(":usr", $this->usr);
- if(!$stmt->execute()){
- echo "Error al imprimir el submenú en footer";
- print_r($stmt->errorInfo());
- exit();
- }
- $menuArr = $stmt->fetchAll();
- $stmt->closeCursor();
- $stmt = null;
-
- //Inicio por default
- $this->xtpl->assign("MENU_ID", 1);
- $this->xtpl->assign("MENU_LINK", "main.php");
- $this->xtpl->assign("MENU_NOMBRE", "Inicio");
- if($iconos){
- $this->xtpl->assign("MENU_ICONO", "fas fa-home");
- $this->xtpl->parse("main.menus.menu_link.icono");
- }
- $this->xtpl->parse("main.menus.menu_link");
- $this->xtpl->parse("main.menus");
- //Recorre menus
- $lastMenu = -1;
- $numMenus = 0;
- foreach($menuArr as $menu){
- if($lastMenu == -1){//Sin menú anterior
- $lastMenu = $menu["Menu_id"];
- $numMenus++;
- $this->xtpl->assign("MENU_NOMBRE", $menu["Menu_desc"]);
- if($iconos){
- $this->xtpl->assign("MENU_ICONO", $menu["Menu_icono"]);
- $this->xtpl->parse("main.menus.menu.icono");
- }
-
- }else if($lastMenu != $menu["Menu_id"]){//Cambio de menú
- $this->xtpl->parse("main.menus.submenus");
- $this->xtpl->parse("main.menus.menu");//guarda menu anterior
- $this->xtpl->parse("main.menus");
- $lastMenu = $menu["Menu_id"];
- $numMenus++;
-
- $this->xtpl->assign("MENU_NOMBRE", $menu["Menu_desc"]);
- if($iconos){
- $this->xtpl->assign("MENU_ICONO", $menu["Menu_icono"]);
- $this->xtpl->parse("main.menus.menu.icono");
- }
- }
- $this->xtpl->assign("SUBMENU_LINK", $menu["Submenu_pag_base"]);
- $this->xtpl->assign("SUBMENU_NOMBRE", $menu["Submenu_desc"]);
- //$this->xtpl->assign("SUBMENU_ICONO", $menu["Submenu_icono"]);
- //$this->xtpl->parse("main.menus.submenu.icono");
- $this->xtpl->parse("main.menus.submenus.submenu");
- }
- if(count($menuArr)>0){
- $this->xtpl->parse("main.menus.submenus");
- $this->xtpl->parse("main.menus.menu");
- }
- $this->xtpl->parse("main.menus");
-
- //Salir por default
- /*$this->xtpl->assign("MENU_ID", 1);
- $this->xtpl->assign("MENU_LINK", "../salir.php");
- $this->xtpl->assign("MENU_NOMBRE", "Salir");
- if($iconos){
- $this->xtpl->assign("MENU_ICONO", "fas fa-power-off");
- $this->xtpl->parse("main.menus.menu_link.icono");
- }
- if($this->selected == 1){
- $this->xtpl->parse("main.menus.menu_link.activo");
- }
- $this->xtpl->parse("main.menus.menu_link");
- $this->xtpl->parse("main.menus");*/
-
- $this->xtpl->parse("main");
- $this->xtpl->out("main");
- }
- }
-
- /*
- * @return string Texto con el código HTML del menú
- */
- public function textMenu(){
- return $this->xtpl->text("main");
- }
-
- private function getFirstDirectory($pag){
- if(dirname($pag) == '/'){
- return $pag;
- }
- return $this->getFirstDirectory(dirname($pag));
- }
- }
|