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 | }, | ... | ... |