<?php
header('Content-Type: application/json;charset= utf-8');
ini_set('memory_limit','5024M');
set_time_limit(0);
require("dbinfo.php");
require("dl.php");
$con = mysqli_connect($sqlname, $username, $password, $db);
if(!$con){exit;}



$fecha_nombre_archivo = dl_fecha::dl_ahora_texto_nombre_archivo();
$nombre_archivo = "referencias/Shapefile/conex_capta" . $fecha_nombre_archivo;
$nombre_achivo_con_extension = $nombre_archivo . ".shp";

$nombre_prj = $nombre_archivo . ".prj";
$archivo_prj = fopen($nombre_prj,"w"); 
$renglon = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]';
fwrite($archivo_prj,$renglon);
fclose($archivo_prj);

require_once('referencias/Shapefile/ShapefileAutoloader.php');
Shapefile\ShapefileAutoloader::register();
use Shapefile\Shapefile;
use Shapefile\ShapefileException;
use Shapefile\ShapefileWriter;
use Shapefile\Geometry\Point;
use Shapefile\Geometry\Linestring;
$Shapefile = new ShapefileWriter($nombre_archivo);
$Shapefile->setShapeType(Shapefile::SHAPE_TYPE_POLYLINE);

$Shapefile->addNumericField('id');
$Shapefile->addNumericField('id_capta');
$Shapefile->addNumericField('id_tramo');
$Shapefile->addFloatField('longitud',6,2);
$Shapefile->addNumericField('tipo');
$Shapefile->addCharField('desctipo', 254);
$Shapefile->addFloatField('seccion',7,2);
$Shapefile->addFloatField('profund',6,2);
$Shapefile->addNumericField('contrato');
$Shapefile->addCharField('desccon', 254);
$Shapefile->addNumericField('proyecto');
$Shapefile->addCharField('descpro', 254);
$Shapefile->addCharField('alta_fue', 100);
$Shapefile->addCharField('alta_fe', 50);
$Shapefile->addCharField('material', 254);
$Shapefile->addCharField('etapa', 254);
$Shapefile->addCharField('estado', 254);
$Shapefile->addCharField('accion', 254);
$Shapefile->addCharField('coment', 254);

$sql = "SELECT astext(SHAPE) AS geom, id, id_captacion, id_tramo, tipo, (SELECT codigo FROM adm_tipos WHERE id = cat_conex_capt.tipo LIMIT 1) as desctipo,";
$sql .= " longitud, material, seccion, profundidad,";
$sql .= " estado, accion, alta_fuente,alta_fecha, comentarios, etapa,";
$sql .= " contrato, (SELECT nombre FROM adm_contratos WHERE id = cat_conex_capt.contrato LIMIT 1) as desccon,";
$sql .= " proyecto, (SELECT nombre FROM adm_proyectos WHERE id = cat_conex_capt.proyecto LIMIT 1) as descpro";
$sql .= " FROM cat_conex_capt WHERE activo = 1";


$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
				$geom = $row["geom"];
                $id = $row["id"];
                $id_captacion = $row["id_captacion"];
				$id_tramo = $row["id_tramo"];
				$tipo = $row["tipo"];
				$desctipo = $row["desctipo"];
				$longitud = $row["longitud"];
				$material = $row["material"];
				$seccion = $row["seccion"];
				$profundidad = $row["profundidad"];
				$estado = $row["estado"];
				$accion = $row["accion"];
				$alta_fuente = $row["alta_fuente"];
				$alta_fecha = $row["alta_fecha"];
				$comentarios = $row["comentarios"];
				$etapa = $row["etapa"];
				$contrato = $row["contrato"];
				$desccon = $row["desccon"];
				$proyecto = $row["proyecto"];
				$descpro = $row["descpro"];
				
	$linea = new Linestring(); 
	$geom = substr($geom, 11);
	$geom = substr($geom, 0, -1);
	$puntos = explode(",",$geom);
    foreach ($puntos as $punto) {
		$coords = explode(" ",$punto);
        $Point = new Point($coords[0], $coords[1]);
		$linea->addPoint($Point);
    }

//	    $linea->setData('OGR_FID',$OGR_FID);
	    $linea->setData('id',$id);
		$linea->setData('id_capta',$id_captacion);
		$linea->setData('id_tramo',$id_tramo);
    	$linea->setData('longitud', $longitud);
    	$linea->setData('tipo', $tipo);
		$linea->setData('desctipo', $desctipo);
		$linea->setData('seccion', $seccion);
		$linea->setData('profund', $profundidad);
		$linea->setData('contrato', $contrato);
		$linea->setData('desccon', $desccon);
		$linea->setData('proyecto', $proyecto);
		$linea->setData('descpro', $descpro);
		$linea->setData('alta_fue', $alta_fuente);
		$linea->setData('alta_fe', $alta_fecha);
		$linea->setData('material', $material);
		$linea->setData('etapa', $etapa);
		$linea->setData('estado', $estado);
		$linea->setData('accion', $accion);
		if ($comentarios == ''){$comentarios = 'Sin comentarios';}
		$linea->setData('coment', $comentarios);
	$Shapefile->writeRecord($linea);
}}}



$tmp_file = '';
    $Shapefile = null;
	$files = glob($nombre_archivo . "*");
	if (count($files) > 0)
	{
	   $zip = new ZipArchive();
	   $ruta_completa = $_SERVER['DOCUMENT_ROOT'] . '/COLECTORES/php/referencias/Shapefile';
	   $tmp_file = $ruta_completa . '/conex_capta' . $fecha_nombre_archivo . '.zip';
	   $zip->open($tmp_file, ZipArchive::CREATE);
	   foreach($files as $file){
		   $file2 = $_SERVER['DOCUMENT_ROOT'] . '/COLECTORES/php/' . $file;
		   $ruta_archivo = pathinfo($file); 
		   $nombre_archivo2 = $ruta_archivo["basename"]; 
		   $zip->addFile($file2,$nombre_archivo2);
	   }
	   $zip->close();

	   unlink($nombre_archivo . ".dbf");
	   unlink($nombre_archivo . ".shp");
	   unlink($nombre_archivo . ".shx");
	   unlink($nombre_archivo . ".prj");
	}

	$nombre_archivo = "referencias/Shapefile/conex_capta*.zip";
	$files = glob($nombre_archivo);
	foreach($files as $file){
		$ruta_archivo = pathinfo($file); 
		$nombre_archivo2 = $ruta_archivo["dirname"] . "/". $ruta_archivo["basename"];
		$fecha_fichero= dl_fecha::dl_fecha_texto_a_date(date('Y-m-d H:i:s',filemtime($nombre_archivo2)));
		$fecha_ahora = dl_fecha::dl_ahora_date();
		$interval = $fecha_ahora->diff($fecha_fichero);
		$horas =  ($interval->format('%y') * 635) + ($interval->format('%m') * 30) + ($interval->format('%d') * 24) + $interval->format('%h');
		if ($horas > 4){
			unlink($nombre_archivo2);
		}
	}


$url_completo = $_SERVER['SERVER_NAME'] . '/COLECTORES/php/referencias/Shapefile/conex_capta' . $fecha_nombre_archivo . '.zip';;	
echo $url_completo;

    ?>

