123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- <?php
- /* AJAX
- * Genera syllabus en pdf
- * Recibe:
- * gop: ID de Grupo
- * mat: ID de materia
- * sub: ID de submateria o nada
- * Return:
- * imprime pdf
- */
- setlocale(LC_TIME, 'es_MX.UTF-8');
- require_once("../../include/nocache.php");
- require_once("../../include/constantes.php");
- require_once("../../include/bd_pdo.php");
- require_once("../../include/util.php");
- require_once("../../classes/ValidaSesion.php");
- include_once('../../include/xTemplate/xtemplate.class.php'); // including mpdf.php
- include_once('../../include/mpdf/autoload.php'); // including mpdf.php
- $pag = "../syllabus.php";
- //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
- $objSesion = new ValidaSesion($pdo, 25, GEMA);
- if(!$objSesion->tieneAcceso()){
- header("Location: ".$pag."?error=3");
- exit();
- }
- unset($objValida);
- /*
- if(!isset($_POST["id"]) || !isset($_POST["fecha"])){
- header("Location: ".$pag."?error=0");
- exit();
- }
- $id = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $fecha = trim(filter_input(INPUT_POST, "fecha", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto*/
- if(!isset($_POST["mat"], $_POST["gpo"])){
- header("Location: ".$pag."?error=0");
- exit();
- }
- $mat = filter_input(INPUT_POST, "mat", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $gpo = filter_input(INPUT_POST, "gpo", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $gpo_nom = trim(filter_input(INPUT_POST, "gpo_nom", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto
- $usr = $_SESSION["usuario_id"];
- $usr_nombre = $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"];
- if(isset($_POST["prof"]) && !empty($_POST["prof"])){
- $usr = filter_input(INPUT_POST, "prof", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $stmt = $pdo->prepare('Select * from fs_usuario(:usr)');
- $stmt->bindParam(":usr", $usr);
- if(!$stmt->execute()){
- header("Location: ".$pag."?error=5");
- exit();
- }else{
- $usr_rs = $stmt->fetch();
- $usr_nombre = $usr_rs["Usuario_nombre"]." ".$usr_rs["Usuario_apellidos"];
- }
- $stmt->closeCursor();
- }
- if(isset($_POST["sub"]) && $_POST["sub"]!= ""){
- $sub = filter_input(INPUT_POST, "sub", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $stmt = $pdo->prepare('Select * from fs_syllabus(:periodo, :prof, :mat, :gpo, :sub )');
- $stmt->bindParam(":sub", $sub);
- }else{
- $stmt = $pdo->prepare('Select * from fs_syllabus(:periodo, :prof, :mat, :gpo, NULL )');
- }
- $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
- $stmt->bindParam(":prof", $usr);
- $stmt->bindParam(":mat", $mat);
- $stmt->bindParam(":gpo", $gpo);
- if(!$stmt->execute()){
- header("Location: ".$pag."?error=3");
- //$errorDesc = "Error al cargar los datos del alumno";
- //print_r($stmt->errorInfo());
- exit();
- }
- $syllabus_rs = $stmt->fetch();
- $stmt->closeCursor();
- //print_r($syllabus_rs); exit;
- $stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, NULL )');
- $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
- if(!$stmt->execute()){
- header("Location: ".$pag."?error=3");
- //$errorDesc = "Error al cargar los datos del alumno";
- //print_r($stmt->errorInfo());
- exit();
- }
- $periodo_rs = $stmt->fetch();
- $stmt->closeCursor();
- if(isset($sub)){
- $stmt = $pdo->prepare('SELECT hg."Horario_hora", s."Salon_desc", s."Salon_desc_larga", d."Dia_desc"
- from fs_horariogrupo(:gpo, NULL, false) AS hg INNER JOIN "Dia" d ON hg."Dia_id" = d."Dia_id"
- INNER JOIN "Submateria_HorarioGrupo_Profesor" shgp ON hg."HorarioGrupo_id" = shgp."HorarioGrupo_id" AND shgp."Submateria_id" = :sub
- INNER JOIN "Salon" s ON shgp."Salon_id" = s."Salon_id" WHERE "Materia_id" = :mat ORDER BY d."Dia_id", hg."Horario_hora"' );
- $stmt->bindParam(":sub", $sub);
-
- }else{
- $stmt = $pdo->prepare('SELECT hg."Horario_hora", hg."Salon_desc", hg."Salon_desc_larga", d."Dia_desc"
- 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"' );
- }
- $stmt->bindParam(":gpo", $gpo);
- $stmt->bindParam(":mat", $mat);
- if(!$stmt->execute()){
- header("Location: ".$pag."?error=3");
- // print_r($stmt->errorInfo());
- exit();
- }
- $horario_rs = $stmt->fetchAll();
- $stmt->closeCursor();
- //print_r($horario_rs); exit;
- //-----
- $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
- $fontDirs = $defaultConfig['fontDir'];
- $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
- $fontData = $defaultFontConfig['fontdata'];
- $mpdf = new \Mpdf\Mpdf([
- 'mode' => 'utf-8',
- 'format' => [215, 279],
- 'orientation' => 'P',
- 'margin_left' => 14,
- 'margin_right' => 14,
- 'margin_top' => 27,
- 'margin_bottom' => 27,
- 'fontDir' => array_merge($fontDirs, [
- __DIR__ . '/../../fonts/indivisaFont/ttf',
- ]),
- 'fontdata' => $fontData + [
- 'indivisa-display' => [
- 'R' => 'IndivisaDisplaySans-Regular.ttf',
- ],
- 'indivisa-title' => [
- 'R' => 'IndivisaDisplaySerif-RegularItalic.ttf',
- ],
- 'indivisa-text' => [
- 'R' => 'IndivisaTextSans-Regular.ttf',
- ]
- ],
- 'default_font' => 'indivisa-text',
- ]);
- //$mpdf->SetDisplayMode('fullpage');
- $stylesheet = "<style>";
- $stylesheet .= file_get_contents('../../css/indivisa.css'); // external css
- $stylesheet .= file_get_contents('../css/syllabus.css'); // external css
- $stylesheet .= "</style>";
- $xtpl = new XTemplate('../tpl/syllabus.tpl.html');
- $mat_nombre = isset($syllabus_rs["Submateria_desc"])?$syllabus_rs["Submateria_desc"]:$syllabus_rs["Materia_desc"];
- $xtpl->assign("MATERIA", $mat_nombre." ".$gpo_nom);
- $xtpl->assign("SEMESTRE", $syllabus_rs["Materia_semestre"]);
- $xtpl->assign("PERIODO", $periodo_rs["Periodo_desc"]);
- $xtpl->assign("PROFESOR", $usr_nombre);
- foreach($horario_rs as $h){
- $hora = substr($h["Horario_hora"], 0, 5);
- if(empty($h["Salon_desc"])){
- $salon = "Salón pendiente";
- }else{
- $salon = $h["Salon_desc"];
- if(!empty($h["Salon_desc_larga"])){
- $salon .=" (".$h["Salon_desc_larga"].")";
- }
- }
-
- $xtpl->assign("DIA", $h["Dia_desc"]);
- $xtpl->assign("HORA", $hora);
- $xtpl->assign("SALON", $salon);
- $xtpl->parse("main.content.contentfechas");
- }
- //---Atributos
- //Obtiene mapa
- $stmt = $pdo->prepare('select * from fs_atributoegreso_materia(:mat)');
- $stmt->bindParam(":mat", $mat);
- if(!$stmt->execute()){
- header("Location: ".$pag."?error=5");
- }else{
- $atributos_rs = $stmt->fetchAll();
- }
- //----
- $datos = array(
- array("titulo"=>"Información de la asignatura", "bd"=>"informacion", "subbloques"=>
- array(
- array("subtitulo"=>"Descripción","bd"=>"desc", "nobreak"=>false),
- array("subtitulo"=>"Objetivos","bd"=>"obj", "nobreak"=>false),
- array("subtitulo"=>"Capacidades y habilidades que desarrollar","bd"=>"capacidades", "nobreak"=>false),
- array("subtitulo"=>"Prerrequisitos","bd"=>"prerrequisitos", "nobreak"=>false),
- array("subtitulo"=>"Temario","bd"=>"temario", "nobreak"=>false),
- array("subtitulo"=>"Construcción de la calificación final","bd"=>"calificacion", "nobreak"=>true),
- array("subtitulo"=>"Fechas importantes","bd"=>"fechas", "nobreak"=>true),
- )
- ),
- array("titulo"=>"Lineamientos generales", "bd"=>"", "subbloques"=>
- array(
- array("subtitulo"=>"De la asistencia y puntualidad","bd"=>"asistencia", "nobreak"=>false),
- array("subtitulo"=>"Del comportamiento en clase","bd"=>"comportamiento", "nobreak"=>false),
- array("subtitulo"=>"De los exámenes","bd"=>"examenes", "nobreak"=>false),
- array("subtitulo"=>"De las tareas, prácticas y exposiciones","bd"=>"tareas", "nobreak"=>false),
- array("subtitulo"=>"Trabajos de investigación","bd"=>"investigacion", "nobreak"=>false),
- )
- ),
- array("titulo"=>"Bibliografía recomendada", "bd"=>"bibliografia", "subbloques"=>
- array(
- array("subtitulo"=>"","bd"=>"", "nobreak"=>true, "texto"=>"La/el docente que imparte la presente materia, en sus opiniones, posturas o críticas, citas o referencias de consulta, por la metodología didáctica que utiliza, por las herramientas pedagógicas de apoyo en la práctica educativa y, el desarrollo de los contenidos que integran el programa de la presente asignatura o por la implementación del modelo educativo de la Universidad, no tiene por objeto obstaculizar, restringir, impedir, menoscabar, anular o suprimir la orientación sexual, identidad o expresión de género de su alumnado; por ello, partiendo de su derecho de libertad de cátedra, enseña y promueve la construcción de conocimientos con objetividad e imparcialidad, sin censura ni restricciones, propiciando el debate y el análisis de los temas para enriquecer el aprendizaje, sin tener más límite que el respeto a los derechos del estudiantado."),
- )
- )
- );
- $atributos = false;
- foreach($datos as $bloque){
- $xtpl->assign("TITULO", $bloque["titulo"]);
- if($bloque["bd"]!= ""){
- $xtpl->assign("INFO", $syllabus_rs["Syllabus_".$bloque["bd"]]);
- $xtpl->parse("main.content.bloque.titulo.info");
- $xtpl->parse("main.content.bloque.titulo");
- $xtpl->parse("main.content.bloque");
- }
- if(!$atributos ){
- $atributos = true;
- if(count($atributos_rs) > 0){
- $html = "<ul>";
- foreach($atributos_rs as $atr){
- $html.="<li><b>Atributo {$atr["AtributoEgreso_id"]} nivel {$atr["AtributoNivel_desc"]}:</b> {$atr["AtributoEgreso_desc"]}</li>";
- }
- $html.="</ul>";
- $xtpl->assign("SUBTITULO", "Atributos de egreso");
- $xtpl->assign("INFO", $html);
- $xtpl->parse("main.content.bloque.subbloque");
- $xtpl->parse("main.content.bloque");
- }
- }
- foreach($bloque["subbloques"] as $subbloque){
- $xtpl->assign("SUBTITULO", $subbloque["subtitulo"]);
- if($subbloque["bd"]!= ""){
- $xtpl->assign("INFO", $syllabus_rs["Syllabus_".$subbloque["bd"]]);
- }else{
- $xtpl->assign("INFO", $subbloque["texto"]);
- }
- if($subbloque["nobreak"]) $xtpl->parse("main.content.bloque.subbloque_nobreak");
- else $xtpl->parse("main.content.bloque.subbloque");
- $xtpl->parse("main.content.bloque");
- }
- }
- $xtpl->parse("main.content");
- $xtpl->parse("main");
- /*echo $stylesheet;
- $xtpl->out("main"); exit;
- */
- $header = '<table style="width:100%"><tr>
- <td><img src="../../img/logopdf.png" width="40mm" class=""></td>
- <td align="right"><h1 class="titulo">SYLLABUS | FACULTAD DE INGENIERÍA</h1></td>
- </tr></table>';
- $mpdf->SHYlang = 'es';
- $mpdf-> SetTitle('Syllabus -' . $mat_nombre);
- $mpdf-> SetAuthor('Facultad de Ingeniería. © Universidad La Salle A.C. '.date("Y").' Todos los derechos Reservados.');
- $mpdf->SetHTMLHeader($header);//se pone como fondo
- $mpdf->SetHTMLFooter('<img src="../../img/footer_docs.png" >');//se pone como fondo
- $mpdf->WriteHTML($stylesheet);
- if(!isset($errorDesc))
- $mpdf->WriteHTML($xtpl->text("main"));
- else
- $mpdf->WriteHTML($errorDesc);
- $mpdf->Output("syllabus_".getIniciales($mat_nombre)."_".$gpo_nom.".pdf", 'I');
- ?>
|