From b8458851db054ec833a026a1fb41cde3bf7331e6 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 3 Sep 2009 14:52:01 +0000 Subject: [PATCH] Incluida verificação de metadados nas funções de geração de WMS, kml, kmz ou download. Os metadados são inseridos apenas quando um mapfile é editado por meio do sistema de administração. --- admin/php/editormapfile.php | 17 ++++++++++++----- admin/php/menutemas.php | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- classesphp/funcoes_gerais.php | 2 ++ menutemas/admin.db | Bin 53248 -> 0 bytes ogc.php | 2 ++ pacotes/kmlmapserver/classes/layerserver.class.php | 2 ++ temas/biomashp.map | 4 ++++ 7 files changed, 100 insertions(+), 6 deletions(-) diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index 8194ca8..bbf771a 100644 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -874,21 +874,27 @@ function alterarEstilo() function removeCabecalho($arq,$symbolset=true) { - global $postgis_mapa; - restauraCon($arq,$postgis_mapa); $handle = fopen($arq, "r"); if ($handle) { + $cabeca = array(); if($symbolset) { - $final[] = "MAP\n"; - $final[] = "SYMBOLSET ../symbols/simbolos.sym\n"; - $final[] = "FONTSET ".'"'."../symbols/fontes.txt".'"'."\n"; + $cabeca[] = "MAP\n"; + //$final[] = "SYMBOLSET ../symbols/simbolos.sym\n"; + //$final[] = "FONTSET ".'"'."../symbols/fontes.txt".'"'."\n"; } $grava = false; while (!feof($handle)) { $linha = fgets($handle); + if($symbolset) + { + if(strtoupper(trim($linha)) == "SYMBOLSET") + {$cabeca[] = $linha;} + if(strtoupper(trim($linha)) == "FONTSET") + {$cabeca[] = $linha;} + } if(strtoupper(trim($linha)) == "LAYER") {$grava = true;} if($grava) @@ -896,6 +902,7 @@ function removeCabecalho($arq,$symbolset=true) } fclose($handle); } + $final = array_merge($cabeca,$final); $handle = fopen($arq, "w+"); foreach ($final as $f) { diff --git a/admin/php/menutemas.php b/admin/php/menutemas.php index 6dbff7c..7919b42 100644 --- a/admin/php/menutemas.php +++ b/admin/php/menutemas.php @@ -728,7 +728,7 @@ Altera o registro de um tema. Se id for vazio acrescenta o registro */ function alteraTemas() { - global $nome,$desc,$id,$codigo,$tipoa,$download,$ogc,$kml,$link,$tags,$kmz; + global $nome,$desc,$id,$codigo,$tipoa,$download,$ogc,$kml,$link,$tags,$kmz,$locaplic; //error_reporting(E_ALL); try { @@ -747,6 +747,28 @@ function alteraTemas() else $dbhw->query("UPDATE i3geoadmin_temas SET tags_tema='$tags', link_tema='$link', nome_tema ='$nome',desc_tema='$desc',codigo_tema='$codigo',tipoa_tema='$tipoa',download_tema='$download',ogc_tema='$ogc',kml_tema='$kml',kmz_tema='$kmz' WHERE id_tema = $id"); $retorna = $id; + if(!isset($kmz)){$kmz = "nao";} + $sql = "SELECT * from i3geoadmin_temas where id_tema = '$id'"; + $q = $dbh->query($sql,PDO::FETCH_ASSOC); + $resultado = $q->fetchAll(); + $mapfile = $resultado[0]["codigo_tema"]; + $mapfile = $locaplic."/temas/".$mapfile.".map"; + + if($mapa = @ms_newMapObj($mapfile)) + { + $mapa = ms_newMapObj($mapfile); + $nomes = $mapa->getalllayernames(); + foreach($nomes as $nome) + { + $layer = $mapa->getlayerbyname($nome); + $layer->setmetadata("permitedownload",strtolower($download)); + $layer->setmetadata("permiteogc",strtolower($ogc)); + $layer->setmetadata("permitekml",strtolower($kml)); + $layer->setmetadata("permitekmz",strtolower($kmz)); + } + $mapa->save($mapfile); + removeCabecalho($mapfile); + } } else { @@ -1066,4 +1088,59 @@ function importarXmlMenu() $dbh = null; return "Dados importados."; } + +function removeCabecalho($arq,$symbolset=true) +{ + $handle = fopen($arq, "r"); + if ($handle) + { + $cabeca = array(); + if($symbolset) + { + $cabeca[] = "MAP\n"; + //$final[] = "SYMBOLSET ../symbols/simbolos.sym\n"; + //$final[] = "FONTSET ".'"'."../symbols/fontes.txt".'"'."\n"; + } + $grava = false; + while (!feof($handle)) + { + $linha = fgets($handle); + if($symbolset) + { + if(strtoupper(trim($linha)) == "SYMBOLSET") + {$cabeca[] = $linha;} + if(strtoupper(trim($linha)) == "FONTSET") + {$cabeca[] = $linha;} + } + if(strtoupper(trim($linha)) == "LAYER") + {$grava = true;} + if($grava) + {$final[] = rtrim($linha, "\r\n") . PHP_EOL;} + } + fclose($handle); + } + $final = array_merge($cabeca,$final); + $handle = fopen($arq, "w+"); + foreach ($final as $f) + { + // + //remove resultados em branco + //e grava a linha + // + $teste = strtoupper($f); + $teste = trim($teste); + $teste = str_replace(" ","",$teste); + $teste = str_replace("'","",$teste); + $teste = str_replace('"',"",$teste); + $teste = preg_replace('/[\n\r\t ]*/', '', $teste); + $testar = array("KEYIMAGE","TILEINDEX","TILEITEM","SYMBOL","LABELITEM","FILTERITEM","GROUP","ENCODING","TIP","CLASSE","ITENSDESC","CLASSESNOME","ITENSLINK","ESCALA","CLASSESSIMBOLO","MENSAGEM","EXTENSAO","CLASSESITEM","ESCONDIDO","CLASSESCOR","DOWNLOAD","CLASSESTAMANHO","ITENS","TEMA","APLICAEXTENSAO","IDENTIFICA"); + $passou = true; + foreach ($testar as $t) + {if($teste == $t){$passou = false;}} + if($passou) + fwrite($handle,$f); + } + fclose($handle); + chmod($arq, 0666); +} ?> \ No newline at end of file diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index ededa22..82421c6 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -1725,6 +1725,8 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp) foreach ($temastemp as $tt) { $ll = $maptemp->getlayerbyname($tt); + $permite = $l->getmetadata("permitedownload"); + if($permite != "nao") ms_newLayerObj($map, $ll); } } diff --git a/menutemas/admin.db b/menutemas/admin.db index cd8635c..512cc32 100644 Binary files a/menutemas/admin.db and b/menutemas/admin.db differ diff --git a/ogc.php b/ogc.php index 14965a4..cd5d0c7 100644 --- a/ogc.php +++ b/ogc.php @@ -201,6 +201,8 @@ if ($tipo == "" || $tipo == "metadados") } } autoClasses(&$l,$oMap); + $permite = $l->getmetadata("permiteogc"); + if($permite != "nao") ms_newLayerObj($oMap, $l); } } diff --git a/pacotes/kmlmapserver/classes/layerserver.class.php b/pacotes/kmlmapserver/classes/layerserver.class.php index 0861a3b..6d675ed 100644 --- a/pacotes/kmlmapserver/classes/layerserver.class.php +++ b/pacotes/kmlmapserver/classes/layerserver.class.php @@ -405,6 +405,8 @@ class LayerServer { * Process the shape */ function process_shape(&$layer, &$shape, &$class_list, &$folder, &$namecol){ + $permite = $layer->getmetadata("permitekmz"); + if($permite == "nao"){return;} $itens = $layer->getmetadata("itens"); $itensdesc = $layer->getmetadata("itensdesc"); $shape->project($this->in_proj, $this->out_proj); diff --git a/temas/biomashp.map b/temas/biomashp.map index 1cb25de..e29084e 100644 --- a/temas/biomashp.map +++ b/temas/biomashp.map @@ -5,8 +5,12 @@ FONTSET "../symbols/fontes.txt" DATA "c:\ms4w\apache\htdocs\geodados\brasil\vegetacao\biomas.shp" METADATA "CLASSE" "SIM" + "permitekmz" "sim" + "permitedownload" "sim" "download" "SIM" "arquivodownload" "C:\ms4w\Apache\htdocs\geodados\brasil\vegetacao\vegetacao.zip" + "permiteogc" "" + "permitekml" "sim" "TEMA" "Biomas shapefile" END NAME "biomashp" -- libgit2 0.21.2