From 59565c1a1f3bf5b59bcb7a21f1ff8bf7452aee46 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 5 Mar 2010 21:42:39 +0000 Subject: [PATCH] Correção na ferramenta de download para permitir a substituição de string de conexão. Depreciada a função downloadtema em prol da downloadtema2 --- classesjs/classe_tema.js | 2 +- classesjs/datadownload.js | 12 +++++++----- classesphp/funcoes_gerais.php | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- classesphp/mapa_controle.php | 13 ++++++++++--- ferramentas/download/index.js.php | 8 +++++--- menutemas/admin.db | Bin 66560 -> 0 bytes temas/testeutf8postgis.map | 2 +- 7 files changed, 88 insertions(+), 21 deletions(-) diff --git a/classesjs/classe_tema.js b/classesjs/classe_tema.js index 746247d..236f848 100644 --- a/classesjs/classe_tema.js +++ b/classesjs/classe_tema.js @@ -425,7 +425,7 @@ i3GEO.tema = { var js = i3GEO.configura.locaplic+"/ferramentas/download/index.js.php"; i3GEO.mapa.ativaTema(idtema); i3GEO.util.scriptTag(js,"i3GEOF.download.criaJanelaFlutuante('"+idtema+"')","i3GEOF.download_script"); - } + } }, /* Function: sld diff --git a/classesjs/datadownload.js b/classesjs/datadownload.js index ae5f9f1..973f7ab 100644 --- a/classesjs/datadownload.js +++ b/classesjs/datadownload.js @@ -293,7 +293,7 @@ function datadownload_download(tema) { if(!$i("panellistaarquivos")){ YAHOO.namespace("datadownloadLista"); - YAHOO.datadownloadLista.panel = new YAHOO.widget.Panel("panellistaarquivos", {zIndex:2000, iframe:false, width:"450px", visible:false, draggable:true, close:true, modal:true } ); + YAHOO.datadownloadLista.panel = new YAHOO.widget.Panel("panellistaarquivos", {zIndex:2000, iframe:false, width:"450px",align:"left", visible:false, draggable:true, close:true, modal:true } ); YAHOO.datadownloadLista.panel.setHeader("Arquivos"); YAHOO.datadownloadLista.panel.setBody(""); YAHOO.datadownloadLista.panel.setFooter(""); @@ -303,11 +303,11 @@ function datadownload_download(tema) YAHOO.datadownloadLista.panel.setBody($trad("d28")); YAHOO.datadownloadLista.panel.show(); //document.getElementById("corpo").innerHTML = "Aguarde. Gerando arquivos..." - var p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download&tema="+tema; + var p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download2&tema="+tema; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); - cp.call(p,"downloadTema",mostraDownload); + cp.call(p,"downloadTema2",mostraDownload); } /* Function: mostraDownload @@ -319,7 +319,7 @@ function mostraDownload(retorno) if (retorno.data != undefined) { var retorno = retorno.data - var arqs = retorno.split(",") + var arqs = retorno.arquivos.split(",") var n = arqs.length; if(retorno == "erro") {var ins = "

Ocorreu um erro. O tema não foi encontrado. Pode ser que o código do tema não existe na definição do mapfile. Informe o administrador do sistema.
";} @@ -328,8 +328,10 @@ function mostraDownload(retorno) var ins = "Clique nos links para pegar os arquivos. Para obter os metadados, veja o link na árvore ao lado (o link é mostrado ao expandir o nó correspondente ao tema).

" for (var arq=0;arq"+arqs[arq]+"
" + ins += ""+arqs[arq]+"
" } + if(retorno.nreg) + {ins += "

Número de registros ="+retorno.nreg;} } } else diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 7c93a92..692cb70 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -1729,6 +1729,7 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) $novonomelayer = nomeRandomico(20); else $novonomelayer = $tema; + $nomeshp = $dir_tmp."/".$novonomelayer; if(file_exists($nomeshp.".shp")) {return $nomeshp;} @@ -1786,13 +1787,16 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) $existesel = "nao"; if (file_exists($map_file."qy")) {$map->loadquery($map_file."qy");} - if ($layer->getNumresults() > 0){$existesel = "sim";} + if ($layer->getNumresults() > 0) + {$existesel = "sim";} + if ($existesel == "nao") { @$layer->queryByrect($map->extent); } //pega cada registro $res_count = $layer->getNumresults(); + if ($res_count > 0) { $sopen = $layer->open(); @@ -1825,7 +1829,17 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) return $nomeshp; } /* -Function: downloadTema +Function: downloadTema (depreciado) + +Utilize downloadTema2 +*/ +function downloadTema($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) +{ + $resultado = downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa); + return $resultado["arquivos"]; +} +/* +Function: downloadTema2 Faz o download dos dados de um tema. @@ -1839,6 +1853,8 @@ $locaplic {string} - Diretório da aplicação. $dir_tmp {string} - Diretório temporário +$postgismapa - variavel definida em ms_configura.php + Retorno: {array} com o nome do diretório e nome do arquivo @@ -1846,7 +1862,7 @@ Retorno: Include: */ -function downloadTema($map_file,$tema,$locaplic,$dir_tmp) +function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) { ini_set("max_execution_time","1800"); if(file_exists($locaplic."/ms_configura.php")) @@ -1897,8 +1913,9 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) // //salva o mapfile com um outro nome para evitar que o mapa atual, se estiver aberto, seja modificado // - $ma_file = str_replace(".map","tmp.map",$map_file); + $map_file = str_replace(".map","tmp.map",$map_file); $map->save($map_file); + substituiCon($map_file,$postgis_mapa); $map = ms_newMapObj($map_file); // //verifica se existe mais de um tema (grupo) montando o array com os temas @@ -1928,6 +1945,16 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) foreach ($temas as $tema) { $l = $map->getlayerbyname($tema); + $novonomelayer = $tema; + $nomeshp = $dir_tmp."/".$novonomelayer; + if(file_exists($nomeshp.".dbf")){ + $verificaDBF = verificaDBF($nomeshp.".dbf"); + if($verificaDBF == false){ + unlink($nomeshp.".dbf"); + unlink($nomeshp.".shp"); + unlink($nomeshp.".shx"); + } + } $meta = $l->getmetadata("arquivodownload"); if($meta != "") { @@ -1965,7 +1992,7 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) else { $sp = $map->shapepath; - $arq = ""; + $arq = ""; if (file_exists($dados)) {$arq = $dados;} if (file_exists($dados.".shp")) @@ -1976,8 +2003,6 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) {$arq = $sp.$dados;} if ($arq != "") { - $novonomelayer = $tema; //nomeRandomico(20); - $nomeshp = $dir_tmp."/".$novonomelayer; $arq = explode(".shp",$arq); if(!file_exists($nomeshp.".shp")) { @@ -1991,6 +2016,7 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) } else { + $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,FALSE); $resultado[] = str_replace($radtmp."/","",$nomeshp).".shp"; $resultado[] = str_replace($radtmp."/","",$nomeshp).".shx"; @@ -1999,7 +2025,37 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) } } } - return(implode(",",$resultado)); + $nreg = ""; + if(count($resultado) == 3){ + $arq = $radtmp."/".$resultado[2]; + $db = dbase_open($arq, 0); + if ($db) {$nreg = dbase_numrecords($db);} + } + return array("arquivos"=>implode(",",$resultado),"nreg"=>$nreg); +} +/* +Function: verificaDBF + +Verifica se um arquivo dbf está ou não vazio + +Parametros: + +$arq {string} - nome do arquivo dbf + +Return: + +{boolean} - true indica que não está vazio +*/ +function verificaDBF($arq){ + $db = dbase_open($arq, 0); + if ($db) { + $record_numbers = dbase_numrecords($db); + if ($record_numbers > 0) + {return true;} + else + {return false;} + } + else {return false;} } /* Section: Outros diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index 8039f18..8ba5155 100644 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -1011,13 +1011,20 @@ Gera uma imagem que será utilizada para destacar um determinado tema. $retorno = $m->geraDestaque(); break; /* -Valor: DOWNLOAD +Valor: DOWNLOAD (depreciado, utilize DOWNLOAD2 +*/ + case "DOWNLOAD": + $retorno = downloadTema($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa); + break; +/* +Valor: DOWNLOAD2 Gera os arquivos para download de um tema. */ - case "DOWNLOAD": - $retorno = downloadTema($map_file,$tema,$locaplic,$dir_tmp); + case "DOWNLOAD2": + $retorno = downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa); break; + /* function: INSEREFEATURE diff --git a/ferramentas/download/index.js.php b/ferramentas/download/index.js.php index 0b9dab7..659b100 100644 --- a/ferramentas/download/index.js.php +++ b/ferramentas/download/index.js.php @@ -51,15 +51,17 @@ i3GEOF.download = { retorno,arqs,n,arq; if (retorno.data != undefined){ retorno = retorno.data; - arqs = retorno.split(","); + arqs = retorno.arquivos.split(","); n = arqs.length; if(retorno == "erro") {ins = "

Ocorreu um erro. O tema não foi encontrado. Pode ser que o código do tema não existe na definição do mapfile. Informe o administrador do sistema.
";} else{ for (arq=0;arq"+arqs[arq]+"
"; + ins += ""+arqs[arq]+"
"; } } + if(retorno.nreg) + {ins += "

Número de registros ="+retorno.nreg;} } else {ins = "

Ocorreu um erro
";} @@ -68,7 +70,7 @@ i3GEOF.download = { } - p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=download&tema="+tema; + p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=download2&tema="+tema; cp = new cpaint(); cp.set_response_type("JSON"); cp.call(p,"downloadTema",mostraDownload); diff --git a/menutemas/admin.db b/menutemas/admin.db index 9717626..dc72567 100644 Binary files a/menutemas/admin.db and b/menutemas/admin.db differ diff --git a/temas/testeutf8postgis.map b/temas/testeutf8postgis.map index 727df08..23a5566 100644 --- a/temas/testeutf8postgis.map +++ b/temas/testeutf8postgis.map @@ -1,4 +1,4 @@ -MAP +MAP LAYER CONNECTION "teste" CONNECTIONTYPE POSTGIS -- libgit2 0.21.2