123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <?php
- //ini_set('max_execution_time', 150);
- setlocale(LC_TIME, 'es_MX.UTF-8');
- require_once("../../include/nocache.php");
- require_once("../../include/bd_pdo.php");
- require_once("../../include/util.php");
- require_once("../../include/constantes.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('../include/util.php');
- $pag = "../constancias_ei.php";
- $sist = EXPOING;
- //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
- $objSesion = new ValidaSesion($pdo, 301, CONSTANCIA);
- if(!$objSesion->tieneAcceso()){
- header("Location: ".$pag."?error=1");
- exit();
- }
- unset($objValida);
- if(!isset($_POST["doc_id"]) || !isset($_POST["participantes"]) || !isset($_POST["desc"]) || !isset($_POST["fecha"]) || !isset($_POST["num_firmas"], $_POST["firma"], $_POST["puesto"], $_POST["motivo"])){
- header("Location: ".$pag."?error=0");
- exit();
- }
- $concurso = filter_input(INPUT_POST, "concurso", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $part_tipo = filter_input(INPUT_POST, "part_id", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $motivo = trim(filter_input(INPUT_POST, "motivo", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));
- $doc_id = filter_input(INPUT_POST, "doc_id", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $doc_desc = trim(filter_input(INPUT_POST, "doc_desc", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));
- $participantes = $_POST["participantes"];//array
- $desc = $_POST["desc"];
- $fecha = trim(filter_input(INPUT_POST, "fecha", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto
- $numFirmas = filter_input(INPUT_POST, "num_firmas", FILTER_SANITIZE_NUMBER_INT);//limpia texto
- $firma = $_POST["firma"];//array
- $lleva_firma = $_POST["lleva_firma"];//array
- $puesto = $_POST["puesto"];//array
- $firmasArr = array();
- //hay archivo?
- if(!empty($_FILES['archivo']['name'])){
- $archivo = $_FILES['archivo']['name'];
- // Check file size
- if ($_FILES["archivo"]["size"] > 500 * 1024) {//en bytes
- header("Location:".$pag."error=4");
- exit();
- }
- $dot_arr = explode('.', $archivo);
- $ext = end($dot_arr);
- unset($dot_arr);
- $target_logo = "logo_tmp.".$ext;
- }
- try {
- $pdo->beginTransaction();
- $i = 0;
- while($i < $numFirmas){
- $stmt = $pdo->prepare('Select * from fs_constanciafirma(:id, NULL )');//firmas
- $stmt->bindParam(":id", $firma[$i]);
- if(!$stmt->execute()){
- $pdo->rollBack();
- header("Location:".$pag."?error=2");
- //print_r($stmt->errorInfo());
- exit();
- }
- $firma_rs = $stmt->fetch();
- $stmt->closeCursor();
- $firmasArr[] = array("id"=>$firma_rs["ConstanciaFirma_id"] ,"grado"=>$firma_rs["ConstanciaFirma_grado"] ,
- "nombre"=> $firma_rs["ConstanciaFirma_nombre"], "puesto"=>$puesto[$i],
- "firma"=> $firma_rs["ConstanciaFirma_imagen"], "lleva_firma"=>($lleva_firma[$i]==1)?true:false
- );
- $i++;
- }
- $stmt = $pdo->prepare('Select * from ei_fs_concurso(:id)');
- $stmt->bindParam(":id", $concurso);
- if(!$stmt->execute()){
- $pdo->rollBack();
- header("Location:".$pag."?error=2");
- exit();
- }
- $concurso_rs = $stmt->fetch();
- $stmt->closeCursor();
- $evento_marca = $concurso_rs["nom"]." ExpoIngenia ".fechaGuion($concurso_rs["fecha"]);
- //Actualizar texto para constancia del tipo actual
- $stmt = $pdo->prepare('Select * from fu_textoconstanciasistema(:text, :id, '.EXPOING.')');
- $stmt->bindParam(":id", $part_tipo);
- $stmt->bindParam(":text", $desc);
- if(!$stmt->execute()){
- $pdo->rollBack();
- header("Location:".$pag."?error=4");
- exit();
- }
- $stmt->closeCursor();
-
-
- $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
- $fontDirs = $defaultConfig['fontDir'];
- $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
- $fontData = $defaultFontConfig['fontdata'] +
- [ 'tipo' => [
- 'R' => 'IndivisaDisplaySans-Thin.ttf',
- ]] +
- [ 'texto-a' => [
- 'R' => 'IndivisaTextSans-Light.ttf',
- ]] +
- ['indivisa-text' => [
- 'R' => 'IndivisaTextSans-Regular.ttf',
- 'B' => 'IndivisaTextSans-Bold.ttf',
- 'BI' => 'IndivisaTextSans-BoldItalic.ttf',
- ]];
- $stylesheet = "<style>";
- //$stylesheet .= file_get_contents('../../css/indivisa.css'); // external css
- $stylesheet .= file_get_contents('../css/constancia.css'); // external css
- $stylesheet .= "</style>";
- //----------- Archivos y zip ---
- $tmp_folder = "./zip/pdf_".fechaGuion($fecha);
- if (!file_exists($tmp_folder)) {
- mkdir($tmp_folder, 0777, true);
- }
- $zip = new ZipArchive();
- $zip_filename = "zip/EI_".$motivo."_".fechaGuion($fecha)."_".date("his").".zip";
- if ($zip->open($zip_filename, ZipArchive::CREATE)!==TRUE) {
- $pdo->rollBack();
- exit("cannot open <$zip_filename>\n");
- }
- //Marca de agua
- if (file_exists($_SERVER['DOCUMENT_ROOT']. '/const/export/zip/marca.png')) {
- unlink($_SERVER['DOCUMENT_ROOT']. '/const/export/zip/marca.png');
- }
-
- $marca = mb_strtoupper($evento_marca,'UTF-8') . ' ' . fechaGuion($fecha). ' | '; //No acepta caracteres especiales
- generaMarcaDeAgua($marca, "zip/");
-
- $header = '<div><img id="logo" src="../img/lasalle_pdf.jpg">';
- if(isset($target_logo)){
- $target_dir = "../img/logos/";
- if(file_exists($target_dir.$target_logo)){
- unlink($target_dir.$target_logo);
- }
- if (!move_uploaded_file($_FILES["archivo"]["tmp_name"], $target_dir.$target_logo)) {
- $pdo->rollBack();
- header("Location:".$pag."?error=5");
- exit();
- }
- $header .= '<img id="logo_secondary" src="'.$target_dir.$target_logo.'">';
- }
- $header .= '</div>';
- //Footer
- $footer = "";
- $num = 1;
- foreach($participantes as $part){
- $stmt = $pdo->prepare('Select * from ei_fs_generaconstancia(:conc, :usr, :tipo)');
- $stmt->bindParam(":conc", $concurso);
- $stmt->bindParam(":tipo", $part_tipo);
- $stmt->bindParam(":usr", $part);
- if(!$stmt->execute()){
- $pdo->rollBack();
- header("Location:".$pag."?error=2");
- //print_r($stmt->errorInfo());
- exit();
- }
- $datos_rs = $stmt->fetch();
- $stmt->closeCursor();
- $nombre = $datos_rs["nombre"];
- $codeArr = array();
- $codeArr[] = array("busca"=>'$_PROYECTO', "reemplaza"=>$datos_rs["proyecto"]);
- $codeArr[] = array("busca"=>'$_CONCURSO', "reemplaza"=>supText($datos_rs["concurso"]));
- $codeArr[] = array("busca"=>'$_FECHA', "reemplaza"=> fechaTexto($datos_rs["fecha"], true));
- //$codeArr[] = array("busca"=>'$_LUGAR', "reemplaza"=>textoLugar($datos_rs["lugar"]));
- //$codeArr[] = array("busca"=>'$_CATEGORIA', "reemplaza"=>$datos_rs["categoria"]);
- //$codeArr[] = array("busca"=>'$_PUESTO', "reemplaza"=>$datos_rs["puesto"]);
- $desc_new = cambiaTextos($desc, $codeArr);
- $mpdf = new \Mpdf\Mpdf([
- 'mode'=>'utf-8', 'format'=>'Letter',
- 'margin_header'=> 21, 'margin_top'=>52, 'margin_left'=> 35, 'margin_right'=> 30, 'margin_footer'=>10,
- 'orientation' => 'P',
- 'fontDir' => array_merge($fontDirs, [
- __DIR__ . '/../../fonts/indivisaFont/ttf',
- ]),
-
- 'fontdata' => $fontData,
- 'default_font' => 'indivisa-text'
- ]);
- $xtpl = new XTemplate('../tpl/constancia.tpl.html');
-
- $xtpl->assign("TIPO", $doc_desc);
- $xtpl->assign("NOMBRE", $nombre);
- $xtpl->assign("TEXTO", $desc_new);
- $xtpl->parse("main");
-
- $footer = generaFooter($pdo, $sist, $pag, $fecha, $numFirmas, $firmasArr, $nombre, $motivo, $doc_id, $evento_marca, $desc_new, $concurso);
- /*echo $stylesheet;
- echo $header;
- echo $xtpl->text("main");
- echo $footer;
- exit();*/
-
- $mpdf->SHYlang = 'es';
- $mpdf-> SetTitle($doc_desc . '-' . $nombre);
- $mpdf-> SetAuthor('Facultad de Ingeniería. © Universidad La Salle A.C. '.date("Y").' Todos los derechos Reservados.');
- $mpdf->SetHTMLHeader($header);
- $mpdf->WriteHTML($stylesheet);
- $mpdf->WriteHTML($xtpl->text("main"));
- $mpdf->SetHTMLFooter($footer);
- $mpdf->SetProtection(array('print', 'print-highres'), '', md5(time()));
- //$mpdf->Output("file.pdf", 'I');exit();//Test imprime en pantalla
- $mpdf->Output($tmp_folder."/".$doc_desc."_".$num.".pdf", 'F');
- /*if(!empty($datos_rs["clave"]) && $datos_rs["clave"] != "")
- $zip_innerfilename = $doc_desc."_".$nombre."[".$datos_rs["clave"]."].pdf";
- else*/
- $zip_innerfilename = $doc_desc."_".$nombre.".pdf";
- $zip->addFile(
- $tmp_folder."/".$doc_desc."_".$num.".pdf",
- $doc_desc."s_".fechaGuion($fecha)."/".$zip_innerfilename
- );
- $num++;
-
- }//for participante
- 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);
- $pdo->commit();
- unlink("zip/marca.png");
- //unlink($zip_filename);//Test el archivo se queda para no generar de nuevo
-
- } catch(PDOException $e) {
- $pdo->rollBack();
- header("Location:".$pag."?error=2");
- //print_r($e);
- exit();
- }
- 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;
- }
- ?>
|