exec.php
3.08 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
<?php
include_once(dirname(__FILE__)."/../inicia.php");
//
//faz a busca da função que deve ser executada
//
$retorno = ""; //string que será retornada ao browser via JSON
switch (strtoupper($funcao))
{
/*
Valor: APLICAR
Aplica a substituicao de chaves pelos valores enviados
*/
case "APLICAR":
$map = ms_newMapObj($map_file);
//pega o layer
$nomeLayer = "";
$c = $map->numlayers;
for ($i=0;$i < $c;++$i){
$layer = $map->getlayer($i);
if($layer->name == $tema){
$nomeLayer = $tema;
break;
}
elseif($tema == $layer->getmetadata("nomeoriginal")){
$nomeLayer = $layer->name;
}
}
if($nomeLayer == ""){
$retorno = "layer nao encontrado";
}
else{
$layer = $map->getlayerbyname($nomeLayer);
$data = $layer->data;
//pega as chaves do proprio mapfile
$c = $layer->getmetadata("PLUGINI3GEO");
if($c == ""){
$retorno = "erro";
}
else{
$cs = json_decode($c,true);
$cs = $cs["parametros"];
$chaves = array();
foreach($cs as $c){
$chaves[] = $c["chave"];
}
$chaves = implode(",",$chaves);
//verifica se o layer ja teve os parametros substituidos anteriormente
//nesse caso, o data he obtido do metadata que guarda o valor original
if($layer->getmetadata("DATAORIGINAL") != ""){
$data = $layer->getmetadata("DATAORIGINAL");
}
else{
$layer->setmetadata("DATAORIGINAL",$data);
}
$filtro = $layer->getFilterString();
if($layer->getmetadata("FILTROORIGINAL") != ""){
$filtro = $layer->getmetadata("FILTROORIGINAL");
}
else{
$layer->setmetadata("FILTROORIGINAL",$filtro);
}
$chaves = str_ireplace(array("and", "or", "select","from","where","update","delete","insert","--"),"",$chaves);
$chaves = explode(",",$chaves);
$valores = str_ireplace(array("and", "or", "select","from","where","update","delete","insert","--"),"",$valores);
$valores = explode(",",strip_tags($valores));
$n = count($chaves);
for($i = 0; $i < $n; $i++){
if($chaves[$i] != ""){
$v = $valores[$i];
$data = str_replace($chaves[$i],$v,$data);
if($filtro != ""){
$filtro = str_replace($chaves[$i],$v,$filtro);
}
}
}
if($filtro != ""){
$layer->setfilter($filtro);
}
$layer->set("data",$data);
$layer->set("status",MS_DEFAULT);
$layer->setmetadata("PLUGINI3GEO","");
$layer->setmetadata("TEMA",$layer->getmetadata("TEMA")." - ".implode(",",$valores));
$layer->set("name","plugin".nomeRandomico());
if (connection_aborted()){
exit();
}
$salvo = $map->save($map_file);
$retorno = "ok";
}
}
break;
case "REMOVER":
$map = ms_newMapObj($map_file);
$layer = $map->getlayerbyname($tema);
if($layer != ""){
$layer->set("status",MS_DELETE);
$salvo = $map->save($map_file);
}
$retorno = "ok";
break;
case "INCLUDEPROG":
if(file_exists($locaplic."/".$prog)){
include($locaplic."/".$prog);
}
break;
}
if (!connection_aborted()){
cpjson($retorno);
}
else
{exit();}
?>