Commit 4ca2a1cbb000cf03707cb65cbd456387bb39146b
1 parent
df8dbdd2
Exists in
master
and in
6 other branches
Modificações na função de geração do mapfile, baseado no sistema de metadados es…
…tatísticos, para evitar passagem de parâmetros inválidos na criação do SQL
Showing
2 changed files
with
26 additions
and
6 deletions
Show diff stats
classesphp/metaestat_controle.php
... | ... | @@ -198,7 +198,6 @@ switch (strtoupper($funcao)) { |
198 | 198 | break; |
199 | 199 | case "MAPFILEMEDIDAVARIAVEL": |
200 | 200 | // $filtro usa aspas duplas para enviar os parametros |
201 | - $_pg["filtro"] = str_replace('"', "'", $_pg["filtro"]); | |
202 | 201 | $m = new MetaestatInfo(); |
203 | 202 | if (! isset($_pg["codigo_tipo_regiao"])) { |
204 | 203 | $_pg["codigo_tipo_regiao"] = ""; |
... | ... | @@ -211,6 +210,25 @@ switch (strtoupper($funcao)) { |
211 | 210 | } else { |
212 | 211 | $_pg["cachemapfile"] = true; |
213 | 212 | } |
213 | + //valida o filtro | |
214 | + | |
215 | + if(!empty($_pg["filtro"])){ | |
216 | + $_pg["filtro"] = str_replace('"', "'", $_pg["filtro"]); | |
217 | + $final = array(); | |
218 | + $sepands = explode("|",$_pg["filtro"]); | |
219 | + foreach($sepands as $sepand){ | |
220 | + $linhas = explode("*",$sepand); | |
221 | + if(!is_numeric(str_replace(array("'",","),"",$linhas[1]))){ | |
222 | + exit; | |
223 | + } | |
224 | + if(count(explode(",",$linhas[1])) == 1){ | |
225 | + $final[] = $linhas[0]." = ". $linhas[1]; | |
226 | + } else { | |
227 | + $final[] = $linhas[0]." IN (".$linhas[1].")"; | |
228 | + } | |
229 | + } | |
230 | + $_pg["filtro"] = implode(" and ", $final); | |
231 | + } | |
214 | 232 | if ($_pg["formato"] == "json") { |
215 | 233 | retornaJSON($m->mapfileMedidaVariavel($_pg["id_medida_variavel"], $_pg["filtro"], $_GET["todasascolunas"], $_GET["tipolayer"], $_GET["titulolayer"], $_pg["id_classificacao"], $_GET["agruparpor"], $_pg["codigo_tipo_regiao"], $_GET["opacidade"], false, $_GET["cachemapfile"])); |
216 | 234 | } | ... | ... |
ferramentas/metaestat/index.js
... | ... | @@ -583,7 +583,8 @@ i3GEOF.metaestat = { |
583 | 583 | } |
584 | 584 | }; |
585 | 585 | if(v != true){ |
586 | - i3GEO.janela.tempoMsg("erro: "+v); | |
586 | + i3GEOF.metaestat.comum.aguarde("hidden"); | |
587 | + i3GEO.janela.tempoMsg("erro: "+v); | |
587 | 588 | return; |
588 | 589 | } |
589 | 590 | //e necessario obter os parametros nessa interface |
... | ... | @@ -696,18 +697,20 @@ i3GEOF.metaestat = { |
696 | 697 | c = $i("comboparametro_"+dados[i].id_parametro_medida+"_"+dados[i].id_pai); |
697 | 698 | if(c){ |
698 | 699 | if(c.value != "" && i3GEOF.metaestat.MULTIPARAMETROS === false){ |
699 | - t.push(dados[i].coluna+'="'+c.value+'"'); | |
700 | + //t.push(dados[i].coluna+'="'+c.value+'"'); | |
701 | + t.push(dados[i].coluna+'*"'+c.value+'"'); | |
700 | 702 | } |
701 | 703 | else{ |
702 | 704 | val = i3GEO.util.valoresCheckCombo(c.id); |
703 | 705 | if(val.length > 0){ |
704 | - t.push(dados[i].coluna+' IN ("'+val.join('","')+'")'); | |
706 | + //t.push(dados[i].coluna+' IN ("'+val.join('","')+'")'); | |
707 | + t.push(dados[i].coluna+' * "'+val.join('","')+'"'); | |
705 | 708 | } |
706 | 709 | } |
707 | 710 | } |
708 | 711 | } |
709 | 712 | if(t.length > 0){ |
710 | - return t.join(" and "); | |
713 | + return t.join("|"); | |
711 | 714 | } |
712 | 715 | else{ |
713 | 716 | return ""; |
... | ... | @@ -1414,7 +1417,6 @@ i3GEOF.metaestat = { |
1414 | 1417 | var temp = function(dados){ |
1415 | 1418 | i3GEOF.metaestat.parametros.dados = dados; |
1416 | 1419 | i3GEOF.metaestat.parametros.combos("0"); |
1417 | - i3GEOF.metaestat.comum.aguarde("hidden"); | |
1418 | 1420 | }; |
1419 | 1421 | i3GEO.php.listaParametrosMedidaVariavel(id_medida_variavel,temp); |
1420 | 1422 | }, | ... | ... |