<?php
session_start();

include('../config.php');
include($rutaPhp.$rutaHtml.'/librerias/funciones-cachews-customNusoap.php');

//Destruimos la cookie con el nombre del archivo
setcookie('downloading',0,time()+3600,'/');

$traza=($_GET['traza']=='si');

if($_GET['UUID']) $UUID=$_GET['UUID']; else $UUID=$_POST['UUID'];
if($_GET['archivo']) $archivo=$_GET['archivo']; else $archivo=$_POST['archivo'];
if($_GET['nombre']) $nombre=$_GET['nombre']; else $nombre=$_POST['nombre'];

if($_GET['borrar'] || $_POST['borrar']) $borrar=true;else $borrar=false;

//////////////
//$borrar=false;
//////////////

if($traza) {
	echo '<p>parametro UUID: '.$UUID.'</p>';
	echo '<p>parametro archivo: '.$archivo.'</p>';
	echo '<p>parametro nombre: '.$nombre.'</p>';
	echo '<p>parametro borrar: '.$borrar.'</p>';
}

if($rest_ws_url) {

	
	
	$parametros=array(
		'UUID'=>$UUID,
		'nombreArchivo'=>$archivo,
		'id'=>$archivo //Se aņade tambien id, porque unos endpoints usan "nombreArchivo" y otros usan "id"
	);
	
	$curl = curl_init();
	
	if($traza) {
		echo '<p>Solicitud por REST proxy...</p>';
		print_r($parametros);
	}
	
	curl_setopt($curl, CURLOPT_URL, $rest_ws_url.'/uploadDocSimple/descarga');
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $parametros);

	$respuesta_curl = curl_exec($curl);
	
	curl_close($curl);
	
	if($traza) echo '<p>Traza 1</p>';


	if(isJson($respuesta_curl)) {
	
		if($traza) {
			echo '<p>Traza 2</p>';
			echo $respuesta_curl;
		}
	
		$resultado=json_decode($respuesta_curl);
		
		if($resultado->valor==1) {
		
			if($traza) echo '<p>Traza 3</p>';
			
			$data=$resultado->data;
			
			$tamanyo=strlen(base64_decode($data));
			
			$tipoArchivo="application/force-download";
        
			if($traza) {
				echo '<p>tipoArchivo: '.$tipoArchivo.'</p>';
				echo '<p>$nombre: '.$nombre.'</p>';
				echo '<p>$nombre urlencode: '.urlencode($nombre).'</p>'; //ERROR con nombres que contienen caracteres como ,
				echo '<p>$tamanyo: '.$tamanyo.'</p>';
			}
			
			header("Content-Type: ".$tipoArchivo);
			//header("Content-Disposition: attachment; filename=".$nombre);
			header("Content-Disposition: attachment; filename=".urlencode($nombre));
			header("Content-Transfer-Encoding: binary");
			header("Content-Length: ".$tamanyo);
			
			echo base64_decode($data);
			
			if($borrar) {
			
				$curl = curl_init();
				
				curl_setopt($curl, CURLOPT_URL, $rest_ws_url.'/uploadDocSimple/borrado');
				curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
				curl_setopt($curl, CURLOPT_POST, true);
				curl_setopt($curl, CURLOPT_POSTFIELDS, $parametros);
			
				$respuesta_curl = curl_exec($curl);
				
				//echo $respuesta_curl;
				
				curl_close($curl);
				
			}
			
		}
		
	}
	else echo 0;


}
else {

	$ruta=$rutaPhp.$rutaHtml.$directorioDocs;
	$archivoLocal=$ruta.'/'.$archivo;
		
	if (is_file($archivoLocal)) {
	
		$tamanyo=filesize($archivoLocal);
				 
		if (function_exists('mime_content_type')) $tipoArchivo=mime_content_type($archivoLocal);
		else if (function_exists('finfo_file')) {
			$info=finfo_open(FILEINFO_MIME);
			$tipoArchivo=finfo_file($info,$archivoLocal);
			finfo_close($info);
		}
				 
		if ($tipoArchivo=='') $tipoArchivo="application/force-download";
				 
		header("Content-Type: ".$tipoArchivo);
		header("Content-Disposition: attachment; filename=".$nombre);
		header("Content-Transfer-Encoding: binary");
		header("Content-Length: ".$tamanyo);
				 
		readfile($archivoLocal);
				 
		if($borrar) unlink($archivoLocal); //Esto no lo hacemos en visualizaciones directas (fotos) borra el archivo antes
	
	
	}
	else echo "<p>ERROR: Archivo no encontrado.</p>";
	
}

?>