upload.php 5.54 KB
<?php
require_once("../../classesphp/pega_variaveis.php");
require_once("../../classesphp/funcoes_gerais.php");
include_once ("../../classesphp/carrega_ext.php");
error_reporting(E_ALL);
session_name("i3GeoPHP");
if (isset($g_sid))
{session_id($g_sid);}
session_start();
foreach(array_keys($_SESSION) as $k)
{eval("\$".$k."='".$_SESSION[$k]."';");}
$postgis_mapa = $_SESSION["postgis_mapa"];
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../../css/geral.css" />
<title></title>
</head>
<body name="ancora" bgcolor="white" style="background-color:white;text-align:left;">
<p>
<?php
//var_dump($_FILES);exit;
if (isset($_FILES['i3GEOuploaddbffile']['name']))
{
	//$ndir = dirname($filen);
	require_once ("../../ms_configura.php");
	$mapa = ms_newMapObj($map_file);
	echo "<p>Carregando o arquivo...</p>";
	$dirmap = dirname($map_file);
	//verifica nomes
	$statusNome = 1;
	if( (ereg('[^a-zA-Z0-9áéíóúâôêãõ_\.\ \-]',$_FILES['filedbf']['name'])) || (!ereg('\.dbf$',$_FILES['filedbf']['name']))  || (!ereg('\.csv$',$_FILES['filedbf']['name'])))
	{$statusNome = 0;}
	if($statusNome != 1)
	{echo "Nome de arquivo inválido";exit;}
	//sobe arquivo
	$Arquivo = $_FILES['i3GEOuploaddbffile']['tmp_name'];
	$status =  move_uploaded_file($Arquivo,$dirmap."/".$_FILES['i3GEOuploaddbffile']['name']);
	if($status != 1)
	{echo "Ocorreu um erro no envio do arquivo";exit;}
	$nome = explode(".",$_FILES['i3GEOuploaddbffile']['name']);
	$nome = $nome[0];
	$nomeshp = $dirmap."/".$nome.".shp";
	if($status == 1)
	{
		if(!isset($tema)) //o arquivo deverá ser transformado em uma camada no mapa
		{
			$nomex = strtoupper($i3GEOuploaddbfnomex);
			$nomey = strtoupper($i3GEOuploaddbfnomey);
			//converte de csv para dbf
			if($i3GEOuploaddbftipoarquivo != "dbf"){
				if($i3GEOuploaddbftipoarquivo == "csvpv"){$separador = ";";}
				if($i3GEOuploaddbftipoarquivo == "csvv"){$separador = ",";}
				include_once("../../pacotes/classesphp/class.CSVHandler.php");
				include_once "../../pacotes/phpxbase/api_conversion.php";
				$csv = new CSVHandler($dirmap."/".$_FILES['i3GEOuploaddbffile']['name'],$separador,"record");
				$dados = $csv->ReadCSV();
				$conta = 0;
				foreach($csv->HeaderData as $i)
				{	
					$i = strtoupper($i);
					$i = trim($i);
					if(($i != $nomex) && ($i != $nomey))
					{
						$i = str_replace("_","",$i);
						$i = str_replace("-","",$i);
						$i= substr($i, 0, 7);
						$def[] = array($i.$conta,"C","255");
					}
					else
					$def[] = array($i,"C","255");
					$conta++;
				}
				if(!function_exists("dbase_create"))
				{xbase_create($dirmap."/".$nome.".dbf", $def);}
				else
				{dbase_create($dirmap."/".$nome.".dbf", $def);}				
				$db=xbase_open($dirmap."/".$nome.".dbf",2);		
				foreach($dados as $d){
					$reg = array();
					foreach($d as $i)
					{$reg[] = $i;}
					xbase_add_record($db,$reg);	
				}
				xbase_close($db);
				$_FILES['i3GEOuploaddbffile']['name'] = $nome.".dbf";
			}
			echo "<p>Arquivo enviado. Criando shape file...</p>";
			require_once("../../pacotes/phpxbase/api_conversion.php");
			$dbf = xbase_open($dirmap."/".$_FILES['i3GEOuploaddbffile']['name']);
			$records = xbase_numrecords($dbf);
			$record = array();
			$novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POINT);
			$novoshpf->free();
			$shapefileObj = ms_newShapefileObj($nomeshp,-2);
			for($x = 1; $x <= $records; $x++)
			{
    			$record = xbase_get_record_with_names($dbf, $x);
     			$poPoint = ms_newpointobj();
    			$poPoint->setXY($record[$nomex],$record[$nomey]);
    			$shapefileObj->addpoint($poPoint);
			}
			$shapefileObj->free();	
			$mapt = ms_newMapObj($temasaplic."/novotema.map");
			$novolayer = $mapt->getLayerByName("novotema");
			$novolayer->set("data",$nomeshp);
			$novolayer->set("name",basename($nomeshp));
			$novolayer->setmetadata("TEMA",basename($nomeshp));
			$novolayer->setmetadata("DOWNLOAD","SIM");
			$novolayer->setmetadata("TEMALOCAL","SIM");
			$novolayer->set("type",MS_LAYER_POINT);
			$novolayer->setfilter("");
			$classe = $novolayer->getclass(0);
			$estilo = $classe->getstyle(0);
			$estilo->set("symbolname","ponto");
			$estilo->set("size",6);
			// le os itens
			$novolayer->set("status",MS_DEFAULT);
			$abriu = $novolayer->open();
			$items = $novolayer->getItems();
			$fechou = $novolayer->close();
			if ($items != "")
			{
				$its = implode(",",$items);
				$novolayer->setmetadata("ITENS",$its);
				$novolayer->setmetadata("ITENSDESC",$its);
				$novolayer->set("template","none.htm");
			}
			if($uploaddbfEPSG != "")
			{$novolayer->setProjection("init=epsg:".$uploaddbfEPSG);}
			$adiciona = ms_newLayerObj($mapa, $novolayer);
			$salvo = $mapa->save($map_file);
			echo "Tema criado!!!";
			echo "<script>window.parent.i3GEO.atualiza()</script>";
		}
		else //join com um tema
		{
			//$layer = $mapa->getlayerbyname($tema);
			//essa funcao ainda não está implementada
			//
			$dbf = $dirmap."/".$_FILES['filedbf']['name'];
			$string = 'JOIN '."\n".' NAME "'.$_FILES['i3GEOuploaddbffile']['name'].'"'."\n";
			$string .= 'TABLE "'.$dbf.'"'."\n";
			$string .= 'FROM "'.$item.'"'."\n";
			$string .= 'TO "'.$colunadbf.'"'."\n";
			$string .= 'TYPE ONE-TO-ONE'."\n"." END"."\n";
			$string .= 'TEMPLATE "none.htm"'."\n";

			//$layer->updatefromstring($string);
			//$salvo = $mapa->save($map_file);
			include_once("../../classesphp/classe_mapa.php");
			$m = new Mapa($map_file,$locaplic);
			$m->insereJOIN($string,$tema);
			echo "Junção concluida!!!";			
		}
	}
	else
	{
		echo "<p>Erro ao enviar o arquivo.</p>";
	}
}
paraAguarde();
function paraAguarde(){
	echo "<script>window.parent.i3GEOF.uploaddbf.aguarde.visibility='hidden';</script>";
}
?>
</body>
</html>