<?
$queryDoc="";
if($_REQUEST['tabla'] == "doce"){
$queryDoc="select rutaPDF,rutaXML,archxml as xml,archpdf as pdf,fecha from doce d inner join emisor e ON d.rfcemisor = e.rfc inner join tdoctos t on t.idemisor=e.idemisor where t.tipodocto='NOTIFICACION DE PAGO' and adicionalA='".$_REQUEST['uuid']."'";
}elseif($_REQUEST['tabla'] == "recibedoce"){
$queryDoc="select rutaPDF,rutaXML,archivoxml as xml,archivopdf as pdf,fecharecibido as fecha from recibedoce rd inner join receptor r on rd.rfc_receptor=r.rfc inner join tdoctos_r t on t.idreceptor=r.idreceptor where rd.tipodocto=t.tipodocto and rd.uuid='".$_REQUEST['uuid']."'";
}elseif($_REQUEST['tabla'] == "adjuntos_exp_pago"){
	$queryDoc="select a.nodo_id,a.uuid_padre,a.nombre_archivo,d.archivo from adjuntos_exp_pago a,adjuntos_exp_pago_detalle d where a.id=d.id and a.id=".$_REQUEST['uuid'];
}

$resArchivo = mysqli_query($conexion->CONEXION,$queryDoc);
if(mysqli_num_rows($resArchivo) <= 0){"No se encontro el archivo en la base de datos.";exit;}
$url="";
$tmpArchivo = mysqli_fetch_assoc($resArchivo);
$year = substr($tmpArchivo['fecha'],0,4);
$mes = substr($tmpArchivo['fecha'],5,2);
switch($_REQUEST['tipo']){
	case 'XML': $url=$tmpArchivo['rutaXML'].$year."/".$mes."/".$tmpArchivo['xml'];
				break;
	case 'PDF':	$url=$tmpArchivo['rutaPDF'].$year."/".$mes."/".$tmpArchivo['pdf'];
				break;
	case 'PDFSTD':	$url=$tmpArchivo['rutaPDF'].$year."/".$mes."/".basename($tmpArchivo['xml'], ".xml")."_STD.pdf";
				break;
	case 'ADJ':	
				$nombre_archivo = pathinfo($tmpArchivo['nombre_archivo']);
				$nombre_archivo["extension"];
				switch(trim(strtoupper($nombre_archivo["extension"]))){
					case "JPG": echo '<img src="data:image/jpeg;base64,'.$tmpArchivo["archivo"].' "/>'; exit;
					case "GIF": echo '<img src="data:image/jpeg;base64,'.$tmpArchivo["archivo"].' "/>'; exit;
					case "PNG": echo '<img src="data:image/jpeg;base64,'.$tmpArchivo["archivo"].' "/>'; exit;
					case "HTML": echo base64_decode($tmpArchivo["archivo"]); exit;
					case "TXT": echo base64_decode($tmpArchivo["archivo"]); exit;
					case "PDF": echo '<object data="data:application/pdf;base64, '.$tmpArchivo["archivo"].'" type="application/pdf" style="height:100%;width:100%"></object>'; exit;
					default: 
							header('Content-Type: application/octet-stream');
							header("Content-disposition: attachment; filename=".$tmpArchivo["nombre_archivo"]); 
							echo base64_decode($tmpArchivo["archivo"]); exit;
				}
				$archivo=$tmpArchivo['archivo'];
				$urlLocal=$tmpURL['url_local_adjunto'];
}

$previewXML="<span style='font-size: 20px'>";
if($_REQUEST['tipo']=="XML"){
	$archivo = @file_get_contents($url);
	if(strpos($archivo,"\n") === false){
		$archivo = str_replace(">",">\r\n",$archivo);
	}
	
	if(trim($archivo) != ""){
		require_once '../../libs/GeSHi-1.0.9.0/geshi/geshi.php';
		$language = 'xml';
		$geshi = new GeSHi($archivo, $language);
		echo $geshi->parse_code();
		/*$xmlLoad = new SimpleXMLElement($archivo);
		if($xmlLoad !== false)
		{
			$prefijo = $xmlLoad->getNamespaces(true);
			$xmlLoad->registerXPathNamespace("cfdi",$prefijo["cfdi"]);
			$xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			$xmlLoad->registerXPathNamespace("pago10",$prefijo["pago10"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			// $xmlLoad->registerXPathNamespace("tfd",$prefijo["tfd"]);
			nodos($xmlLoad,"cfdi","");
			$previewXML.="</span>";
			echo $previewXML;
		}*/
	}else{
		echo "<font style='color: red;font-size: 20px'>Archivo no encontrado.</font>";
		exit;
	}
}else{
	if(is_url_exist($url) == false){
		echo "<font style='color: red;font-size: 20px'>Archivo no encontrado.</font>";
		exit;
	}
	?>
	<iframe http-equiv="Content-Type" content="application/octet-stream" id="ifrm_cuerpo" src="<?=$url?>" width="100%" height="100%">
	El navegador no soporta iframes
	</iframe>
<?
}
//GoogleDocs: https://docs.google.com/viewer?url=str_replace(":","%3A",str_replace("/","%2F",$url))&embedded=true
function nodos($nodo,$pref,$identar){
	global $previewXML,$prefijo;
	$ban=true;
	$previewXML.="<br/>".$identar."<font style='color: blue'>&lt;".$pref.":".$nodo->getName()."</font>";
	foreach($nodo->attributes() as $attr => $val){
		$previewXML.=" <font style='color: red'>".$attr."</font>=<font style='color: purple'>\"".$val."\"</font>";
	}
	$previewXML.="<font style='color: blue'>&gt;</font>";
	$PasaIdentar=$identar;
	$PasaIdentar.="&nbsp;&nbsp;&nbsp;";
	if($nodo->getName() == "Complemento"){
		$p = "tfd";
	}else{
		$p = $pref;
	}
	foreach($nodo->children($prefijo[$p]) as $child) {
		$ban=false;
		nodos($child,$p,$PasaIdentar);
	}
	if($ban == true){
		$previewXML = substr($previewXML,0,strlen($previewXML)-11);
		$previewXML.="/&gt;</font>";	
	}else{
		$previewXML.="<br/>".$identar."<font style='color: blue'>&lt;/".$pref.":".$nodo->getName()."&gt;</font>";	
	}
}

function is_url_exist($url){
    $ch = curl_init($url);    
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if($code == 200){
       $status = true;
    }else{
      $status = false;
    }
    curl_close($ch);
   return $status;
}
?>