syllabus_temp.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. <?php
  2. setlocale(LC_TIME, 'es_MX.UTF-8');
  3. require_once("../../include/nocache.php");
  4. require_once("../../include/constantes.php");
  5. require_once("../../include/bd_pdo.php");
  6. require_once("../../include/util.php");
  7. include_once('../../include/xTemplate/xtemplate.class.php'); // including mpdf.php
  8. include_once('../../include/mpdf/autoload.php'); // including mpdf.php
  9. ini_set('display_errors', 1);
  10. ini_set('display_startup_errors', 1);
  11. error_reporting(E_ALL);
  12. if(!isset($_GET["periodo_id"])){
  13. echo "No se ha especificado el periodo";
  14. exit();
  15. }
  16. //
  17. $stmt = $pdo->prepare('Select * from fs_materiasprofesor(:periodo, null) where "Carrera_prefijo" in (\'IND\', \'AB\')');
  18. $stmt->bindParam(":periodo", $_GET["periodo_id"]);
  19. if(!$stmt->execute()){
  20. //print_r($stmt->errorInfo());
  21. $errorDesc = "Ocurrió un error al cargar los datos del periodo";
  22. }else{
  23. $periodo_rs = $stmt->fetchAll();
  24. }
  25. $stmt->closeCursor();
  26. foreach($periodo_rs as $periodo){
  27. $filter_mat = $periodo["Materia_id"]."_".$periodo["Grupo_id"]."_".$periodo["Submateria_id"];
  28. $filter_materia_nom = $periodo["Materia_desc"];
  29. $filter_gpo_nom = $periodo["Grupo_desc"];
  30. $matArr = explode("_",$filter_mat);
  31. //--
  32. $mat = $periodo["Materia_id"];
  33. $gpo = $periodo["Grupo_id"];
  34. $gpo_nom = $periodo["Grupo_desc"].$periodo["Carrera_prefijo"];
  35. $usr = $periodo["Usuario_id"];
  36. $stmt = $pdo->prepare('Select * from fs_usuario(:usr)');
  37. $stmt->bindParam(":usr", $usr);
  38. if(!$stmt->execute()){
  39. header("Location: ".$pag."?error=5");
  40. exit();
  41. }else{
  42. $usr_rs = $stmt->fetch();
  43. $usr_nombre = $usr_rs["Usuario_nombre"]." ".$usr_rs["Usuario_apellidos"];
  44. }
  45. $stmt->closeCursor();
  46. if($periodo["Submateria_id"]!= ""){
  47. $sub = $periodo["Submateria_id"];
  48. $stmt = $pdo->prepare('Select * from fs_syllabus(:periodo, :prof, :mat, :gpo, :sub )');
  49. $stmt->bindParam(":sub", $sub);
  50. }else{
  51. $stmt = $pdo->prepare('Select * from fs_syllabus(:periodo, :prof, :mat, :gpo, NULL )');
  52. }
  53. $stmt->bindParam(":periodo", $_GET["periodo_id"]);
  54. $stmt->bindParam(":prof", $usr);
  55. $stmt->bindParam(":mat", $mat);
  56. $stmt->bindParam(":gpo", $gpo);
  57. if(!$stmt->execute()){
  58. header("Location: ".$pag."?error=3");
  59. //$errorDesc = "Error al cargar los datos del alumno";
  60. //print_r($stmt->errorInfo());
  61. exit();
  62. }
  63. $syllabus_rs = $stmt->fetch();
  64. $stmt->closeCursor();
  65. //print_r($syllabus_rs); exit;
  66. $stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, NULL )');
  67. $stmt->bindParam(":periodo", $_GET["periodo_id"]);
  68. if(!$stmt->execute()){
  69. header("Location: ".$pag."?error=3");
  70. //$errorDesc = "Error al cargar los datos del alumno";
  71. //print_r($stmt->errorInfo());
  72. exit();
  73. }
  74. $periodo_rs = $stmt->fetch();
  75. $stmt->closeCursor();
  76. if(isset($sub)){
  77. $stmt = $pdo->prepare('SELECT hg."Horario_hora", s."Salon_desc", s."Salon_desc_larga", d."Dia_desc"
  78. from fs_horariogrupo(:gpo, NULL, false) AS hg INNER JOIN "Dia" d ON hg."Dia_id" = d."Dia_id"
  79. INNER JOIN "Submateria_HorarioGrupo_Profesor" shgp ON hg."HorarioGrupo_id" = shgp."HorarioGrupo_id" AND shgp."Submateria_id" = :sub
  80. INNER JOIN "Salon" s ON shgp."Salon_id" = s."Salon_id" WHERE "Materia_id" = :mat ORDER BY d."Dia_id", hg."Horario_hora"' );
  81. $stmt->bindParam(":sub", $sub);
  82. }else{
  83. $stmt = $pdo->prepare('SELECT hg."Horario_hora", hg."Salon_desc", hg."Salon_desc_larga", d."Dia_desc"
  84. from fs_horariogrupo(:gpo, NULL, false) AS hg INNER JOIN "Dia" d ON hg."Dia_id" = d."Dia_id" WHERE "Materia_id" = :mat ORDER BY d."Dia_id", hg."Horario_hora"' );
  85. }
  86. $stmt->bindParam(":gpo", $gpo);
  87. $stmt->bindParam(":mat", $mat);
  88. if(!$stmt->execute()){
  89. header("Location: ".$pag."?error=3");
  90. // print_r($stmt->errorInfo());
  91. exit();
  92. }
  93. $horario_rs = $stmt->fetchAll();
  94. $stmt->closeCursor();
  95. //print_r($horario_rs); exit;
  96. //-----
  97. $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
  98. $fontDirs = $defaultConfig['fontDir'];
  99. $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
  100. $fontData = $defaultFontConfig['fontdata'];
  101. $mpdf = new \Mpdf\Mpdf([
  102. 'mode' => 'utf-8',
  103. 'format' => [215, 279],
  104. 'orientation' => 'P',
  105. 'margin_left' => 14,
  106. 'margin_right' => 14,
  107. 'margin_top' => 27,
  108. 'margin_bottom' => 27,
  109. 'fontDir' => array_merge($fontDirs, [
  110. __DIR__ . '/../../fonts/indivisaFont/ttf',
  111. ]),
  112. 'fontdata' => $fontData + [
  113. 'indivisa-display' => [
  114. 'R' => 'IndivisaDisplaySans-Regular.ttf',
  115. ],
  116. 'indivisa-title' => [
  117. 'R' => 'IndivisaDisplaySerif-RegularItalic.ttf',
  118. ],
  119. 'indivisa-text' => [
  120. 'R' => 'IndivisaTextSans-Regular.ttf',
  121. ]
  122. ],
  123. 'default_font' => 'indivisa-text',
  124. ]);
  125. //$mpdf->SetDisplayMode('fullpage');
  126. $stylesheet = "<style>";
  127. $stylesheet .= file_get_contents('../../css/indivisa.css'); // external css
  128. $stylesheet .= file_get_contents('../css/syllabus.css'); // external css
  129. $stylesheet .= "</style>";
  130. $xtpl = new XTemplate('../tpl/syllabus.tpl.html');
  131. $mat_nombre = !empty($syllabus_rs["Submateria_desc"])?$syllabus_rs["Submateria_desc"]:$syllabus_rs["Materia_desc"];
  132. $xtpl->assign("MATERIA", $mat_nombre." ".$gpo_nom);
  133. $xtpl->assign("SEMESTRE", $syllabus_rs["Materia_semestre"]);
  134. $xtpl->assign("PERIODO", $periodo_rs["Periodo_desc"]);
  135. $xtpl->assign("PROFESOR", $usr_nombre);
  136. foreach($horario_rs as $h){
  137. $hora = substr($h["Horario_hora"], 0, 5);
  138. if(empty($h["Salon_desc"])){
  139. $salon = "Salón pendiente";
  140. }else{
  141. $salon = $h["Salon_desc"];
  142. if(!empty($h["Salon_desc_larga"])){
  143. $salon .=" (".$h["Salon_desc_larga"].")";
  144. }
  145. }
  146. $xtpl->assign("DIA", $h["Dia_desc"]);
  147. $xtpl->assign("HORA", $hora);
  148. $xtpl->assign("SALON", $salon);
  149. $xtpl->parse("main.fechas");
  150. }
  151. //---Atributos
  152. //Obtiene mapa
  153. $stmt = $pdo->prepare('select * from fs_atributoegreso_materia(:mat)');
  154. $stmt->bindParam(":mat", $mat);
  155. if(!$stmt->execute()){
  156. header("Location: ".$pag."?error=5");
  157. }else{
  158. $atributos_rs = $stmt->fetchAll();
  159. }
  160. //----
  161. $datos = array(
  162. array("titulo"=>"Información de la asignatura", "bd"=>"informacion", "subbloques"=>
  163. array(
  164. array("subtitulo"=>"Descripción","bd"=>"desc", "nobreak"=>false),
  165. array("subtitulo"=>"Objetivos","bd"=>"obj", "nobreak"=>false),
  166. array("subtitulo"=>"Capacidades y habilidades que desarrollar","bd"=>"capacidades", "nobreak"=>false),
  167. array("subtitulo"=>"Prerrequisitos","bd"=>"prerrequisitos", "nobreak"=>false),
  168. array("subtitulo"=>"Temario","bd"=>"temario", "nobreak"=>false),
  169. array("subtitulo"=>"Construcción de la calificación final","bd"=>"calificacion", "nobreak"=>true),
  170. array("subtitulo"=>"Fechas importantes","bd"=>"fechas", "nobreak"=>true),
  171. )
  172. ),
  173. array("titulo"=>"Lineamientos generales", "bd"=>"", "subbloques"=>
  174. array(
  175. array("subtitulo"=>"De la asistencia y puntualidad","bd"=>"asistencia", "nobreak"=>false),
  176. array("subtitulo"=>"Del comportamiento en clase","bd"=>"comportamiento", "nobreak"=>false),
  177. array("subtitulo"=>"De los exámenes","bd"=>"examenes", "nobreak"=>false),
  178. array("subtitulo"=>"De las tareas, prácticas y exposiciones","bd"=>"tareas", "nobreak"=>false),
  179. array("subtitulo"=>"Trabajos de investigación","bd"=>"investigacion", "nobreak"=>false),
  180. )
  181. ),
  182. array("titulo"=>"Bibliografía recomendada", "bd"=>"bibliografia", "subbloques"=>array()
  183. )
  184. );
  185. $atributos = false;
  186. foreach($datos as $bloque){
  187. $xtpl->assign("TITULO", $bloque["titulo"]);
  188. if($bloque["bd"]!= ""){
  189. $xtpl->assign("INFO", $syllabus_rs["Syllabus_".$bloque["bd"]]);
  190. $xtpl->parse("main.bloque.titulo.info");
  191. $xtpl->parse("main.bloque.titulo");
  192. $xtpl->parse("main.bloque");
  193. }
  194. if(!$atributos ){
  195. $atributos = true;
  196. if(count($atributos_rs) > 0){
  197. $html = "<ul>";
  198. foreach($atributos_rs as $atr){
  199. $html.="<li><b>Atributo {$atr["AtributoEgreso_id"]} nivel {$atr["AtributoNivel_desc"]}:</b> {$atr["AtributoEgreso_desc"]}</li>";
  200. }
  201. $html.="</ul>";
  202. $xtpl->assign("SUBTITULO", "Atributos de egreso");
  203. $xtpl->assign("INFO", $html);
  204. $xtpl->parse("main.bloque.subbloque");
  205. $xtpl->parse("main.bloque");
  206. }
  207. }
  208. foreach($bloque["subbloques"] as $subbloque){
  209. $xtpl->assign("SUBTITULO", $subbloque["subtitulo"]);
  210. $xtpl->assign("INFO", $syllabus_rs["Syllabus_".$subbloque["bd"]]);
  211. if($subbloque["nobreak"]) $xtpl->parse("main.bloque.subbloque_nobreak");
  212. else $xtpl->parse("main.bloque.subbloque");
  213. $xtpl->parse("main.bloque");
  214. }
  215. }
  216. $xtpl->parse("main");
  217. /*echo $stylesheet;
  218. $xtpl->out("main"); exit;
  219. */
  220. $header = '<table style="width:100%"><tr>
  221. <td><img src="../../img/logopdf.png" width="40mm" class=""></td>
  222. <td align="right"><h1 class="titulo">SYLLABUS | FACULTAD DE INGENIERÍA</h1></td>
  223. </tr></table>';
  224. $mpdf->SHYlang = 'es';
  225. $mpdf-> SetTitle('Syllabus -' . $mat_nombre);
  226. $mpdf-> SetAuthor('Facultad de Ingeniería. © Universidad La Salle A.C. '.date("Y").' Todos los derechos Reservados.');
  227. $mpdf->SetHTMLHeader($header);//se pone como fondo
  228. $mpdf->SetHTMLFooter('<img src="../../img/footer_docs.png" >');//se pone como fondo
  229. $mpdf->WriteHTML($stylesheet);
  230. if(!isset($errorDesc))
  231. $mpdf->WriteHTML($xtpl->text("main"));
  232. else
  233. $mpdf->WriteHTML($errorDesc);
  234. $mpdf->Output("../files/syllabus/".$_GET["periodo_id"]."syllabus_ ".$gpo_nom."_".getIniciales($mat_nombre).".pdf", 'F');
  235. }//foreach