MainMenu.php 6.6 KB

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