Commit a4f4dac915ee9d9c2b8017a2d3df5fe8e7898974
1 parent
291a8719
Exists in
master
and in
6 other branches
i3geo/i3geo#85 Correção na função de substituição de chaves da ferramenta parame…
…trossql. Ocorriam erros quando campos de tipos diferentes não seguiam a mesma ordem das chaves
Showing
1 changed file
with
29 additions
and
12 deletions
Show diff stats
ferramentas/parametrossql/exec.php
... | ... | @@ -57,7 +57,24 @@ switch (strtoupper($funcao)) |
57 | 57 | */ |
58 | 58 | case "APLICAR": |
59 | 59 | $valores = $_GET["valores"]; |
60 | + $valores = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--","drop",";"),"",$valores); | |
61 | + $valores = explode(",",$valores); | |
60 | 62 | $titulos = $_GET["titulos"]; |
63 | + $titulos = explode(",",$titulos); | |
64 | + $chaves = $_GET["chaves"]; | |
65 | + $chaves = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--","drop",";"),"",$chaves); | |
66 | + $chaves = explode(",",$chaves); | |
67 | + if(count($chaves) <> count($valores)){ | |
68 | + echo "erro"; | |
69 | + exit; | |
70 | + } | |
71 | + //cria um array cuja key e a chave | |
72 | + $dados = array(); | |
73 | + $n = count($chaves); | |
74 | + for($i = 0; $i < $n; $i++){ | |
75 | + $dados[$chaves[$i]] = array("valor"=>$valores[$i],"titulo"=>$titulos[$i]); | |
76 | + } | |
77 | + | |
61 | 78 | $map = ms_newMapObj($map_file); |
62 | 79 | //pega o layer |
63 | 80 | $layer = $map->getlayerbyname($tema); |
... | ... | @@ -75,6 +92,7 @@ switch (strtoupper($funcao)) |
75 | 92 | $retorno = "erro"; |
76 | 93 | } |
77 | 94 | if($c != ""){ |
95 | + //pega as chaves originais do mapfile | |
78 | 96 | $cs = json_decode(utf8_encode($c),true); |
79 | 97 | $cs = $cs["parametros"]; |
80 | 98 | $chaves = array(); |
... | ... | @@ -82,20 +100,19 @@ switch (strtoupper($funcao)) |
82 | 100 | $chaves[] = $c["chave"]; |
83 | 101 | } |
84 | 102 | $chaves = implode(",",$chaves); |
103 | + $chaves = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--","drop",";"),"",$chaves); | |
104 | + $chaves = explode(",",$chaves); | |
85 | 105 | $filtro = $layer1->getFilterString(); |
86 | - if(!empty($valores)){ | |
87 | - $chaves = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--","drop",";"),"",$chaves); | |
88 | - $chaves = explode(",",$chaves); | |
89 | - $valores = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--","drop",";"),"",$valores); | |
90 | - $valores = explode(",",strip_tags($valores)); | |
91 | - $n = count($chaves); | |
92 | - for($i = 0; $i < $n; $i++){ | |
93 | - if($chaves[$i] != ""){ | |
94 | - $v = $valores[$i]; | |
95 | - $data = str_replace($chaves[$i],$v,$data); | |
106 | + $titulofim = array(); | |
107 | + if(!empty($dados)){ | |
108 | + foreach($chaves as $k){ | |
109 | + if($k != ""){ | |
110 | + $v = $dados[$k]["valor"]; | |
111 | + $data = str_replace($k,$v,$data); | |
96 | 112 | if($filtro != ""){ |
97 | - $filtro = str_replace($chaves[$i],$v,$filtro); | |
113 | + $filtro = str_replace($k,$v,$filtro); | |
98 | 114 | } |
115 | + $titulofim[] = $dados[$k]["titulo"]." ".$v; | |
99 | 116 | } |
100 | 117 | } |
101 | 118 | if($filtro != ""){ |
... | ... | @@ -107,7 +124,7 @@ switch (strtoupper($funcao)) |
107 | 124 | $layer->set("status",MS_DEFAULT); |
108 | 125 | } |
109 | 126 | $layer->setmetadata("PLUGINI3GEO",'{"plugin":"parametrossql","ativo":"sim"}'); |
110 | - $layer->setmetadata("TEMA",$layer1->getmetadata("TEMA")." - ".$titulos); | |
127 | + $layer->setmetadata("TEMA",$layer1->getmetadata("TEMA")." - ".implode(". ",$titulofim)); | |
111 | 128 | |
112 | 129 | //$layer->set("name","plugin".nomeRandomico()); |
113 | 130 | $layer->setmetadata("nomeoriginal",$layer1->name); | ... | ... |