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 = ""; //----------- 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 = '
'; 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 .= ''; } $header .= '
'; //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; } ?>