123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- <?php
- // PHP print errors
- ini_set('display_errors', 1);
- ini_set('display_startup_errors', 1);
- error_reporting(E_ALL);
- extract($_POST);
- 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
- require_once("../include/Fechas.php");
- require_once('../include/util.php');
- require_once('../include/encripcion.php');
- }
- $pag = "../reporte_insignias.php";
- //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
- $objSesion = new ValidaSesion($pdo, 115, GEMA);
- if (!$objSesion->tieneAcceso()) {
- header("Location: " . $pag . "?error=1");
- exit();
- }
- unset($objValida);
- if (!isset($alumnos, $fecha_carta, $firmado, $tamano)) {
- header("Location: " . $pag . "?error=0");
- exit();
- } else {
- // echo $fecha_carta;
- // exit;
- }
- # Function to query the database and return the result
- function query(string $sql, array $bind_params = [], bool $print = false)
- {
- global $pdo, $pag;
- if ($print) {
- echo $sql;
- print_r($bind_params);
- exit;
- }
- $stmt = $pdo->prepare($sql);
- foreach ($bind_params as $param => $value)
- $stmt->bindParam($param, $value);
- if (!$stmt->execute()) {
- $pdo->rollBack();
- header("Location:" . $pag . "?error=2");
- //print_r($stmt->errorInfo());
- exit();
- }
- $result_set = $stmt->fetchAll();
- $stmt->closeCursor();
- $stmt = null;
- return $result_set;
- }
- $defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
- /********* FONTS **********/
- $fontDirs = $defaultConfig['fontDir'];
- $defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults();
- $fontData = $defaultFontConfig['fontdata'] + ['indivisatext' => [
- 'R' => '../../fonts/indivisaFont/ttf/IndivisaTextSans-Regular.ttf',
- 'I' => '../../fonts/indivisaFont/ttf/IndivisaTextSans-RegularItalic.ttf',
- 'B' => '../../fonts/indivisaFont/ttf/IndivisaTextSans-Bold.ttf',
- 'BI' => '../../fonts/indivisaFont/ttf/IndivisaTextSans-BoldItalic.ttf',
- ]] + ['indivisadisplay' => [
- 'R' => '../../fonts/indivisaFont/ttf/IndivisaDisplaySans-Regular.ttf',
- 'I' => '../../fonts/indivisaFont/ttf/IndivisaDisplaySans-RegularItalic.ttf',
- 'B' => '../../fonts/indivisaFont/ttf/IndivisaDisplaySans-Heavy.ttf',
- 'BI' => '../../fonts/indivisaFont/ttf/IndivisaDisplaySans-HeavyItalic.ttf',
- ]] + ['fontawesome' => [
- 'R' => '../../fonts/fa/fa-regular-400.ttf',
- 'B' => '../../fonts/fa/fa-solid-900.ttf',
- ]];
- /********* CONFIGURACIÓN INICIAL **********/
- $config = [
- 'mode' => 'utf-8', 'format' => 'Letter',
- 'margin_header' => 12, 'margin_top' => 25, 'margin_left' => 15, 'margin_right' => 15, 'margin_footer' => 4,
- 'fontDir' => array_merge($fontDirs, [__DIR__]), 'fontdata' => $fontData, 'default_font' => 'indivisatext'
- ];
- /********* TEMPLATE **********/
- $carta = new XTemplate('../tpl/carta.tpl.html');
- $carta->parse('header');
- $carta->parse('footer');
- /********* PDF **********/
- $mpdf = new \Mpdf\Mpdf($config);
- $mpdf->SHYlang = 'es';
- # FIRMAS DE LOS DIRECTORES
- $carta->assign("FECHA", fechaConstancia($fecha_carta));
- $mpdf->SetHTMLHeader($carta->text('header'));
- $mpdf->SetHTMLFooter($carta->text('footer'));
- $mpdf->SetTitle("Insignias | $fecha_carta");
- $mpdf->SetAuthor('Facultad de Ingeniería. © Universidad La Salle A.C. 2022 Todos los derechos Reservados.');
- /********* HOJA DE ESTILOS **********/
- $mpdf->WriteHTML('<link rel="stylesheet" href="../css/' . $estilo . '">');
- //$firmas_id = [8, 27];
- # Get firmas from fs_constanciafirma function
- //$firmas = query('SELECT * FROM fs_constanciafirma(NULL, true) WHERE "Usuario_id" IN (' . implode(',', $firmas_id) . ")");
- $firmas_id = [1, 12];
- # Get firmas from fs_constanciafirma function
- $firmas = query('SELECT * FROM fs_constanciafirma(NULL, true) as c INNER JOIN "Puesto" p ON c."Usuario_id"=p."Usuario_id" WHERE p."Puesto_id" IN (' . implode(',', $firmas_id) . ")");
- // INSIGNIAS -> DESCRIPCIÓN
- for ($i = 0; $i < 2; $i++) {
- $carta->assign("NOMBRE$i", $firmas[$i]["ConstanciaFirma_grado"] . ' ' . $firmas[$i]["ConstanciaFirma_nombre"]);
- $carta->assign("CARGO$i", $firmas[$i]["ConstanciaFirma_puesto"]);
- }
- $marca = 'INSIGNIAS ' . fechaGuion($fecha_carta) . ' | '; //No acepta caracteres especiales
- // generaMarcaDeAgua($marca, "zip/");
- $carta->assign('MARCA', 'zip/marca.png');
- for ($i = 1; $i <= 2; $i++)
- $carta->assign("FIRMA$i", $firmado ? $firmas[$i - 1]["ConstanciaFirma_imagen"]: "fondo.png");
- $carta->parse('main.firmas');
- $totalAlumnos = count($alumnos) - 1;
- $alumnosConInsignias = 0;
- foreach ($alumnos as $alumno_key => $alumno_id) {
- $insignias_rs = query('SELECT * FROM fs_insigniareportealumno(:id_alumno)', [':id_alumno' => $alumno_id]);
- if (empty($insignias_rs)) continue;
- else
- // add insignia
- $alumnosConInsignias++;
- $alumno_carta = new XTemplate('../tpl/carta.tpl.html');
- $usuario_rs = query('SELECT * FROM fs_alumno(:id_alumno, NULL)', [':id_alumno' => $alumno_id]);
- $usuario = $usuario_rs[0];
- // TÍTULO
- $alumno = $usuario['Usuario_nombre'] . ' ' . $usuario['Usuario_apellidos'];
- $mpdf->WriteHTML($alumno_carta->text("resumen"));
- $alumno_carta->assign('ALUMNO', $alumno);
- $carrera = mb_strtoupper($usuario['Carrera_desc'], 'UTF-8');
- $alumno_carta->assign('CARRERA', $carrera);
- if ($alumnosConInsignias > 1) $mpdf->AddPage();
- $alumno_carta->parse("main.titulo");
- $mpdf->WriteHTML($alumno_carta->text("main.titulo"));
- foreach ($insignias_rs as $key => $insignia) {
- # if the insignia tipo is new
- if ($key == 0 || $insignia["InsigniaTipo_desc"] != $insignias_rs[$key - 1]["InsigniaTipo_desc"]) {
- $alumno_carta->assign('INSIGNIA_TIPO', $insignia["InsigniaTipo_desc"]);
- $alumno_carta->assign('INSIGNIA_COLOR', $insignia["InsigniaTipo_color"]);
- $alumno_carta->parse('main.insignias.tipo');
- $mpdf->writeHTML($alumno_carta->text("main.insignia.tipo"));
- }
- $alumno_carta->assign('INSIGNIA_TITULO', $insignia["Insignia_titulo"]);
- $alumno_carta->assign('ESPACIO', $tamano);
- $alumno_carta->assign('INSIGNIA_DESCRIPCION', $insignia["Insignia_desc"]);
- # If fecha inicial is the same as fecha final
- // if insignia is general entonces query fecha
- if (!$insignia["InsigniaTipo_general"]) {
- $fecha_inicial = date_create($insignia["InsigniaPersonal_fecha_inicial"]);
- $fecha_final = date_create($insignia["InsigniaPersonal_fecha_final"]);
- # If fecha inicial is the same as fecha final
- if ($fecha_inicial == $fecha_final || $insignia["InsigniaPersonal_fecha_inicial"] == null) {
- $alumno_carta->assign('INSIGNIA_FECHA', Fechas::romanizaFecha($fecha_final));
- } else {
- $alumno_carta->assign('INSIGNIA_FECHA', Fechas::estandarizaDia($fecha_inicial, $fecha_final, 'ultimos'));
- }
- } else {
- $reglas_rs = query('SELECT * FROM fs_insigniageneralreglas(:id_insignia)', [':id_insignia' => $insignia["Insignia_id"]])[0];
- $fecha_inicial = date_create($reglas_rs["CalendarioEvento_fecha"]);
- switch ($reglas_rs["CalendarioReglas_intervalo"]) {
- case 1: {
- $fecha_final = date_create($reglas_rs["CalendarioReglas_fecha_final"]);
- // add one day to fecha_inicial
- $tipo = (new DateTime($fecha_inicial->format('Y-m-d')))->modify('+1 day') == $fecha_final ? 'ultimos' : 'rango';
- $alumno_carta->assign('INSIGNIA_FECHA', Fechas::estandarizaDia($fecha_inicial, $fecha_final, $tipo));
- break; // diario
- }
- case 2:
- $alumno_carta->assign('INSIGNIA_FECHA', "Pendiente semanal");
- break; // semanal
- case 3:
- $alumno_carta->assign('INSIGNIA_FECHA', "Pendiente mensual");
- break; // mensual
- default:
- $alumno_carta->assign('INSIGNIA_FECHA', Fechas::romanizaFecha($fecha_inicial));
- break; // una vez
- }
- }
- $alumno_carta->assign('FOLIO', encripta($alumno_id . ',' . $insignia['Insignia_id']));
- $llevaLínea = isset($insignias_rs[$key + 1]) && $insignias_rs[$key + 1]["InsigniaTipo_desc"] == $insignia["InsigniaTipo_desc"];
- $alumno_carta->assign('INSIGNIA_LINEA', $llevaLínea ? 'linea' : '');
- $alumno_carta->parse('main.insignias.descripcion');
- $alumno_carta->parse('main.insignias.descripcion.calendar');
- $alumno_carta->parse('main.insignias');
- }
- # Prevent the blank page at the end of the document
- $mpdf->WriteHTML($alumno_carta->text('main.insignias'));
- if ($mpdf->y > 180.0) $mpdf->AddPage();
- $mpdf->WriteHTML($carta->text('main.firmas'));
- }
- if ($alumnosConInsignias > 0)
- $mpdf->Output('cartas.pdf', 'I');
- else
- header("Location:" . $pag . "?error=3");
|