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 425 var js = i3GEO.configura.locaplic+"/ferramentas/download/index.js.php";
426 426 i3GEO.mapa.ativaTema(idtema);
427 427 i3GEO.util.scriptTag(js,"i3GEOF.download.criaJanelaFlutuante('"+idtema+"')","i3GEOF.download_script");
428   - }
  428 + }
429 429 },
430 430 /*
431 431 Function: sld
... ...
classesjs/datadownload.js
... ... @@ -293,7 +293,7 @@ function datadownload_download(tema)
293 293 {
294 294 if(!$i("panellistaarquivos")){
295 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 297 YAHOO.datadownloadLista.panel.setHeader("Arquivos");
298 298 YAHOO.datadownloadLista.panel.setBody("");
299 299 YAHOO.datadownloadLista.panel.setFooter("");
... ... @@ -303,11 +303,11 @@ function datadownload_download(tema)
303 303 YAHOO.datadownloadLista.panel.setBody($trad("d28"));
304 304 YAHOO.datadownloadLista.panel.show();
305 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 307 var cp = new cpaint();
308 308 //cp.set_debug(2)
309 309 cp.set_response_type("JSON");
310   - cp.call(p,"downloadTema",mostraDownload);
  310 + cp.call(p,"downloadTema2",mostraDownload);
311 311 }
312 312 /*
313 313 Function: mostraDownload
... ... @@ -319,7 +319,7 @@ function mostraDownload(retorno)
319 319 if (retorno.data != undefined)
320 320 {
321 321 var retorno = retorno.data
322   - var arqs = retorno.split(",")
  322 + var arqs = retorno.arquivos.split(",")
323 323 var n = arqs.length;
324 324 if(retorno == "erro")
325 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 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 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 337 else
... ...
classesphp/funcoes_gerais.php
... ... @@ -1729,6 +1729,7 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1729 1729 $novonomelayer = nomeRandomico(20);
1730 1730 else
1731 1731 $novonomelayer = $tema;
  1732 +
1732 1733 $nomeshp = $dir_tmp."/".$novonomelayer;
1733 1734 if(file_exists($nomeshp.".shp"))
1734 1735 {return $nomeshp;}
... ... @@ -1786,13 +1787,16 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1786 1787 $existesel = "nao";
1787 1788 if (file_exists($map_file."qy"))
1788 1789 {$map->loadquery($map_file."qy");}
1789   - if ($layer->getNumresults() > 0){$existesel = "sim";}
  1790 + if ($layer->getNumresults() > 0)
  1791 + {$existesel = "sim";}
  1792 +
1790 1793 if ($existesel == "nao")
1791 1794 {
1792 1795 @$layer->queryByrect($map->extent);
1793 1796 }
1794 1797 //pega cada registro
1795 1798 $res_count = $layer->getNumresults();
  1799 +
1796 1800 if ($res_count > 0)
1797 1801 {
1798 1802 $sopen = $layer->open();
... ... @@ -1825,7 +1829,17 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1825 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 1844 Faz o download dos dados de um tema.
1831 1845  
... ... @@ -1839,6 +1853,8 @@ $locaplic {string} - Diretório da aplicação.
1839 1853  
1840 1854 $dir_tmp {string} - Diretório temporário
1841 1855  
  1856 +$postgismapa - variavel definida em ms_configura.php
  1857 +
1842 1858 Retorno:
1843 1859  
1844 1860 {array} com o nome do diretório e nome do arquivo
... ... @@ -1846,7 +1862,7 @@ Retorno:
1846 1862 Include:
1847 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 1867 ini_set("max_execution_time","1800");
1852 1868 if(file_exists($locaplic."/ms_configura.php"))
... ... @@ -1897,8 +1913,9 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1897 1913 //
1898 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 1917 $map->save($map_file);
  1918 + substituiCon($map_file,$postgis_mapa);
1902 1919 $map = ms_newMapObj($map_file);
1903 1920 //
1904 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 1945 foreach ($temas as $tema)
1929 1946 {
1930 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 1958 $meta = $l->getmetadata("arquivodownload");
1932 1959 if($meta != "")
1933 1960 {
... ... @@ -1965,7 +1992,7 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1965 1992 else
1966 1993 {
1967 1994 $sp = $map->shapepath;
1968   - $arq = "";
  1995 + $arq = "";
1969 1996 if (file_exists($dados))
1970 1997 {$arq = $dados;}
1971 1998 if (file_exists($dados.".shp"))
... ... @@ -1976,8 +2003,6 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1976 2003 {$arq = $sp.$dados;}
1977 2004 if ($arq != "")
1978 2005 {
1979   - $novonomelayer = $tema; //nomeRandomico(20);
1980   - $nomeshp = $dir_tmp."/".$novonomelayer;
1981 2006 $arq = explode(".shp",$arq);
1982 2007 if(!file_exists($nomeshp.".shp"))
1983 2008 {
... ... @@ -1991,6 +2016,7 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1991 2016 }
1992 2017 else
1993 2018 {
  2019 +
1994 2020 $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,FALSE);
1995 2021 $resultado[] = str_replace($radtmp."/","",$nomeshp).".shp";
1996 2022 $resultado[] = str_replace($radtmp."/","",$nomeshp).".shx";
... ... @@ -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 2061 Section: Outros
... ...
classesphp/mapa_controle.php
... ... @@ -1011,13 +1011,20 @@ Gera uma imagem que será utilizada para destacar um determinado tema.
1011 1011 $retorno = $m->geraDestaque();
1012 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 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 1026 break;
  1027 +
1021 1028 /*
1022 1029 function: INSEREFEATURE
1023 1030  
... ...
ferramentas/download/index.js.php
... ... @@ -51,15 +51,17 @@ i3GEOF.download = {
51 51 retorno,arqs,n,arq;
52 52 if (retorno.data != undefined){
53 53 retorno = retorno.data;
54   - arqs = retorno.split(",");
  54 + arqs = retorno.arquivos.split(",");
55 55 n = arqs.length;
56 56 if(retorno == "erro")
57 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 58 else{
59 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 66 else
65 67 {ins = "<p style=color:red >Ocorreu um erro<br>";}
... ... @@ -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 74 cp = new cpaint();
73 75 cp.set_response_type("JSON");
74 76 cp.call(p,"downloadTema",mostraDownload);
... ...
menutemas/admin.db
No preview for this file type
temas/testeutf8postgis.map
1   -MAP
  1 +MAP
2 2 LAYER
3 3 CONNECTION "teste"
4 4 CONNECTIONTYPE POSTGIS
... ...