salvamapabanco.php
4.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
/****************************************************************/
// include (dirname ( __FILE__ ) . "/../../../ms_configura.php");
//
// checa login
// valida _GET e _POST, juntando em _GET
// pega algumas variaveis de uso mais comum
// session_start
//
include ("checaLogin.php");
\admin\php\login\checaLogin();
// funcoes de administracao
include ("funcoesAdmin.php");
//
// carrega outras funcoes e extensoes do PHP
//
include ("../../classesphp/carrega_ext.php");
//
// conexao com o banco de administracao
// cria as variaveis $dbh e $dbhw alem de conexaoadmin
//
include ("conexao.php");
/**
* ************************************************************
*/
if (\admin\php\funcoesAdmin\verificaOperacaoSessao("admin/html/mapas") === false) {
header("HTTP/1.1 403 Vc nao pode realizar essa operacao");
exit();
}
if (isset($_POST["id_mapa"])) {
$id_mapa = $_POST["id_mapa"];
\admin\php\funcoesAdmin\testaSafeNumerico(array(
$id_mapa
));
} else {
exit;
}
$funcao = strtoupper($funcao);
switch ($funcao) {
case "SALVAMAPFILE":
$nameatual = session_name();
$idatual = session_id();
session_write_close();
session_name("i3GeoPHP");
session_id($_POST["sid"]);
session_start();
$arqmapfile = $_SESSION["map_file"];
$interface = $_SESSION["customDir"]."/".$_SESSION["interfacePadrao"];
session_write_close();
session_name("$nameatual");
session_id($idatual);
session_start();
//
// as configuracoes especiais do mapa, definidas nas preferencias ou em ferramentas abertas quando o mapa e salvo,
// sao convertidas em base64 do lado do cliente
// esses dados sao entao armazenados como tags METADATA no mapfile
// quando o mapa e restaurado, esses valores sao recuperados
// a string que vai no metadata segue o padrao JSON
// o parser para reconstruir os valores e feito em javascript, no cliente
//
$customizacoesinit = array();
if (isset($_POST["preferenciasbase64"]) || isset($_POST["geometriasbase64"]) || isset($_POST["graficosbase64"]) || isset($_POST["tabelasbase64"])) {
$customizacoesinit[] = '"preferenciasbase64":"' . $_POST["preferenciasbase64"] . '"';
$customizacoesinit[] = '"geometriasbase64":"' . $_POST["geometriasbase64"] . '"';
$customizacoesinit[] = '"graficosbase64":"' . $_POST["graficosbase64"] . '"';
$customizacoesinit[] = '"tabelasbase64":"' . $_POST["tabelasbase64"] . '"';
$m = ms_newMapObj($arqmapfile);
$m->setmetadata("CUSTOMIZACOESINIT", '{' . implode(",", $customizacoesinit) . '}');
$m->save($arqmapfile);
}
if ($_POST["ext"] && $_POST["ext"] != "") {
$e = explode(" ", $_POST["ext"]);
$m = ms_newMapObj($arqmapfile);
$extatual = $m->extent;
$extatual->setextent((min($e[0], $e[2])), (min($e[1], $e[3])), (max($e[0], $e[2])), (max($e[1], $e[3])));
$m->save($arqmapfile);
}
$handle = fopen($arqmapfile, 'r');
$conteudo = fread($handle, filesize($arqmapfile));
fclose($handle);
// $conteudo = base64_encode($conteudo);
$conteudo = str_replace("'", "_!_", $conteudo);
$conteudo = str_replace('"', "_!!_", $conteudo);
$conteudo = str_replace(array(
"<?",
"?>"
), "", $conteudo);
$dataCol = array(
"mapfile" => $conteudo,
"outros_mapa" => "&restauramapa=$id_mapa&interface=" . $_POST["url"]."/".$interface
);
$resultado = \admin\php\funcoesAdmin\i3GeoAdminUpdate ( $dbhw, "i3geoadmin_mapas", $dataCol, "WHERE id_mapa = $id_mapa" );
$dbhw = null;
$dbh = null;
if ($resultado === false) {
header("HTTP/1.1 500 erro ao consultar banco de dados");
}
$dbh = null;
\admin\php\funcoesAdmin\retornaJSON( array(
"status" => "ok"
));
exit();
break;
case "REMOVEMAPFILE":
$dataCol = array(
"mapfile" => "",
"outros_mapa" => ""
);
$resultado = \admin\php\funcoesAdmin\i3GeoAdminUpdate ( $dbhw, "i3geoadmin_mapas", $dataCol, "WHERE id_mapa = $id_mapa" );
$dbhw = null;
$dbh = null;
if ($resultado === false) {
header("HTTP/1.1 500 erro ao consultar banco de dados");
}
$dbh = null;
\admin\php\funcoesAdmin\retornaJSON( array(
"status" => "ok"
));
exit();
break;
default:
if (! empty($funcao))
header("HTTP/1.1 500 erro funcao nao existe");
break;
}
?>