| Server IP : 52.9.100.119 / Your IP : 216.73.216.193 Web Server : Apache/2.4.61 (Amazon) OpenSSL/1.0.2k-fips PHP/7.3.30 Phusion_Passenger/5.1.5 System : Linux ip-172-31-9-35 4.14.355-196.618.amzn1.x86_64 #1 SMP Mon Apr 7 17:09:50 UTC 2025 x86_64 User : root ( 0) PHP Version : 7.3.30 Disable Function : exec,passthru,shell_exec,system,popen,proc_open MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /data/html/seica-apis/ |
Upload File : |
<?php
ini_set('memory_limit', '5000M');
header('Content-Type: application/json,application/x-www-form-urlencoded');
header('Access-Control-Allow-Headers: Content-Type');
include_once 'lib/rb_setup.php';
//require_once 'lib/api_token.php';
//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
// R::fancyDebug(true);
$data = array();
$en_proceso = array();
$terminados = array();
$STATUS_FILTER = 3;
$pdf_language = "es-MX";
$query_base = 'select p.* from proyecto p';
$query_condition = '';
if(isset($_POST['lang_filter'])){
$pdf_language = $_POST['lang_filter'];
}
if(isset($_POST['status_filter'])){
$STATUS_FILTER = $_POST['status_filter'];
}
if(isset($_POST['location_filter'])){
$query_base = $query_base.' inner join estado_municipio em on p.municipio = em.municipio_id';
$query_condition = $query_condition.' and em.estado_id = '.$_POST['location_filter'];
}
if(isset($_POST['client_filter'])){
$query_base = $query_base.' inner join cliente c on p.cliente = c.id';
$query_condition = $query_condition.' and p.cliente = '.$_POST['client_filter'];
}
if(isset($_POST['description_filter'])){
$query_base = $query_base.' inner join categoria_proyecto catp on p.id = catp.proyecto';
$query_condition = $query_condition.' and catp.categoria = '.$_POST['description_filter'];
}
if(isset($_POST['leed_filter'])){
$query_base = $query_base.' inner join certificacion_proyecto cerp on p.id = cerp.proyecto';
$query_condition = $query_condition.' and cerp.nivel = '.$_POST['leed_filter'];
}
if(isset($_POST['year_filter'])){
$query_condition = $query_condition." and p.fin like '".$_POST['year_filter']."%'";
}
if(isset($_POST['order_filter'])){
$query_condition = $query_condition.' order by p.nombre '.$_POST['order_filter'];
}
if ($STATUS_FILTER == 3 || $STATUS_FILTER == 2) {
$query_condition_base =' where mostrar = 1 and status = 2 ';
//error_log(print_r($query_base.$query_condition_base.$query_condition, TRUE));
$raw_query_result = R::getAll( $query_base.$query_condition_base.$query_condition );
$process_list = R::convertToBeans( 'proyecto', $raw_query_result );
if (!empty($process_list)) {
foreach ($process_list as $proyect) {
$id = $proyect->id;
$fav = $proyect->fav;
$nombre = $proyect->nombre;
$avance = $proyect->avance;
if (!empty($proyect->portada)) {
$portada = $proyect->portada;
} else {
$portada = defaultImage();
}
$f_inicio = $proyect->inicio;
$f_fin = $proyect->fin;
$metros = number_format($proyect->superficie_metros);
$pies = number_format($proyect->superficie_pies);
if ($proyect->status == 1) {
$status = "Terminado";
} else {
$status = "En proceso";
}
$descripciones = R::findAll('categoria_proyecto', 'where proyecto = ?', [$id]);
$categorias = array();
foreach ($descripciones as $d) {
$cat = R::getRow('select id, nombre,nombre_en from categoria where id =?', [$d["categoria"]]);
array_push($categorias, $cat);
}
$cert = R::findAll('certificacion_proyecto', 'where proyecto = ?', [$id]);
$certificaciones = array();
foreach ($cert as $c) {
$certi = R::getRow('select c.id as certificacion_id, c.nombre as certificacion_nombre, cn.id as nivel_id, cn.nombre as nivel_nombre, cn.nombre_en as nivel_nombre_en from certificacion as c join certificacion_nivel cn on c.id = cn.certificacion where c.id = ? and cn.id = ?', [$c["certificacion"], $c["nivel"]]);
array_push($certificaciones, $certi);
}
$cliente = R::load('cliente', $proyect->cliente);
$ubicacion = R::getRow('select m.id as ciudad_id, m.municipio as ciudad, latitud, longitud, e.id as estado_id, e.estado as estado from municipio m inner join estado_municipio em on m.id = em.municipio_id inner join estado e on em.estado_id = e.id where m.id = ?', [$proyect->municipio]);
array_push($en_proceso, ["id" => $id, "fav" => $fav, "nombre" => $nombre, "portada" => $portada, "status" => $status, "inicio" => $f_inicio, "fin" => $f_fin, "metros" => $metros, "pies" => $pies, "cliente" => $cliente, "Categorias" => $categorias, "certificaciones" => $certificaciones, "ubicacion" => $ubicacion, "avance"=>$avance]);
}
}
}
if ($STATUS_FILTER == 3 || $STATUS_FILTER == 1) {
$query_condition_base =' where mostrar = 1 and status = 1 ';
//error_log(print_r($query_base.$query_condition_base.$query_condition, TRUE));
$raw_query_result = R::getAll( $query_base.$query_condition_base.$query_condition.' order by fin desc' );
$finish_list = R::convertToBeans( 'proyecto', $raw_query_result );
if (!empty($finish_list)) {
foreach ($finish_list as $proyect) {
$id = $proyect->id;
$fav = $proyect->fav;
$nombre = $proyect->nombre;
$avance = $proyect->avance;
if (!empty($proyect->portada)) {
$portada = $proyect->portada;
} else {
$portada = defaultImage();
}
$f_inicio = $proyect->inicio;
$f_fin = $proyect->fin;
$metros = number_format($proyect->superficie_metros);
$pies = number_format($proyect->superficie_pies);
if ($proyect->status == 1) {
$status = "Terminado";
} else {
$status = "En proceso";
}
$descripciones = R::findAll('categoria_proyecto', 'where proyecto = ?', [$id]);
$categorias = array();
foreach ($descripciones as $d) {
$cat = R::getRow('select id, nombre,nombre_en from categoria where id =?', [$d["categoria"]]);
array_push($categorias, $cat);
}
$cert = R::findAll('certificacion_proyecto', 'where proyecto = ?', [$id]);
$certificaciones = array();
foreach ($cert as $c) {
$certi = R::getRow('select c.id as certificacion_id, c.nombre as certificacion_nombre, cn.id as nivel_id, cn.nombre as nivel_nombre, cn.nombre_en as nivel_nombre_en from certificacion as c join certificacion_nivel cn on c.id = cn.certificacion where c.id = ? and cn.id = ?', [$c["certificacion"], $c["nivel"]]);
array_push($certificaciones, $certi);
}
$cliente = R::load('cliente', $proyect->cliente);
$ubicacion = R::getRow('select m.id as ciudad_id, m.municipio as ciudad, latitud, longitud, e.id as estado_id, e.estado as estado from municipio m inner join estado_municipio em on m.id = em.municipio_id inner join estado e on em.estado_id = e.id where m.id = ?', [$proyect->municipio]);
array_push($terminados, ["id" => $id, "fav" => $fav, "nombre" => $nombre, "portada" => $portada, "status" => $status, "inicio" => $f_inicio, "fin" => $f_fin, "metros" => $metros, "pies" => $pies, "cliente" => $cliente, "Categorias" => $categorias, "certificaciones" => $certificaciones, "ubicacion" => $ubicacion, "avance"=>$avance]);
}
}
}
// Require composer autoload
require_once __DIR__ . '/vendor/autoload.php';
$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
$fontDirs = $defaultConfig['fontDir'];
$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
$fontData = $defaultFontConfig['fontdata'];
use Ilovepdf\Ilovepdf;
// Create an instance of the class:
$mpdf= new \Mpdf\Mpdf(['mode' => 'utf-8','format' => 'A4','margin_left' => 0,'margin_right' => 0,'margin_top' => 0,'margin_bottom' => 0,'margin_header' => 0,'margin_footer' => 0,'fontDir' => array_merge($fontDirs, [ __DIR__ . '/assets_pdf/', ]), 'fontdata' => $fontData + ['roc-grotesk' => [ 'R' => 'roc-grotesk-regular.ttf', ], 'roc-grotesk-wide' => [ 'R' => 'roc-grotesk-wide-regular.ttf', ], 'roc-grotesk-wide-bold' => [ 'R' => 'roc-grotesk-wide-500.ttf', ], ]]); //use this customization
$mpdf->showImageErrors = true;
$mpdf->SetCompression(true);
$mpdf->simpleTables = true; //Quitar tablas complejas y tratar de reducir el tamano del archivo
$mpdf->img_dpi = 15; //antes 20
if($pdf_language == "es-MX"){
$html = file_get_contents("lib/pdf_start.html");
}
else{
$html = file_get_contents("lib/pdf_start_en.html");
}
/*$html = $html.'<pagebreak>';
if($pdf_language == "es-MX"){
$xx = file_get_contents("lib/title_inprogress.html");
}
else{
$xx = file_get_contents("lib/title_inprogress_en.html");
}
$html = $html.$xx;*/
$p_count = 4;
if($pdf_language == "es-MX"){
foreach ($en_proceso as $proyecto){
if(( $p_count % 4 ) == 0){
$html = $html.'<pagebreak>';
$xx = file_get_contents("lib/title_inprogress.html");
$html = $html.$xx;
}
$item = file_get_contents("lib/item.html");
$portada = $proyecto["portada"];
$portada = str_replace("https://apis.seica.com.mx/","",$portada);
$cats ='';
foreach($proyecto["Categorias"] as $cat){
$cats.= '-'.$cat["nombre"].'<br>';
}
$certs = '';
foreach($proyecto["certificaciones"] as $c){
$certs.= '-'.$c["nivel_nombre"].'<br>';
}
$item = str_replace('$_portada',$portada,$item);
$item = str_replace('$_nombre',$proyecto["nombre"],$item);
$item = str_replace('$_metros',$proyecto["metros"],$item);
$item = str_replace('$_cliente',$proyecto["cliente"]["nombre"],$item);
$item = str_replace('$_categoria',$cats,$item);
$item = str_replace('$_ubicacion',$proyecto["ubicacion"]["ciudad"],$item);
$item = str_replace('$_date_start',$proyecto["inicio"],$item);
$item = str_replace('$_date_end',$proyecto["fin"],$item);
$item = str_replace('$_avance',$proyecto["avance"],$item);
$item = str_replace('$_cert',$certs,$item);
$html = $html.$item;
$p_count ++;
}
}
else{
foreach ($en_proceso as $proyecto){
if(( $p_count % 4 ) == 0){
$html = $html.'<pagebreak>';
$xx = file_get_contents("lib/title_inprogress_en.html");
$html = $html.$xx;
}
$item = file_get_contents("lib/item_en.html");
$portada = $proyecto["portada"];
$portada = str_replace("https://apis.seica.com.mx/","",$portada);
$cats ='';
foreach($proyecto["Categorias"] as $cat){
$cats.= '-'.$cat["nombre_en"].'<br>';
}
$certs = '';
foreach($proyecto["certificaciones"] as $c){
$certs.= '-'.$c["nivel_nombre_en"].'<br>';
}
$item = str_replace('$_portada',$portada,$item);
$item = str_replace('$_nombre',$proyecto["nombre"],$item);
$item = str_replace('$_pies',$proyecto["pies"],$item);
$item = str_replace('$_cliente',$proyecto["cliente"]["nombre"],$item);
$item = str_replace('$_categoria',$cats,$item);
$item = str_replace('$_ubicacion',$proyecto["ubicacion"]["ciudad"],$item);
$item = str_replace('$_date_start',$proyecto["inicio"],$item);
$item = str_replace('$_date_end',$proyecto["fin"],$item);
$item = str_replace('$_avance',$proyecto["avance"],$item);
$item = str_replace('$_cert',$certs,$item);
$html = $html.$item;
$p_count ++;
}
}
/*$html = $html.'<pagebreak>';
if($pdf_language == "es-MX"){
$xx = file_get_contents('lib/title_completed.html');
}
else{
$xx = file_get_contents('lib/title_completed_en.html');
}
$html = $html.$xx;*/
$p_count = 4;
if($pdf_language == "es-MX"){
foreach ($terminados as $proyecto){
if(( $p_count % 4 ) == 0){
$html = $html.'<pagebreak>';
$xx = file_get_contents("lib/title_completed.html");
$html = $html.$xx;
}
$item = file_get_contents("lib/item_f.html");
$portada = $proyecto["portada"];
$portada = str_replace("https://apis.seica.com.mx/","",$portada);
$date = DateTime::createFromFormat("Y-m-d", $proyecto["fin"]);
$cats ='';
foreach($proyecto["Categorias"] as $cat){
$cats.= '-'.$cat["nombre"].'<br>';
}
$certs = '';
foreach($proyecto["certificaciones"] as $c){
$certs.= '-'.$c["nivel_nombre"].'<br>';
}
$item = str_replace('$_portada',$portada,$item);
$item = str_replace('$_nombre',$proyecto["nombre"],$item);
$item = str_replace('$_metros',$proyecto["metros"],$item);
$item = str_replace('$_cliente',$proyecto["cliente"]["nombre"],$item);
$item = str_replace('$_categoria',$cats,$item);
$item = str_replace('$_ubicacion',$proyecto["ubicacion"]["ciudad"],$item);
$item = str_replace('$_date_start',$proyecto["inicio"],$item);
$item = str_replace('$_date_end',$date->format("Y"),$item);
$item = str_replace('$_avance',"100",$item);
$item = str_replace('$_cert',$certs,$item);
$html = $html.$item;
$p_count ++;
}
}
else{
foreach ($terminados as $proyecto){
if(( $p_count % 4 ) == 0){
$html = $html.'<pagebreak>';
$xx = file_get_contents("lib/title_completed_en.html");
$html = $html.$xx;
}
$item = file_get_contents("lib/item_en_f.html");
$portada = $proyecto["portada"];
$portada = str_replace("https://apis.seica.com.mx/","",$portada);
$date = DateTime::createFromFormat("Y-m-d", $proyecto["fin"]);
$cats ='';
foreach($proyecto["Categorias"] as $cat){
$cats.= '-'.$cat["nombre_en"].'<br>';
}
$certs = '';
foreach($proyecto["certificaciones"] as $c){
$certs.= '-'.$c["nivel_nombre_en"].'<br>';
}
$item = str_replace('$_portada',$portada,$item);
$item = str_replace('$_nombre',$proyecto["nombre"],$item);
$item = str_replace('$_pies',$proyecto["pies"],$item);
$item = str_replace('$_cliente',$proyecto["cliente"]["nombre"],$item);
$item = str_replace('$_categoria',$cats,$item);
$item = str_replace('$_ubicacion',$proyecto["ubicacion"]["ciudad"],$item);
$item = str_replace('$_date_start',$proyecto["inicio"],$item);
$item = str_replace('$_date_end',$date->format("Y"),$item);
$item = str_replace('$_avance',"100",$item);
$item = str_replace('$_cert',$certs,$item);
$html = $html.$item;
$p_count ++;
}
}
$xx = file_get_contents('lib/finish_close.html');
$html = $html.$xx;
// Write some HTML code:
$mpdf->WriteHTML($html);
// Output a PDF file directly to the browser
$mpdf->Output("catalogo.pdf", 'D');
/// compress ilovepdf
///
try {
$ilovepdf = new Ilovepdf('project_public_49d950d99f4634a2f5f87d6a1f3304b0_ENp_e07e6077b5e316a73a6d6da2319a0d22d','secret_key_8f0eb7580a22b26fed3ae44b58fa1e2c_KewA0cfad31badfdb1c3a2edd3872b4d5c362');
$myTask = $ilovepdf->newTask('compress');
$file1 = $myTask->addFile('catalogo.pdf');
$myTask->execute();
$myTask->download();
}
catch (Exception $e){
echo $e;
}
$filename="catalogo.pdf";
header('Content-type:application/pdf');
header('Content-disposition: inline; filename="'.$filename.'"');
header('content-Transfer-Encoding:binary');
header('Accept-Ranges:bytes');
readfile($filename);