diff --git a/ferramentas/parametrossql/exec.php b/ferramentas/parametrossql/exec.php index cde9ba1..cd759ec 100755 --- a/ferramentas/parametrossql/exec.php +++ b/ferramentas/parametrossql/exec.php @@ -13,63 +13,81 @@ Aplica a substituicao de chaves pelos valores enviados */ case "APLICAR": $map = ms_newMapObj($map_file); - $layer = $map->getlayerbyname($tema); - $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"); + //pega o layer + $nomeLayer = ""; + $c = $map->numlayers; + for ($i=0;$i < $c;++$i){ + $layer = $map->getlayer($i); + if($layer->name == $tema){ + $nomeLayer = $tema; + break; } - else{ - $layer->setmetadata("DATAORIGINAL",$data); + elseif($tema == $layer->getmetadata("nomeoriginal")){ + $nomeLayer = $layer->name; } - $filtro = $layer->getFilterString(); - if($layer->getmetadata("FILTROORIGINAL") != ""){ - $filtro = $layer->getmetadata("FILTROORIGINAL"); + } + 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{ - $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); + $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"; } - 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": -- libgit2 0.21.2