From 82fc776caa423ace83927a83952d16a3749af3d8 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 2 Dec 2015 13:49:34 +0000 Subject: [PATCH] --- json.php | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ ogc.php | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 149 insertions(+), 18 deletions(-) diff --git a/json.php b/json.php index a4d4fab..0724b99 100755 --- a/json.php +++ b/json.php @@ -26,7 +26,7 @@ Você deve ter recebido uma copia da Licença Pública Geral do Free Software Foundation, Inc., no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. -Arquivo: i3geo/ogc.php +Arquivo: i3geo/json.php Parâmetros: @@ -142,7 +142,7 @@ if($format == "storymap"){ $collon = $storymap["collon"]; $collat = $storymap["collat"]; $colmedia = $storymap["colmedia"]; - + $par = array( "cabecalho"=>$cabecalho, "texto"=>$texto, @@ -189,7 +189,7 @@ function gdocs(){ "type"=>$tipos[$i] ); } - + $fields[] = array( "id"=>"geo", "type"=>"geo" @@ -332,9 +332,10 @@ function carregaCacheArquivo(){ } function pegaDadosJ(){ - global $oMap, $tema, $versao; + global $oMap, $tema, $versao, $locaplic; set_time_limit(0); $layer = $oMap->getlayerbyname($tema); + processaPluginI3geo(); $layer->set("status",MS_DEFAULT); $layer->set("template","none.htm"); $items = pegaItens($layer,$oMap); @@ -344,7 +345,7 @@ function pegaDadosJ(){ $linhas = array(); for ($i = 0; $i < $res_count; $i++){ //echo $i." -
"; - if($versao == 6){ + if($versao >= 6){ $shape = $layer->getShape($layer->getResult($i)); } else{ @@ -388,7 +389,69 @@ function pegaDadosJ(){ ); return $resultado; } - +function processaPluginI3geo(){ + global $locaplic, $layer; + $c = $layer->getmetadata("PLUGINI3GEO"); + if($c != ""){ + $cs = json_decode($c,true); + if($cs["plugin"] == "parametrossql"){ + $data = $layer->data; + $cs = $cs["parametros"]; + $chaves = array(); + foreach($cs as $c){ + $chaves[] = $c["chave"]; + } + $chaves = implode(",",$chaves); + $filtro = $layer->getFilterString(); + $chaves = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$chaves); + $chaves = explode(",",$chaves); + $n = count($chaves); + //a variavel $plugin vem da URL e contem os valores + //que devem ser substituidos + //se $plugin for vazio, usa o primeiro valor definido na configuracao do plugin + //A ordem dos valores deve ser exatamente a ordem das chaves + if(empty($plugin)){ + $plugin = array(); + foreach($cs as $c){ + if($c["chave"] != ""){ + //valores definidos no plugin como uma string + if($c["valores"] != ""){ + $temp = explode(",",$c["valores"]); + $plugin[] = $temp[0]; + } + elseif ($c["prog"] != ""){ + $plugin[] = execProg($locaplic."/".$c["prog"]); + } + } + } + $plugin = implode(",",$plugin); + } + $layer->setmetadata("TEMA",$layer->getmetadata("TEMA")." - ".$plugin); + $valores = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$plugin); + $valores = explode(",",strip_tags($valores)); + 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); + } + } +} +//utilizada para obter os dados default quando se utiliza o plugin parametrossql +function execProg($prog){ + include($prog); + //$retorno variavel deve ser retornada pelo programa $prog + //veja como exemplo i3geo/aplicmap/daods/listaano.php + return $retorno[0]["v"]; +} function converteenc($texto){ if (!mb_detect_encoding($texto,"UTF-8",true)){ $texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1"); diff --git a/ogc.php b/ogc.php index 29d5b12..eac46c0 100644 --- a/ogc.php +++ b/ogc.php @@ -351,7 +351,7 @@ else{ if($extensao == ".map"){ //cria o mapfile com base no sistema de metadados estatisticos //verifica se o id_medida_variavel existe no mapfile e nao foi passado como um parametro - if(!isset($id_medida_variavel) && $temai3geo == true){ + if(!isset($id_medida_variavel) && $temai3geo == true){ $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); $l = $nmap->getlayer(0); $teste = $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL"); @@ -667,10 +667,11 @@ else{ } $oMap->setSymbolSet($locaplic."/symbols/".basename($oMap->symbolsetfilename)); $oMap->setFontSet($locaplic."/symbols/".basename($oMap->fontsetfilename)); + //verifica se existem layers com plugin definido e processa conforme o tipo de plugin + processaPluginI3geo(); // //caso seja download ou json ou csv - // - + // processaOutputformatMapfile(); $oMap->save($nomeMapfileTmp); @@ -750,7 +751,7 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ $x = $_GET["X"]; $y = $_GET["Y"]; $z = $_GET["Z"]; - + if(file_exists($tema)){ $layer0 = $oMap->getlayer(0); $layer0->set("status",MS_DEFAULT); @@ -771,7 +772,7 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ if ($layer0->getmetadata("cortepixels") != ""){ $cortePixels = $layer0->getmetadata("cortepixels"); } - + if($cache == true){ carregaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y"); } @@ -797,10 +798,10 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ $oMap->setsize(256,256); $oMap->setExtent($poPoint1->x,$poPoint1->y,$poPoint2->x,$poPoint2->y); - - + + $oMap->setProjection("proj=merc,a=6378137,b=6378137,lat_ts=0.0,lon_0=0.0,x_0=0.0,y_0=0,k=1.0,units=m"); - + // //se o layer foi marcado para corte altera os parametros para ampliar o mapa //antes de gerar a imagem @@ -925,19 +926,19 @@ if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json" exit; } $oMap->owsdispatch($req); - + $contenttype = ms_iostripstdoutbuffercontenttype(); ms_iostripstdoutbuffercontentheaders(); //grava em disco $contents = ms_iogetstdoutbufferstring(); file_put_contents($arq,$contents); //envia para download - + header("Content-type: application/json; subtype=geojson"); - + ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); - + exit; } if(strtolower($OUTPUTFORMAT) == "shape-zip"){ @@ -1417,4 +1418,71 @@ function converteenc($texto){ } return $texto; } +function processaPluginI3geo(){ + global $oMap, $locaplic; + $numlayers = $oMap->numlayers; + for ($i=0;$i < $numlayers;$i++){ + $l = $oMap->getlayer($i); + $c = $l->getmetadata("PLUGINI3GEO"); + if($c != ""){ + $cs = json_decode($c,true); + if($cs["plugin"] == "parametrossql"){ + $data = $l->data; + $cs = $cs["parametros"]; + $chaves = array(); + foreach($cs as $c){ + $chaves[] = $c["chave"]; + } + $chaves = implode(",",$chaves); + $filtro = $l->getFilterString(); + $chaves = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$chaves); + $chaves = explode(",",$chaves); + $n = count($chaves); + //a variavel $plugin vem da URL e contem os valores + //que devem ser substituidos + //se $plugin for vazio, usa o primeiro valor definido na configuracao do plugin + //A ordem dos valores deve ser exatamente a ordem das chaves + if(empty($plugin)){ + $plugin = array(); + foreach($cs as $c){ + if($c["chave"] != ""){ + //valores definidos no plugin como uma string + if($c["valores"] != ""){ + $temp = explode(",",$c["valores"]); + $plugin[] = $temp[0]; + } + elseif ($c["prog"] != ""){ + $plugin[] = execProg($locaplic."/".$c["prog"]); + } + } + } + $plugin = implode(",",$plugin); + } + $l->setmetadata("TEMA",$l->getmetadata("TEMA")." - ".$plugin); + $valores = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$plugin); + $valores = explode(",",strip_tags($valores)); + 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 != ""){ + $l->setfilter($filtro); + } + $l->set("data",$data); + } + } + } +} +//utilizada para obter os dados default quando se utiliza o plugin parametrossql +function execProg($prog){ + include($prog); + //$retorno variavel deve ser retornada pelo programa $prog + //veja como exemplo i3geo/aplicmap/daods/listaano.php + return $retorno[0]["v"]; +} ?> -- libgit2 0.21.2