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 = ""; $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 = '

PLAN DE CÁTEDRA | FACULTAD DE INGENIERÍA

'; $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('');//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); } ?>