MainMenu.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. class MainMenu {
  3. //put your code here
  4. private $rol, $menu, $submenu, $pdo, $xtpl;
  5. private $menuEstatico = array();
  6. /**
  7. * @param int $usr_id Id del usuario actual
  8. * @param int $menu_selected Id del menú seleccionado
  9. * @param PDO $this->pdo Conexión de base de datos
  10. */
  11. function __construct($rol_id, $menu_selected, $submenu_selected, $pdo){
  12. $this->menu = $menu_selected;
  13. $this->submenu = $submenu_selected;
  14. $this->rol = $rol_id;
  15. $this->pdo = $pdo;
  16. //$this->agregaMenu('Galeria de carteles', 'galeria.php', 'ing-galeria');
  17. }
  18. //Agrega menú estático
  19. public function agregaMenu($texto, $link, $icono =''){
  20. $this->menuEstatico[] = array('nombre'=>$texto, 'link'=>$link, 'icono'=>$icono);
  21. }
  22. private function creaMenu($id, $nombre, $icono){
  23. $this->xtpl->assign('MENU_ID', $id);
  24. $this->xtpl->assign('MENU_NOMBRE', $nombre);
  25. if($icono != ''){
  26. $this->xtpl->assign('MENU_ICONO', $icono);
  27. $this->xtpl->parse('main.sidebar.menus.menu.icono');
  28. }
  29. if($this->menu == $id){
  30. $this->xtpl->parse('main.sidebar.menus.menu.activo');
  31. $this->xtpl->parse('main.sidebar.menus.menu.show');
  32. }else{
  33. $this->xtpl->parse('main.sidebar.menus.menu.inactivo');
  34. $this->xtpl->parse('main.sidebar.menus.menu.collapsed');
  35. }
  36. }
  37. public function printMenu($titulo = '', $index = false){
  38. require_once('include/xtemplate.class.php');
  39. $this->xtpl = new XTemplate('templates/main_menu.tpl.html');
  40. $rutaLogo = 'img/lasalle-logo.svg';
  41. $this->xtpl->assign('LOGO_IMG', $rutaLogo);
  42. $links = array();
  43. array_push($links,array('nombre' => 'Facultad de Ingeniería', 'pag' => 'https://ingenieria.lasalle.mx/'));
  44. array_push($links,array('nombre' => 'La Salle', 'pag' => 'https://lasalle.mx'));
  45. array_push($links,array('nombre' => 'Moodle', 'pag' => 'https://moodle.ingenierialasalle.mx/'));
  46. foreach($links as $link){
  47. $this->xtpl->assign('SISTEMA_LINK', $link['pag']);
  48. $this->xtpl->assign('SISTEMA_NOMBRE', $link['nombre']);
  49. $this->xtpl->parse('main.sidebar.sistemas.sistema');
  50. $this->xtpl->parse('main.sistemas.list.sistema');
  51. }
  52. if ($this->rol == 0){
  53. $this->xtpl->assign('MODAL', 'modalInicia');
  54. $this->xtpl->parse('main.sidebar.modal');
  55. } else{
  56. $this->xtpl->assign('SALIR', 'salir.php');
  57. $this->xtpl->parse('main.sidebar.salir');
  58. }
  59. $this->xtpl->parse('main.sistemas.list');
  60. $this->xtpl->parse('main.sistemas');
  61. $this->xtpl->parse('main.sidebar.sistemas');
  62. $menuArr = array();
  63. if ($this->rol != 0 && !is_null($this->pdo)) {
  64. try {
  65. $stmt = $this->pdo->prepare('SELECT * FROM alu_fs_menuspagina(:rol)');
  66. $stmt->bindParam(':rol', $this->rol);
  67. if($stmt->execute())
  68. $menuArr = $stmt->fetchAll();
  69. } catch (\PDOException $ex) {
  70. echo 'Error al imprimir el submenú';
  71. print_r($stmt->errorInfo());
  72. exit();
  73. }
  74. $stmt->closeCursor();
  75. $stmt = null;
  76. }
  77. if(!$index){
  78. //Inicio por default
  79. $this->xtpl->assign('MENU_ID', 0);
  80. if ($_SESSION['RolUsuario_desc'] == 'ALUMNO')
  81. $this->xtpl->assign('MENU_LINK', 'home.php');
  82. else
  83. $this->xtpl->assign('MENU_LINK', 'home_admin.php');
  84. $this->xtpl->assign('MENU_NOMBRE', 'Home');
  85. $this->xtpl->assign('MENU_ICONO', 'ing-home');
  86. $this->xtpl->parse('main.sidebar.menus.menu_link.icono');
  87. if($this->menu == 0){
  88. $this->xtpl->parse('main.sidebar.menus.menu_link.activo');
  89. }
  90. $this->xtpl->parse('main.sidebar.menus.menu_link');
  91. if(count($this->menuEstatico)>0){
  92. foreach($this->menuEstatico as $menu){
  93. $this->xtpl->assign('MENU_LINK', $menu['link']);
  94. $this->xtpl->assign('MENU_NOMBRE', $menu['nombre']);
  95. if($menu['icono'] != ''){
  96. if (str_starts_with($menu['icono'], 'fa-'))
  97. $prefijo = 'fa-fw ';
  98. else
  99. $prefijo = 'ing-fw ';
  100. $this->xtpl->assign('MENU_ICONO', $prefijo . $menu['icono']);
  101. $this->xtpl->parse('main.sidebar.menus.menu_link.icono');
  102. }
  103. $this->xtpl->parse('main.sidebar.menus.menu_link');
  104. }
  105. }
  106. //Recorre menus
  107. $lastMenu = -1;
  108. $numMenus = 0;
  109. foreach($menuArr as $menu){
  110. if($lastMenu == -1){//Sin menú anterior
  111. $lastMenu = $menu['Menu_id'];
  112. $numMenus++;
  113. $this->creaMenu($menu['Menu_id'], $menu['Menu_desc'], $menu['Menu_icono']);
  114. }else if($lastMenu != $menu['Menu_id']){//Cambio de menú
  115. $this->xtpl->parse('main.sidebar.menus.menu');//guarda menu anterior
  116. $lastMenu = $menu['Menu_id'];
  117. $numMenus++;
  118. $this->creaMenu($menu['Menu_id'], $menu['Menu_desc'], $menu['Menu_icono']);
  119. }
  120. $this->xtpl->assign('MENU_ID', $menu['Menu_id']);
  121. $this->xtpl->assign('SUBMENU_LINK', $menu['Submenu_pag_base']);
  122. $this->xtpl->assign('SUBMENU_NOMBRE', $menu['Submenu_desc']);
  123. if (str_starts_with($menu['Submenu_icono'], 'fa-'))
  124. $prefijo = 'fa-fw ';
  125. else
  126. $prefijo = 'ing-fw ';
  127. $this->xtpl->assign('SUBMENU_ICONO', $prefijo . $menu['Submenu_icono']);
  128. if ($this->submenu == $menu['Submenu_id'])
  129. $this->xtpl->parse('main.sidebar.menus.menu.submenu.activo');
  130. $this->xtpl->parse('main.sidebar.menus.menu.submenu');
  131. }
  132. if(count($menuArr)>0){
  133. $this->xtpl->parse('main.sidebar.menus.menu');
  134. }
  135. //'Compilar' resultados
  136. $this->xtpl->parse('main.sidebar.menus');
  137. $this->xtpl->parse('main.sidebar');
  138. if ($this->rol == 0){
  139. $this->xtpl->assign('MODAL', 'modalInicia');
  140. $this->xtpl->parse('main.menu_index.modal');
  141. $this->xtpl->parse('main.menu_index');
  142. } else{
  143. $this->xtpl->assign('SALIR', 'salir.php');
  144. $this->xtpl->parse('main.menu_sidebar.salir');
  145. $this->xtpl->parse('main.menu_sidebar');
  146. }
  147. }
  148. if ($this->menu != 0) {
  149. $this->xtpl->assign('TITULO', $titulo);
  150. $this->xtpl->parse('main.barra');
  151. }
  152. $this->xtpl->parse('main');
  153. $this->xtpl->out('main');
  154. }
  155. /*
  156. * @return string Texto con el código HTML del menú
  157. */
  158. public function textMenu(){
  159. return $this->xtpl->text('main');
  160. }
  161. private function getFirstDirectory($pag){
  162. if(dirname($pag) == '/'){
  163. return $pag;
  164. }
  165. return $this->getFirstDirectory(dirname($pag));
  166. }
  167. }