Commit 59565c1a1f3bf5b59bcb7a21f1ff8bf7452aee46

Authored by Edmar Moretti
1 parent 99da5de9

Correção na ferramenta de download para permitir a substituição de string de con…

…exão. Depreciada a função downloadtema em prol da downloadtema2
classesjs/classe_tema.js
@@ -425,7 +425,7 @@ i3GEO.tema = { @@ -425,7 +425,7 @@ i3GEO.tema = {
425 var js = i3GEO.configura.locaplic+"/ferramentas/download/index.js.php"; 425 var js = i3GEO.configura.locaplic+"/ferramentas/download/index.js.php";
426 i3GEO.mapa.ativaTema(idtema); 426 i3GEO.mapa.ativaTema(idtema);
427 i3GEO.util.scriptTag(js,"i3GEOF.download.criaJanelaFlutuante('"+idtema+"')","i3GEOF.download_script"); 427 i3GEO.util.scriptTag(js,"i3GEOF.download.criaJanelaFlutuante('"+idtema+"')","i3GEOF.download_script");
428 - } 428 + }
429 }, 429 },
430 /* 430 /*
431 Function: sld 431 Function: sld
classesjs/datadownload.js
@@ -293,7 +293,7 @@ function datadownload_download(tema) @@ -293,7 +293,7 @@ function datadownload_download(tema)
293 { 293 {
294 if(!$i("panellistaarquivos")){ 294 if(!$i("panellistaarquivos")){
295 YAHOO.namespace("datadownloadLista"); 295 YAHOO.namespace("datadownloadLista");
296 - YAHOO.datadownloadLista.panel = new YAHOO.widget.Panel("panellistaarquivos", {zIndex:2000, iframe:false, width:"450px", visible:false, draggable:true, close:true, modal:true } ); 296 + YAHOO.datadownloadLista.panel = new YAHOO.widget.Panel("panellistaarquivos", {zIndex:2000, iframe:false, width:"450px",align:"left", visible:false, draggable:true, close:true, modal:true } );
297 YAHOO.datadownloadLista.panel.setHeader("Arquivos"); 297 YAHOO.datadownloadLista.panel.setHeader("Arquivos");
298 YAHOO.datadownloadLista.panel.setBody(""); 298 YAHOO.datadownloadLista.panel.setBody("");
299 YAHOO.datadownloadLista.panel.setFooter(""); 299 YAHOO.datadownloadLista.panel.setFooter("");
@@ -303,11 +303,11 @@ function datadownload_download(tema) @@ -303,11 +303,11 @@ function datadownload_download(tema)
303 YAHOO.datadownloadLista.panel.setBody($trad("d28")); 303 YAHOO.datadownloadLista.panel.setBody($trad("d28"));
304 YAHOO.datadownloadLista.panel.show(); 304 YAHOO.datadownloadLista.panel.show();
305 //document.getElementById("corpo").innerHTML = "Aguarde. Gerando arquivos..." 305 //document.getElementById("corpo").innerHTML = "Aguarde. Gerando arquivos..."
306 - var p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download&tema="+tema; 306 + var p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download2&tema="+tema;
307 var cp = new cpaint(); 307 var cp = new cpaint();
308 //cp.set_debug(2) 308 //cp.set_debug(2)
309 cp.set_response_type("JSON"); 309 cp.set_response_type("JSON");
310 - cp.call(p,"downloadTema",mostraDownload); 310 + cp.call(p,"downloadTema2",mostraDownload);
311 } 311 }
312 /* 312 /*
313 Function: mostraDownload 313 Function: mostraDownload
@@ -319,7 +319,7 @@ function mostraDownload(retorno) @@ -319,7 +319,7 @@ function mostraDownload(retorno)
319 if (retorno.data != undefined) 319 if (retorno.data != undefined)
320 { 320 {
321 var retorno = retorno.data 321 var retorno = retorno.data
322 - var arqs = retorno.split(",") 322 + var arqs = retorno.arquivos.split(",")
323 var n = arqs.length; 323 var n = arqs.length;
324 if(retorno == "erro") 324 if(retorno == "erro")
325 {var ins = "<p style=color:red >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.<br>";} 325 {var ins = "<p style=color:red >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.<br>";}
@@ -328,8 +328,10 @@ function mostraDownload(retorno) @@ -328,8 +328,10 @@ function mostraDownload(retorno)
328 var ins = "<b>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).</b><br><br>" 328 var ins = "<b>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).</b><br><br>"
329 for (var arq=0;arq<n;arq++) 329 for (var arq=0;arq<n;arq++)
330 { 330 {
331 - ins += "<a href='"+window.location.protocol+"//"+window.location.host+"/"+arqs[arq]+"'>"+arqs[arq]+"<br>" 331 + ins += "<a href='"+window.location.protocol+"//"+window.location.host+"/"+arqs[arq]+"'>"+arqs[arq]+"</a><br>"
332 } 332 }
  333 + if(retorno.nreg)
  334 + {ins += "<br><br>N&uacute;mero de registros ="+retorno.nreg;}
333 } 335 }
334 } 336 }
335 else 337 else
classesphp/funcoes_gerais.php
@@ -1729,6 +1729,7 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) @@ -1729,6 +1729,7 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1729 $novonomelayer = nomeRandomico(20); 1729 $novonomelayer = nomeRandomico(20);
1730 else 1730 else
1731 $novonomelayer = $tema; 1731 $novonomelayer = $tema;
  1732 +
1732 $nomeshp = $dir_tmp."/".$novonomelayer; 1733 $nomeshp = $dir_tmp."/".$novonomelayer;
1733 if(file_exists($nomeshp.".shp")) 1734 if(file_exists($nomeshp.".shp"))
1734 {return $nomeshp;} 1735 {return $nomeshp;}
@@ -1786,13 +1787,16 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) @@ -1786,13 +1787,16 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1786 $existesel = "nao"; 1787 $existesel = "nao";
1787 if (file_exists($map_file."qy")) 1788 if (file_exists($map_file."qy"))
1788 {$map->loadquery($map_file."qy");} 1789 {$map->loadquery($map_file."qy");}
1789 - if ($layer->getNumresults() > 0){$existesel = "sim";} 1790 + if ($layer->getNumresults() > 0)
  1791 + {$existesel = "sim";}
  1792 +
1790 if ($existesel == "nao") 1793 if ($existesel == "nao")
1791 { 1794 {
1792 @$layer->queryByrect($map->extent); 1795 @$layer->queryByrect($map->extent);
1793 } 1796 }
1794 //pega cada registro 1797 //pega cada registro
1795 $res_count = $layer->getNumresults(); 1798 $res_count = $layer->getNumresults();
  1799 +
1796 if ($res_count > 0) 1800 if ($res_count > 0)
1797 { 1801 {
1798 $sopen = $layer->open(); 1802 $sopen = $layer->open();
@@ -1825,7 +1829,17 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE) @@ -1825,7 +1829,17 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1825 return $nomeshp; 1829 return $nomeshp;
1826 } 1830 }
1827 /* 1831 /*
1828 -Function: downloadTema 1832 +Function: downloadTema (depreciado)
  1833 +
  1834 +Utilize downloadTema2
  1835 +*/
  1836 +function downloadTema($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa)
  1837 +{
  1838 + $resultado = downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa);
  1839 + return $resultado["arquivos"];
  1840 +}
  1841 +/*
  1842 +Function: downloadTema2
1829 1843
1830 Faz o download dos dados de um tema. 1844 Faz o download dos dados de um tema.
1831 1845
@@ -1839,6 +1853,8 @@ $locaplic {string} - Diretório da aplicação. @@ -1839,6 +1853,8 @@ $locaplic {string} - Diretório da aplicação.
1839 1853
1840 $dir_tmp {string} - Diretório temporário 1854 $dir_tmp {string} - Diretório temporário
1841 1855
  1856 +$postgismapa - variavel definida em ms_configura.php
  1857 +
1842 Retorno: 1858 Retorno:
1843 1859
1844 {array} com o nome do diretório e nome do arquivo 1860 {array} com o nome do diretório e nome do arquivo
@@ -1846,7 +1862,7 @@ Retorno: @@ -1846,7 +1862,7 @@ Retorno:
1846 Include: 1862 Include:
1847 <ms_configura.php> 1863 <ms_configura.php>
1848 */ 1864 */
1849 -function downloadTema($map_file,$tema,$locaplic,$dir_tmp) 1865 +function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa)
1850 { 1866 {
1851 ini_set("max_execution_time","1800"); 1867 ini_set("max_execution_time","1800");
1852 if(file_exists($locaplic."/ms_configura.php")) 1868 if(file_exists($locaplic."/ms_configura.php"))
@@ -1897,8 +1913,9 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) @@ -1897,8 +1913,9 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1897 // 1913 //
1898 //salva o mapfile com um outro nome para evitar que o mapa atual, se estiver aberto, seja modificado 1914 //salva o mapfile com um outro nome para evitar que o mapa atual, se estiver aberto, seja modificado
1899 // 1915 //
1900 - $ma_file = str_replace(".map","tmp.map",$map_file); 1916 + $map_file = str_replace(".map","tmp.map",$map_file);
1901 $map->save($map_file); 1917 $map->save($map_file);
  1918 + substituiCon($map_file,$postgis_mapa);
1902 $map = ms_newMapObj($map_file); 1919 $map = ms_newMapObj($map_file);
1903 // 1920 //
1904 //verifica se existe mais de um tema (grupo) montando o array com os temas 1921 //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) @@ -1928,6 +1945,16 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1928 foreach ($temas as $tema) 1945 foreach ($temas as $tema)
1929 { 1946 {
1930 $l = $map->getlayerbyname($tema); 1947 $l = $map->getlayerbyname($tema);
  1948 + $novonomelayer = $tema;
  1949 + $nomeshp = $dir_tmp."/".$novonomelayer;
  1950 + if(file_exists($nomeshp.".dbf")){
  1951 + $verificaDBF = verificaDBF($nomeshp.".dbf");
  1952 + if($verificaDBF == false){
  1953 + unlink($nomeshp.".dbf");
  1954 + unlink($nomeshp.".shp");
  1955 + unlink($nomeshp.".shx");
  1956 + }
  1957 + }
1931 $meta = $l->getmetadata("arquivodownload"); 1958 $meta = $l->getmetadata("arquivodownload");
1932 if($meta != "") 1959 if($meta != "")
1933 { 1960 {
@@ -1965,7 +1992,7 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) @@ -1965,7 +1992,7 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1965 else 1992 else
1966 { 1993 {
1967 $sp = $map->shapepath; 1994 $sp = $map->shapepath;
1968 - $arq = ""; 1995 + $arq = "";
1969 if (file_exists($dados)) 1996 if (file_exists($dados))
1970 {$arq = $dados;} 1997 {$arq = $dados;}
1971 if (file_exists($dados.".shp")) 1998 if (file_exists($dados.".shp"))
@@ -1976,8 +2003,6 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) @@ -1976,8 +2003,6 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1976 {$arq = $sp.$dados;} 2003 {$arq = $sp.$dados;}
1977 if ($arq != "") 2004 if ($arq != "")
1978 { 2005 {
1979 - $novonomelayer = $tema; //nomeRandomico(20);  
1980 - $nomeshp = $dir_tmp."/".$novonomelayer;  
1981 $arq = explode(".shp",$arq); 2006 $arq = explode(".shp",$arq);
1982 if(!file_exists($nomeshp.".shp")) 2007 if(!file_exists($nomeshp.".shp"))
1983 { 2008 {
@@ -1991,6 +2016,7 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) @@ -1991,6 +2016,7 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1991 } 2016 }
1992 else 2017 else
1993 { 2018 {
  2019 +
1994 $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,FALSE); 2020 $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,FALSE);
1995 $resultado[] = str_replace($radtmp."/","",$nomeshp).".shp"; 2021 $resultado[] = str_replace($radtmp."/","",$nomeshp).".shp";
1996 $resultado[] = str_replace($radtmp."/","",$nomeshp).".shx"; 2022 $resultado[] = str_replace($radtmp."/","",$nomeshp).".shx";
@@ -1999,7 +2025,37 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) @@ -1999,7 +2025,37 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1999 } 2025 }
2000 } 2026 }
2001 } 2027 }
2002 - return(implode(",",$resultado)); 2028 + $nreg = "";
  2029 + if(count($resultado) == 3){
  2030 + $arq = $radtmp."/".$resultado[2];
  2031 + $db = dbase_open($arq, 0);
  2032 + if ($db) {$nreg = dbase_numrecords($db);}
  2033 + }
  2034 + return array("arquivos"=>implode(",",$resultado),"nreg"=>$nreg);
  2035 +}
  2036 +/*
  2037 +Function: verificaDBF
  2038 +
  2039 +Verifica se um arquivo dbf está ou não vazio
  2040 +
  2041 +Parametros:
  2042 +
  2043 +$arq {string} - nome do arquivo dbf
  2044 +
  2045 +Return:
  2046 +
  2047 +{boolean} - true indica que não está vazio
  2048 +*/
  2049 +function verificaDBF($arq){
  2050 + $db = dbase_open($arq, 0);
  2051 + if ($db) {
  2052 + $record_numbers = dbase_numrecords($db);
  2053 + if ($record_numbers > 0)
  2054 + {return true;}
  2055 + else
  2056 + {return false;}
  2057 + }
  2058 + else {return false;}
2003 } 2059 }
2004 /* 2060 /*
2005 Section: Outros 2061 Section: Outros
classesphp/mapa_controle.php
@@ -1011,13 +1011,20 @@ Gera uma imagem que será utilizada para destacar um determinado tema. @@ -1011,13 +1011,20 @@ Gera uma imagem que será utilizada para destacar um determinado tema.
1011 $retorno = $m->geraDestaque(); 1011 $retorno = $m->geraDestaque();
1012 break; 1012 break;
1013 /* 1013 /*
1014 -Valor: DOWNLOAD 1014 +Valor: DOWNLOAD (depreciado, utilize DOWNLOAD2
  1015 +*/
  1016 + case "DOWNLOAD":
  1017 + $retorno = downloadTema($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa);
  1018 + break;
  1019 +/*
  1020 +Valor: DOWNLOAD2
1015 1021
1016 Gera os arquivos para download de um tema. 1022 Gera os arquivos para download de um tema.
1017 */ 1023 */
1018 - case "DOWNLOAD":  
1019 - $retorno = downloadTema($map_file,$tema,$locaplic,$dir_tmp); 1024 + case "DOWNLOAD2":
  1025 + $retorno = downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa);
1020 break; 1026 break;
  1027 +
1021 /* 1028 /*
1022 function: INSEREFEATURE 1029 function: INSEREFEATURE
1023 1030
ferramentas/download/index.js.php
@@ -51,15 +51,17 @@ i3GEOF.download = { @@ -51,15 +51,17 @@ i3GEOF.download = {
51 retorno,arqs,n,arq; 51 retorno,arqs,n,arq;
52 if (retorno.data != undefined){ 52 if (retorno.data != undefined){
53 retorno = retorno.data; 53 retorno = retorno.data;
54 - arqs = retorno.split(","); 54 + arqs = retorno.arquivos.split(",");
55 n = arqs.length; 55 n = arqs.length;
56 if(retorno == "erro") 56 if(retorno == "erro")
57 {ins = "<p style=color:red >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.<br>";} 57 {ins = "<p style=color:red >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.<br>";}
58 else{ 58 else{
59 for (arq=0;arq<n;arq++){ 59 for (arq=0;arq<n;arq++){
60 - ins += "<a href='"+window.location.protocol+"//"+window.location.host+"/"+arqs[arq]+"'>"+arqs[arq]+"<br>"; 60 + ins += "<a href='"+window.location.protocol+"//"+window.location.host+"/"+arqs[arq]+"'>"+arqs[arq]+"</a><br>";
61 } 61 }
62 } 62 }
  63 + if(retorno.nreg)
  64 + {ins += "<br><br>N&uacute;mero de registros ="+retorno.nreg;}
63 } 65 }
64 else 66 else
65 {ins = "<p style=color:red >Ocorreu um erro<br>";} 67 {ins = "<p style=color:red >Ocorreu um erro<br>";}
@@ -68,7 +70,7 @@ i3GEOF.download = { @@ -68,7 +70,7 @@ i3GEOF.download = {
68 } 70 }
69 71
70 72
71 - p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=download&tema="+tema; 73 + p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=download2&tema="+tema;
72 cp = new cpaint(); 74 cp = new cpaint();
73 cp.set_response_type("JSON"); 75 cp.set_response_type("JSON");
74 cp.call(p,"downloadTema",mostraDownload); 76 cp.call(p,"downloadTema",mostraDownload);
menutemas/admin.db
No preview for this file type
temas/testeutf8postgis.map
1 -MAP 1 +MAP
2 LAYER 2 LAYER
3 CONNECTION "teste" 3 CONNECTION "teste"
4 CONNECTIONTYPE POSTGIS 4 CONNECTIONTYPE POSTGIS