Commit c9dfcd39c14bcb12cf86fa86c18e3fddfb4156a4

Authored by Edmar Moretti
1 parent 5bf6f9c1

Alteração na forma como o download de um tema é feito, para gerar um arquivo zip…

… apenas e fazer o download automaticamente
classesphp/funcoes_gerais.php
@@ -1807,60 +1807,47 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa) @@ -1807,60 +1807,47 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa)
1807 $map = ms_newMapObj($map_file); 1807 $map = ms_newMapObj($map_file);
1808 $rectextent = $map->extent; 1808 $rectextent = $map->extent;
1809 $extensao = ".map"; 1809 $extensao = ".map";
1810 - if (file_exists($locaplic . "/temas/" . $tema . ".gvp")) {  
1811 - $extensao = ".gvp";  
1812 - }  
1813 - if ($extensao == ".map") {  
1814 - //  
1815 - // problema aqui  
1816 - // $tema pode ser diferente do nome do mapfile  
1817 - //  
1818 - $teste = @$map->getlayerbyname($tema);  
1819 - // caso o usuario tenha usado caixa alta no nome do layer  
1820 - if ($teste == "") {  
1821 - $teste = @$map->getlayerbyname(strtoupper($tema)); 1810 + //
  1811 + // problema aqui
  1812 + // $tema pode ser diferente do nome do mapfile
  1813 + //
  1814 + $teste = @$map->getlayerbyname($tema);
  1815 + // caso o usuario tenha usado caixa alta no nome do layer
  1816 + if ($teste == "") {
  1817 + $teste = @$map->getlayerbyname(strtoupper($tema));
  1818 + }
  1819 + // se o layer não existir no mapfile, pega da pasta i3geo/temas e adiciona em $map
  1820 + if ($teste == "") {
  1821 + // tema pode ser o nome de um arquivo mapfile
  1822 + if (file_exists($tema . ".map")) {
  1823 + $maptemp = ms_newMapObj($tema . ".map");
  1824 + $tema = basename($tema);
  1825 + } else {
  1826 + $maptemp = ms_newMapObj($temasdir . "/" . $tema . ".map");
1822 } 1827 }
1823 - // se o layer não existir no mapfile, pega da pasta i3geo/temas e adiciona em $map  
1824 - if ($teste == "") {  
1825 - // tema pode ser o nome de um arquivo mapfile  
1826 - if (file_exists($tema . ".map")) {  
1827 - $maptemp = ms_newMapObj($tema . ".map");  
1828 - $tema = basename($tema);  
1829 - } else {  
1830 - $maptemp = ms_newMapObj($temasdir . "/" . $tema . ".map");  
1831 - }  
1832 - $numlayers = $maptemp->numlayers;  
1833 - for ($i = 0; $i < $numlayers; ++ $i) {  
1834 - $ll = $maptemp->getlayer($i);  
1835 - $permite = $ll->getmetadata("permitedownload");  
1836 - if ($permite != "nao") {  
1837 - ms_newLayerObj($map, $ll);  
1838 - } 1828 + $numlayers = $maptemp->numlayers;
  1829 + for ($i = 0; $i < $numlayers; ++ $i) {
  1830 + $ll = $maptemp->getlayer($i);
  1831 + $permite = $ll->getmetadata("permitedownload");
  1832 + if ($permite != "nao") {
  1833 + ms_newLayerObj($map, $ll);
1839 } 1834 }
1840 - $teste = @$map->getlayerbyname($tema);  
1841 - if ($teste == "") {  
1842 - $ll = $maptemp->getlayer(0);  
1843 - $permite = $ll->getmetadata("permitedownload");  
1844 - if ($permite != "nao") {  
1845 - ms_newLayerObj($map, $ll);  
1846 - $tema = $ll->name;  
1847 - } 1835 + }
  1836 + $teste = @$map->getlayerbyname($tema);
  1837 + if ($teste == "") {
  1838 + $ll = $maptemp->getlayer(0);
  1839 + $permite = $ll->getmetadata("permitedownload");
  1840 + if ($permite != "nao") {
  1841 + ms_newLayerObj($map, $ll);
  1842 + $tema = $ll->name;
1848 } 1843 }
1849 - } else {  
1850 - // remove o metadata com um nome de arquivo opcional, pois a fun&ccedil;&atilde;o de download pode estar sendo executada da &aacute;rvore de camadas  
1851 - $teste = $map->getlayerbyname($tema);  
1852 - $teste->setmetadata("arquivodownload", "");  
1853 } 1844 }
1854 } else { 1845 } else {
1855 - include_once ($locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php");  
1856 - $gm = new gvsig2mapfile($locaplic . "/temas/" . $tema . ".gvp");  
1857 - $gvsigview = $gm->getViewsNames();  
1858 - foreach ($gvsigview as $gv) {  
1859 - $dataView = $gm->getViewData($gvsigview);  
1860 - $map = $gm->addLayers($map, $gvsigview, $dataView["layerNames"]);  
1861 - $temas = array_merge($temas, $gm->nomesLayersAdicionados);  
1862 - } 1846 + // remove o metadata com um nome de arquivo opcional, pois a fun&ccedil;&atilde;o de download pode estar sendo executada da &aacute;rvore de camadas
  1847 + $teste = $map->getlayerbyname($tema);
  1848 + $teste->setmetadata("arquivodownload", "");
1863 } 1849 }
  1850 +
1864 // 1851 //
1865 // salva o mapfile com um outro nome para evitar que o mapa atual, se estiver aberto, seja modificado 1852 // salva o mapfile com um outro nome para evitar que o mapa atual, se estiver aberto, seja modificado
1866 // 1853 //
@@ -1883,7 +1870,6 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa) @@ -1883,7 +1870,6 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa)
1883 // verifica se existe mais de um tema (grupo) montando o array com os temas 1870 // verifica se existe mais de um tema (grupo) montando o array com os temas
1884 // os grupos podem ter o nome do layer em GROUP ao inv&eacute;s de NAME 1871 // os grupos podem ter o nome do layer em GROUP ao inv&eacute;s de NAME
1885 // 1872 //
1886 - if ($extensao == ".map") {  
1887 $multilayer = 0; 1873 $multilayer = 0;
1888 $grupos = $map->getAllGroupNames(); 1874 $grupos = $map->getAllGroupNames();
1889 foreach ($grupos as $grupo) { 1875 foreach ($grupos as $grupo) {
@@ -1904,7 +1890,6 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa) @@ -1904,7 +1890,6 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa)
1904 if ($multilayer == 0) { 1890 if ($multilayer == 0) {
1905 $temas[] = $tema; 1891 $temas[] = $tema;
1906 } 1892 }
1907 - }  
1908 // $temas agora &eacute; um array com os NAMEs dos LAYERS que ser&atilde;o baixados 1893 // $temas agora &eacute; um array com os NAMEs dos LAYERS que ser&atilde;o baixados
1909 $radtmp = dirname($dir_tmp); 1894 $radtmp = dirname($dir_tmp);
1910 $ziper = new zipfile(); 1895 $ziper = new zipfile();
@@ -2472,16 +2457,16 @@ function seems_utf8($Str) @@ -2472,16 +2457,16 @@ function seems_utf8($Str)
2472 */ 2457 */
2473 function removeAcentos($s) 2458 function removeAcentos($s)
2474 { 2459 {
2475 - $s = ereg_replace("[&aacute;à&acirc;&atilde;]", "a", $s);  
2476 - $s = ereg_replace("[&Aacute;À&Acirc;&Atilde;]", "A", $s);  
2477 - $s = ereg_replace("[&eacute;è&ecirc;]", "e", $s); 2460 + $s = ereg_replace("[&aacute;�&acirc;&atilde;]", "a", $s);
  2461 + $s = ereg_replace("[&Aacute;�&Acirc;&Atilde;]", "A", $s);
  2462 + $s = ereg_replace("[&eacute;�&ecirc;]", "e", $s);
2478 $s = ereg_replace("[&iacute;]", "i", $s); 2463 $s = ereg_replace("[&iacute;]", "i", $s);
2479 $s = ereg_replace("[&Iacute;]", "I", $s); 2464 $s = ereg_replace("[&Iacute;]", "I", $s);
2480 - $s = ereg_replace("[&Eacute;È&Ecirc;]", "E", $s);  
2481 - $s = ereg_replace("[óò&ocirc;&otilde;]", "o", $s);  
2482 - $s = ereg_replace("[ÓÒ&Ocirc;&Otilde;]", "O", $s);  
2483 - $s = ereg_replace("[&uacute;ùû]", "u", $s);  
2484 - $s = ereg_replace("[&Uacute;ÙÛ]", "U", $s); 2465 + $s = ereg_replace("[&Eacute;�&Ecirc;]", "E", $s);
  2466 + $s = ereg_replace("[��&ocirc;&otilde;]", "o", $s);
  2467 + $s = ereg_replace("[��&Ocirc;&Otilde;]", "O", $s);
  2468 + $s = ereg_replace("[&uacute;��]", "u", $s);
  2469 + $s = ereg_replace("[&Uacute;��]", "U", $s);
2485 $s = str_replace("&ccedil;", "c", $s); 2470 $s = str_replace("&ccedil;", "c", $s);
2486 $s = str_replace("&Ccedil;", "C", $s); 2471 $s = str_replace("&Ccedil;", "C", $s);
2487 // $str = htmlentities($s); 2472 // $str = htmlentities($s);
classesphp/mapa_controle.php
@@ -1035,6 +1035,19 @@ switch (strtoupper($funcao)) { @@ -1035,6 +1035,19 @@ switch (strtoupper($funcao)) {
1035 case "DOWNLOAD2": 1035 case "DOWNLOAD2":
1036 $retorno = downloadTema2($map_file, $_pg["tema"], $locaplic, $dir_tmp, $postgis_mapa); 1036 $retorno = downloadTema2($map_file, $_pg["tema"], $locaplic, $dir_tmp, $postgis_mapa);
1037 break; 1037 break;
  1038 + /*
  1039 + * Valor: DOWNLOAD3
  1040 + *
  1041 + * Gera um arquivo para download de um tema.
  1042 + */
  1043 + case "DOWNLOAD3":
  1044 + $retorno = downloadTema2($map_file, $_pg["tema"], $locaplic, $dir_tmp, $postgis_mapa);
  1045 + $retorno["arquivos"] = "";
  1046 + $retorno["datas"] = "";
  1047 + $_SESSION["downloadZipTema"] = $retorno["shape-zip"];
  1048 + $retorno["shape-zip"] = "";
  1049 + session_write_close();
  1050 + break;
1038 /* 1051 /*
1039 * Valor: DOWNLOAD3 1052 * Valor: DOWNLOAD3
1040 * 1053 *
ferramentas/download/dicionario.js
1 //+$trad(1,i3GEOF.download.dicionario)+ 1 //+$trad(1,i3GEOF.download.dicionario)+
2 i3GEOF.download.dicionario = { 2 i3GEOF.download.dicionario = {
3 'download' : [ { 3 'download' : [ {
4 - pt : "Clique com o bot&atilde;o da direita do mouse sobre o(s) arquivo(s) abaixo para fazer o download.",  
5 - en : "Click the right mouse button on the file(s) below to download.",  
6 - es : "Haga clic con el bot&oacute;n derecho del rat&oacute;n sobre el (los) archivo (s) abajo para descargar." 4 + pt : "Gerando arquivo...",
  5 + en : "",
  6 + es : ""
7 } ], 7 } ],
8 'erroTema' : [ { 8 'erroTema' : [ {
9 pt : "Ocorreu um erro. O tema n&atilde;o foi encontrado. Pode ser que o c&oacute;digo do tema n&atilde;o existe na defini&ccedil;&atilde;o do mapfile. Informe o administrador do sistema.", 9 pt : "Ocorreu um erro. O tema n&atilde;o foi encontrado. Pode ser que o c&oacute;digo do tema n&atilde;o existe na defini&ccedil;&atilde;o do mapfile. Informe o administrador do sistema.",
@@ -15,9 +15,9 @@ i3GEOF.download.dicionario = { @@ -15,9 +15,9 @@ i3GEOF.download.dicionario = {
15 en : "Number of records", 15 en : "Number of records",
16 es : "N&uacute;mero de registros" 16 es : "N&uacute;mero de registros"
17 } ], 17 } ],
18 - 'pagdownload' : [ {  
19 - pt : "Acesse aqui a p&aacute;gina de download, que cont&eacute;m mais op&ccedil;&otilde;es",  
20 - en : "For more options, access the download page here",  
21 - es : "Para m&aacute;s opciones, acceda aqu&iacute; a la p&aacute;gina de descarga"  
22 - } ] 18 + 'arquivook' : [ {
  19 + pt : "Arquivo gerado",
  20 + en : "",
  21 + es : ""
  22 + } ]
23 }; 23 };
24 \ No newline at end of file 24 \ No newline at end of file
ferramentas/download/forcedownload.php 0 → 100644
@@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
  1 +<?php
  2 +if(empty($_REQUEST["g_sid"])){
  3 + exit;
  4 +}
  5 +$g_sid = $_REQUEST["g_sid"];
  6 +session_name("i3GeoPHP");
  7 +session_id($g_sid);
  8 +session_start();
  9 +if($_SESSION["downloadZipTema"] != ""){
  10 + $arquivo = $_SESSION["downloadZipTema"];
  11 + $_SESSION["downloadZipTema"] = "";
  12 + session_write_close();
  13 + header("Content-Transfer-Encoding: binary");
  14 + header('Content-Disposition: attachment; filename="'.basename($arquivo).'"');
  15 + readfile($arquivo);
  16 + exit;
  17 +} else {
  18 + $_SESSION["downloadZipTema"] = "";
  19 + session_write_close();
  20 +}
  21 +?>
0 \ No newline at end of file 22 \ No newline at end of file
ferramentas/download/index.js
@@ -91,7 +91,7 @@ i3GEOF.download = { @@ -91,7 +91,7 @@ i3GEOF.download = {
91 */ 91 */
92 html:function(divid,tema){ 92 html:function(divid,tema){
93 var cp,p,ins,mostraDownload,c; 93 var cp,p,ins,mostraDownload,c;
94 - ins = '<div class="container-fluid" style="top:0px;position:absolute;"><h5 class="alert alert-info">'+$trad('download',i3GEOF.download.dicionario)+'</h5>'; 94 + ins = '<div class="container-fluid" style="top:0px;position:absolute;"><h5>'+$trad('download',i3GEOF.download.dicionario)+'</h5>';
95 ins += '<div id=i3GEOdownloadResultado ></div></div>'; 95 ins += '<div id=i3GEOdownloadResultado ></div></div>';
96 $i(divid).innerHTML += ins; 96 $i(divid).innerHTML += ins;
97 c = i3GEO.arvoreDeCamadas.pegaTema(tema); 97 c = i3GEO.arvoreDeCamadas.pegaTema(tema);
@@ -113,17 +113,18 @@ i3GEOF.download = { @@ -113,17 +113,18 @@ i3GEOF.download = {
113 ins = "<h5 class='alert alert-warning'>"+$trad('erroTema',i3GEOF.download.dicionario)+"</h5>"; 113 ins = "<h5 class='alert alert-warning'>"+$trad('erroTema',i3GEOF.download.dicionario)+"</h5>";
114 } 114 }
115 else{ 115 else{
116 - for (arq=0;arq<n;arq++){  
117 - ins += "<li><a href='"+window.location.protocol+"//"+window.location.host+"/"+arqs[arq]+"'>"+arqs[arq]+"</a></li>";  
118 - } 116 + ins += "<h5>" + $trad('arquivook',i3GEOF.download.dicionario) + "</h5>";
  117 + var url = i3GEO.configura.locaplic + "/ferramentas/download/forcedownload.php?g_sid=" + i3GEO.configura.sid;
  118 + var link = document.createElement("a");
  119 + $(link).click(function(e) {
  120 + e.preventDefault();
  121 + window.location.href = url;
  122 + });
  123 + $(link).click();
119 } 124 }
120 if(retorno.nreg){ 125 if(retorno.nreg){
121 - ins += "<h5 class='alert alert-info'>"+$trad('registros',i3GEOF.download.dicionario)+" ="+retorno.nreg + "</h5>"; 126 + ins += "<h5>"+$trad('registros',i3GEOF.download.dicionario)+" ="+retorno.nreg + "</h5>";
122 } 127 }
123 - temp = i3GEO.configura.locaplic+"/datadownload.htm?tema="+tema+"&temaDownload="+tema;  
124 - ins += "<h5 class='alert alert-info'>";  
125 - ins += "<a href='"+temp+"' target=_blank >"+$trad('pagdownload',i3GEOF.download.dicionario)+"</a></h5>";  
126 -  
127 } 128 }
128 else{ 129 else{
129 ins = "<h5 class='alert alert-warning'>"+$trad("x66")+"</h5>"; 130 ins = "<h5 class='alert alert-warning'>"+$trad("x66")+"</h5>";
@@ -131,7 +132,7 @@ i3GEOF.download = { @@ -131,7 +132,7 @@ i3GEOF.download = {
131 $i("i3GEOdownloadResultado").innerHTML = ins + "</div>"; 132 $i("i3GEOdownloadResultado").innerHTML = ins + "</div>";
132 i3GEOF.download.aguarde.visibility = "hidden"; 133 i3GEOF.download.aguarde.visibility = "hidden";
133 }; 134 };
134 - p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=download2&tema="+tema; 135 + p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=download3&tema="+tema;
135 cp = new cpaint(); 136 cp = new cpaint();
136 cp.set_response_type("JSON"); 137 cp.set_response_type("JSON");
137 cp.call(p,"downloadTema",mostraDownload); 138 cp.call(p,"downloadTema",mostraDownload);