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 1807 $map = ms_newMapObj($map_file);
1808 1808 $rectextent = $map->extent;
1809 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 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 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 1870 // verifica se existe mais de um tema (grupo) montando o array com os temas
1884 1871 // os grupos podem ter o nome do layer em GROUP ao inv&eacute;s de NAME
1885 1872 //
1886   - if ($extensao == ".map") {
1887 1873 $multilayer = 0;
1888 1874 $grupos = $map->getAllGroupNames();
1889 1875 foreach ($grupos as $grupo) {
... ... @@ -1904,7 +1890,6 @@ function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa)
1904 1890 if ($multilayer == 0) {
1905 1891 $temas[] = $tema;
1906 1892 }
1907   - }
1908 1893 // $temas agora &eacute; um array com os NAMEs dos LAYERS que ser&atilde;o baixados
1909 1894 $radtmp = dirname($dir_tmp);
1910 1895 $ziper = new zipfile();
... ... @@ -2472,16 +2457,16 @@ function seems_utf8($Str)
2472 2457 */
2473 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 2463 $s = ereg_replace("[&iacute;]", "i", $s);
2479 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 2470 $s = str_replace("&ccedil;", "c", $s);
2486 2471 $s = str_replace("&Ccedil;", "C", $s);
2487 2472 // $str = htmlentities($s);
... ...
classesphp/mapa_controle.php
... ... @@ -1035,6 +1035,19 @@ switch (strtoupper($funcao)) {
1035 1035 case "DOWNLOAD2":
1036 1036 $retorno = downloadTema2($map_file, $_pg["tema"], $locaplic, $dir_tmp, $postgis_mapa);
1037 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 1052 * Valor: DOWNLOAD3
1040 1053 *
... ...
ferramentas/download/dicionario.js
1 1 //+$trad(1,i3GEOF.download.dicionario)+
2 2 i3GEOF.download.dicionario = {
3 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 8 'erroTema' : [ {
9 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 15 en : "Number of records",
16 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 24 \ No newline at end of file
... ...
ferramentas/download/forcedownload.php 0 → 100644
... ... @@ -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 22 \ No newline at end of file
... ...
ferramentas/download/index.js
... ... @@ -91,7 +91,7 @@ i3GEOF.download = {
91 91 */
92 92 html:function(divid,tema){
93 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 95 ins += '<div id=i3GEOdownloadResultado ></div></div>';
96 96 $i(divid).innerHTML += ins;
97 97 c = i3GEO.arvoreDeCamadas.pegaTema(tema);
... ... @@ -113,17 +113,18 @@ i3GEOF.download = {
113 113 ins = "<h5 class='alert alert-warning'>"+$trad('erroTema',i3GEOF.download.dicionario)+"</h5>";
114 114 }
115 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 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 129 else{
129 130 ins = "<h5 class='alert alert-warning'>"+$trad("x66")+"</h5>";
... ... @@ -131,7 +132,7 @@ i3GEOF.download = {
131 132 $i("i3GEOdownloadResultado").innerHTML = ins + "</div>";
132 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 136 cp = new cpaint();
136 137 cp.set_response_type("JSON");
137 138 cp.call(p,"downloadTema",mostraDownload);
... ...