123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- <?php
- /* AJAX
- * Genera plan de cátedra del área elegida
-
- */
- 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
- include_once('../classes/PlanCatedra.php');
- ini_set('post_max_size', 1);
- ini_set('max_execution_time', 8*60);
- set_time_limit(8*60);
- $menu = 7;
- $submenu = 74;
- //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
- $objSesion = new ValidaSesion($pdo, $submenu, APSA);
- if(!$objSesion->tieneAcceso()){
- header("Location: ".$pag."?error=3");
- exit();
- }
- unset($objValida);
- if(!isset($_SESSION["periodo_id"])){
- echo "No se ha especificado el periodo";
- exit();
- }
- if(isset($_POST["area"]) && is_numeric($_POST["area"]) && $_POST["area"]!=""){
- $area = filter_input(INPUT_POST, "area", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- }
- if(isset($area) && !empty($area)){
- $stmt = $pdo->prepare('Select * from fs_materiasprofesor(:periodo, null) where "Area_id" = :area');
- $stmt->bindParam(":area", $_POST["area"]);
- }else{
- $stmt = $pdo->prepare('Select * from fs_materiasprofesor(:periodo, null)');
- }
- $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
- if(!$stmt->execute()){
- //print_r($stmt->errorInfo());
- $errorDesc = "Ocurrió un error al cargar los datos del periodo";
- }else{
- $periodo_rs = $stmt->fetchAll();
- }
- $stmt->closeCursor();
- //Obtiene áreas académicas
- if(!isset($area)){
- $area_nombre = "Todas";
- }else{
- $stmt = $pdo->prepare("Select * from fs_areaacademica(:area, NULL)");
- $stmt->bindParam(":area", $area);
- if(!$stmt->execute()){
- $errorDesc = "Ocurrió un error al cargar las áreas académicas.";
- }else{
- $areas_rs = $stmt->fetch();
- $area_nombre = $areas_rs["Area_desc"];
- }
- $stmt->closeCursor();
- }
- //----------- Archivos y zip ---
- $tmp_folder = "./zip/pdf_".date("dmyhis");//carpeta temporal
- if (!file_exists($tmp_folder)) {
- mkdir($tmp_folder, 0777, true);
- }
- $zip = new ZipArchive();
- $zip_filename =strtolower("./zip/plancatedra_".$area_nombre."_".date("Ymd_his").".zip");//nombre de archivo final
- if ($zip->open($zip_filename, ZipArchive::CREATE)!==TRUE) {
- exit("cannot open <$zip_filename>\n");
- }
- //-----
- $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
- $fontDirs = $defaultConfig['fontDir'];
- $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
- $fontData = $defaultFontConfig['fontdata'];
- $pdf_list = [];
- $xtpl = new XTemplate('../tpl/syllabus.tpl.html');
- foreach($periodo_rs as $periodo){
- $filter_mat = $periodo["Materia_id"]."_".$periodo["Grupo_id"]."_".$periodo["Submateria_id"];
- $filter_materia_nom = $periodo["Materia_desc"];
- $filter_gpo_nom = $periodo["Grupo_desc"];
- $matArr = explode("_",$filter_mat);
-
- //--
- $mat = $periodo["Materia_id"];
- $gpo = $periodo["Grupo_id"];
- $gpo_nom = $periodo["Grupo_desc"].$periodo["Carrera_prefijo"];
- $usr = $periodo["Usuario_id"];
-
-
- $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($periodo["Submateria_id"]!= ""){
- $sub = $periodo["Submateria_id"];
- }else{
- $sub=null;
- }
- $planObj = new PlanCatedra($pdo);
- if(!$planObj->generaCalendario($usr, $usr_nombre, $mat, $gpo, $gpo_nom, $sub)){
- $errorDesc = "Ocurrió un error al generar el plan de .".$usr_nombre." ".$mat." ".$gpo_nom." ".$sub;
- }
- //--Nombre de materia
- $mat_nombre = "";
- $mat_sem = "";
- if(!isset($sub)){
- $stmt = $pdo->prepare('Select "Materia_desc", "Materia_semestre" from fs_materia(:mat, NULL, NULL,NULL,NULL,0,NULL)');
- $stmt->bindParam(":mat", $mat);
- if(!$stmt->execute()){
- return false;
- //header("Location: ".$this->pag."?error=3");
- exit();
- }
- $mat_rs = $stmt->fetch();
- $stmt->closeCursor();
- $mat_nombre = $mat_rs["Materia_desc"];
- $mat_sem = $mat_rs["Materia_semestre"];
- unset($mat_rs);
- }else{
- $stmt = $pdo->prepare('Select "Submateria_desc", "Materia_semestre" from fs_submateria(:mat, :sub)');
- $stmt->bindParam(":mat", $mat);
- $stmt->bindParam(":sub", $sub);
- if(!$stmt->execute()){
- //header("Location: ".$this->pag."?error=3");
- return false;
- exit();
- }
- $mat_rs = $stmt->fetch();
- $stmt->closeCursor();
- $mat_nombre = $mat_rs["Submateria_desc"];
- $mat_sem = $mat_rs["Materia_semestre"];
- unset($mat_rs);
- }
-
- $pdf_list[] = array("contenido"=> $planObj->getPlan(), "materia"=> $mat_nombre, "grupo"=> $gpo_nom, "profesor"=> iniciales($usr_nombre));
- /*if(!isset($errorDesc))
- $mpdf->WriteHTML($pdf_full);
- else
- $mpdf->WriteHTML($errorDesc);
- */
- }
- /*
- echo $stylesheet;
- echo $pdf_full;
- exit;*/
- $stylesheet = "<style>";
- $stylesheet .= file_get_contents('../../css/indivisa.css'); // external css
- $stylesheet .= file_get_contents('../css/syllabus.css'); // external css
- $stylesheet .= "</style>";
- $num = 0;
- foreach($pdf_list as $pdf){
- $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');
- $header = '<table style="width:100%"><tr>
- <td><img src="../../img/logopdf.png" width="40mm" class=""></td>
- <td align="right"><h1 class="titulo">PLAN DE CÁTEDRA | FACULTAD DE INGENIERÍA</h1></td>
- </tr></table>';
- $mpdf->SHYlang = 'es';
- $mpdf-> SetTitle('Plan de cátedra');
- $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($pdf["contenido"]);
- //if($num < count($pdf_list)-1)
- // $mpdf->AddPage();
- }else
- $mpdf->WriteHTML($errorDesc);
- //$mpdf->Output($_SESSION["periodo_id"]."syllabus_".$area_nombre.".pdf", 'D');
- $mpdf->Output($tmp_folder."/syllabus_".$num.".pdf", 'F');
- $zip->addFile(
- $tmp_folder."/syllabus_".$num.".pdf",
- $pdf["materia"]."_".$pdf["grupo"]."_".$pdf["profesor"].".pdf"
-
- );
- $num++;
- }
- //$mpdf->Output($_SESSION["periodo_id"]."planesCatedra_".$area_nombre.".pdf", 'D');
- if($zip->numFiles<=0){
- $pdo->rollBack();
- echo "Error al guardar en el zip";
- $zip->close();
- unlink($zip_filename);
- exit();
- }
- $zip->close();
- removeFolder($tmp_folder);
- header("Content-Type: application/zip");
- header("Content-Disposition: attachment; filename=".basename($zip_filename));
- header("Pragma: no-cache");
- header("Expires: 0");
- ob_end_clean();
- flush();
- readfile($zip_filename);
- unlink($zip_filename);
- function removeFolder($folderName) {
- if (is_dir($folderName))
- $folderHandle = opendir($folderName);
- if (!$folderHandle)
- return false;
- while($file = readdir($folderHandle)) {
- if ($file != "." && $file != "..") {
- if (!is_dir($folderName."/".$file))
- unlink($folderName."/".$file);
- else
- removeFolder($folderName.'/'.$file);
- }
- }
- closedir($folderHandle);
- rmdir($folderName);
- return true;
- }
- //funcion que recibe un nombre separado por espacios y regresa las iniciales
- function iniciales($nombre){
- $nombre = explode(" ", $nombre);
- $iniciales = "";
- foreach($nombre as $n){
- $iniciales .= substr($n, 0, 1);
- }
- return strtoupper($iniciales);
- }
- ?>
|