Commit 8c65ead9a8b04872d38c8f5b5981962a1b7c7046

Authored by Edmar Moretti
1 parent bc7aa7db

Correção na opção de salvar e recuperar mapa do banco de dados

admin/admin.db
No preview for this file type
admin/php/mapas.php
@@ -189,6 +189,8 @@ function salvaMapfile(){ @@ -189,6 +189,8 @@ function salvaMapfile(){
189 //a string que vai no metadata segue o padrao JSON 189 //a string que vai no metadata segue o padrao JSON
190 //o parser para reconstruir os valores e feito em javascript, no cliente 190 //o parser para reconstruir os valores e feito em javascript, no cliente
191 // 191 //
  192 + $_GET["arqmapfile"] = str_replace(".map","",$_GET["arqmapfile"]);
  193 + $_GET["arqmapfile"] = str_replace(".","",$_GET["arqmapfile"]).".map";
192 $customizacoesinit = array(); 194 $customizacoesinit = array();
193 if(isset($_GET["preferenciasbase64"]) || isset($_GET["geometriasbase64"]) || isset($_GET["graficosbase64"]) || isset($_GET["tabelasbase64"])){ 195 if(isset($_GET["preferenciasbase64"]) || isset($_GET["geometriasbase64"]) || isset($_GET["graficosbase64"]) || isset($_GET["tabelasbase64"])){
194 $customizacoesinit[] = '"preferenciasbase64":"'.$_GET["preferenciasbase64"].'"'; 196 $customizacoesinit[] = '"preferenciasbase64":"'.$_GET["preferenciasbase64"].'"';
@@ -209,13 +211,15 @@ function salvaMapfile(){ @@ -209,13 +211,15 @@ function salvaMapfile(){
209 $handle = fopen ($_GET["arqmapfile"], 'r'); 211 $handle = fopen ($_GET["arqmapfile"], 'r');
210 $conteudo = fread ($handle, filesize ($_GET["arqmapfile"])); 212 $conteudo = fread ($handle, filesize ($_GET["arqmapfile"]));
211 fclose ($handle); 213 fclose ($handle);
212 - $conteudo = base64_encode($conteudo);  
213 - if($conteudo == false){  
214 - return array("id"=>"","status"=>"erro");  
215 - } 214 + //$conteudo = base64_encode($conteudo);
  215 + $conteudo = str_replace("'","_!_",$conteudo);
  216 + $conteudo = str_replace('"',"_!!_",$conteudo);
  217 + $conteudo = str_replace(array("<?","?>"),"",$conteudo);
  218 +
216 require_once("conexao.php"); 219 require_once("conexao.php");
217 if($convUTF){ 220 if($convUTF){
218 - $_GET["nome_mapa"] = utf8_encode($_GET["nome_mapa"]); 221 + $_GET["nome_mapa"] = utf8_encode($_GET["nome_mapa"]);
  222 + $conteudo = utf8_encode($conteudo);
219 } 223 }
220 $retorna = ""; 224 $retorna = "";
221 if(empty($id_mapa)){ 225 if(empty($id_mapa)){
@@ -237,6 +241,9 @@ function salvaMapfile(){ @@ -237,6 +241,9 @@ function salvaMapfile(){
237 else{ 241 else{
238 $id = $id_mapa; 242 $id = $id_mapa;
239 } 243 }
  244 + if (filter_var($id, FILTER_VALIDATE_INT) === false){
  245 + return array("id"=>"","status"=>"Error!: ");
  246 + }
240 $dataCol = array( 247 $dataCol = array(
241 "mapfile" => $conteudo, 248 "mapfile" => $conteudo,
242 "publicado_mapa" => "sim", 249 "publicado_mapa" => "sim",
@@ -249,7 +256,7 @@ function salvaMapfile(){ @@ -249,7 +256,7 @@ function salvaMapfile(){
249 return array("id"=>$id,"status"=>"ok"); 256 return array("id"=>$id,"status"=>"ok");
250 } 257 }
251 catch (PDOException $e){ 258 catch (PDOException $e){
252 - return array("id"=>"","status"=>"Error!: " . " "); 259 + return array("id"=>"","status"=>"Error!: ");
253 } 260 }
254 } 261 }
255 /* 262 /*
classesphp/funcoes_gerais.php
@@ -2910,31 +2910,50 @@ function cloneInlineSymbol($layern,$nmapa,$mapa){ @@ -2910,31 +2910,50 @@ function cloneInlineSymbol($layern,$nmapa,$mapa){
2910 //recupera um mapfile armazenado no banco de dados de administracao 2910 //recupera um mapfile armazenado no banco de dados de administracao
2911 //ver admin/php/mapas.php salvaMapfile 2911 //ver admin/php/mapas.php salvaMapfile
2912 function restauraMapaAdmin($id_mapa,$dir_tmp){ 2912 function restauraMapaAdmin($id_mapa,$dir_tmp){
2913 - return; 2913 + if (filter_var($id_mapa, FILTER_VALIDATE_INT) === false){
  2914 + exit;
  2915 + }
2914 include(dirname(__FILE__)."/../admin/php/conexao.php"); 2916 include(dirname(__FILE__)."/../admin/php/conexao.php");
2915 if(!empty($esquemaadmin)){ 2917 if(!empty($esquemaadmin)){
2916 $esquemaadmin = str_replace(".","",$esquemaadmin)."."; 2918 $esquemaadmin = str_replace(".","",$esquemaadmin).".";
2917 } 2919 }
2918 $q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_mapas where id_mapa=$id_mapa ",PDO::FETCH_ASSOC); 2920 $q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_mapas where id_mapa=$id_mapa ",PDO::FETCH_ASSOC);
2919 $mapasalvo = $q->fetchAll(); 2921 $mapasalvo = $q->fetchAll();
  2922 + $dbh = null;
  2923 + $dbhw = null;
2920 $mapasalvo = $mapasalvo[0]; 2924 $mapasalvo = $mapasalvo[0];
2921 $base = ""; 2925 $base = "";
2922 if(strtoupper($mapasalvo["publicado"]) != "NAO"){ 2926 if(strtoupper($mapasalvo["publicado"]) != "NAO"){
2923 - $base = $dir_tmp."/".nomeRandomico().".map"; 2927 + $base = $dir_tmp."/".nomeRandomico()."_restaurado.map";
2924 $baseh = fopen($base,'w'); 2928 $baseh = fopen($base,'w');
2925 - $registro = $mapasalvo["mapfile"]; 2929 + $mapfile = $mapasalvo["mapfile"];
  2930 + //$registro = $mapasalvo["mapfile"];
2926 //verifica se existem parametros junto com o registro 2931 //verifica se existem parametros junto com o registro
2927 - $registro = explode(",",$registro);  
2928 - $mapfile = $registro[0]; 2932 + //$registro = explode(",",$registro);
  2933 + //$mapfile = $registro[0];
2929 //adapta para versoes novas do mapserver 2934 //adapta para versoes novas do mapserver
2930 - $mapfile = base64_decode($mapfile);  
2931 - $mapfile = str_replace("TYPE ANNOTATION","TYPE POINT",$mapfile); 2935 + //verifica se esta em base 64 (versoes antigas)
  2936 + if (!preg_match('/MAP/',$mapfile)) {
  2937 + $mapfile = base64_decode($mapfile);
  2938 + }
  2939 + else {
  2940 + //substitui strings especiais
  2941 + $mapfile = str_replace("_!!_",'"',$mapfile);
  2942 + $mapfile = str_replace("_!_","'",$mapfile);
  2943 + }
  2944 + $mapfile = str_ireplace("TYPE ANNOTATION","TYPE POINT",$mapfile);
  2945 + $mapfile = str_replace(array("<?","?>"),"",$mapfile);
2932 $s = fwrite($baseh,$mapfile); 2946 $s = fwrite($baseh,$mapfile);
2933 fclose($baseh); 2947 fclose($baseh);
2934 } 2948 }
2935 - $dbh = null;  
2936 - $dbhw = null;  
2937 - return $base; 2949 +
  2950 + if (@ms_newMapObj($base)){
  2951 + return $base;
  2952 + }
  2953 + else{
  2954 + unlink($base);
  2955 + }
  2956 + return false;
2938 } 2957 }
2939 // 2958 //
2940 //converte uma string de conexao do mapserver em um array com os componentes da conexao 2959 //converte uma string de conexao do mapserver em um array com os componentes da conexao
ferramentas/carregamapa/upload.php
@@ -95,6 +95,7 @@ if (isset($_FILES[&#39;i3GEOcarregamapafilemap&#39;][&#39;name&#39;]) &amp;&amp; strlen(basename($_FILES @@ -95,6 +95,7 @@ if (isset($_FILES[&#39;i3GEOcarregamapafilemap&#39;][&#39;name&#39;]) &amp;&amp; strlen(basename($_FILES
95 $layertemp->set("status",MS_DELETE); 95 $layertemp->set("status",MS_DELETE);
96 } 96 }
97 } 97 }
  98 + $map->setmetadata("CUSTOMIZACOESINIT","");
98 $map->save($map_file); 99 $map->save($map_file);
99 restauraCon($map_file,$postgis_mapa); 100 restauraCon($map_file,$postgis_mapa);
100 unlink($dirmap."/".$Arquivo); 101 unlink($dirmap."/".$Arquivo);
ferramentas/salvamapa/geraminiatura.php
@@ -15,8 +15,11 @@ if (filter_var($_GET[&quot;restauramapa&quot;], FILTER_VALIDATE_INT) === false){ @@ -15,8 +15,11 @@ if (filter_var($_GET[&quot;restauramapa&quot;], FILTER_VALIDATE_INT) === false){
15 } 15 }
16 16
17 $base = restauraMapaAdmin($_GET["restauramapa"],$dir_tmp); 17 $base = restauraMapaAdmin($_GET["restauramapa"],$dir_tmp);
18 - 18 +
19 $nomeImagem = dirname($base)."/".str_replace(".map","","restauramapa".$_GET["restauramapa"])."_miniatura.png"; 19 $nomeImagem = dirname($base)."/".str_replace(".map","","restauramapa".$_GET["restauramapa"])."_miniatura.png";
  20 +//por seguranca
  21 +$nomeImagem = str_replace(".png","",$nomeImagem);
  22 +$nomeImagem = str_replace(".","",$nomeImagem).".png";
20 23
21 if(!file_exists($nomeImagem)){ 24 if(!file_exists($nomeImagem)){
22 $mapa = ms_newMapObj($base); 25 $mapa = ms_newMapObj($base);
@@ -45,8 +48,7 @@ if(!file_exists($nomeImagem)){ @@ -45,8 +48,7 @@ if(!file_exists($nomeImagem)){
45 $sca = $mapa->scalebar; 48 $sca = $mapa->scalebar;
46 $sca->set("status",MS_OFF); 49 $sca->set("status",MS_OFF);
47 $objImagemM = @$mapa->draw(); 50 $objImagemM = @$mapa->draw();
48 - $objImagemM->saveImage($nomeImagem);  
49 - 51 + $objImagemM->saveImage($nomeImagem);
50 } 52 }
51 ob_clean(); 53 ob_clean();
52 header('Content-Length: '.filesize($nomeImagem)); 54 header('Content-Length: '.filesize($nomeImagem));
mapas/index.js
@@ -45,7 +45,7 @@ function mostraBotoesBT(){ @@ -45,7 +45,7 @@ function mostraBotoesBT(){
45 } 45 }
46 }); 46 });
47 }; 47 };
48 - //cpJSON vem de class_php.js 48 + //cpJSON vem de classe_php.js
49 cpJSON.call("../classesphp/mapa_controle.php?map_file=&funcao=pegaMapas&g_sid=", "foo", r); 49 cpJSON.call("../classesphp/mapa_controle.php?map_file=&funcao=pegaMapas&g_sid=", "foo", r);
50 } 50 }
51 function verificaMapa(mapa){ 51 function verificaMapa(mapa){