From c2ed7523eb78f3ca513bc58a27f95f6c9f6ec144 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 10 Apr 2009 18:06:55 +0000 Subject: [PATCH] Adaptação dos códigos e criação de programa para adaptação dos mapfiles à versão nova do Mapserver (5.2.2) que exige a tag MAP no início dos arquivos --- admin/html/incluimap.html | 18 ++++++++++++++++++ admin/index.html | 7 +++++-- admin/php/admin.php | 2 ++ admin/php/editormapfile.php | 2 ++ admin/php/incluiMAP.php | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ admin/php/menutemas.php | 8 +++++++- 6 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 admin/html/incluimap.html create mode 100644 admin/php/incluiMAP.php diff --git a/admin/html/incluimap.html b/admin/html/incluimap.html new file mode 100644 index 0000000..3593521 --- /dev/null +++ b/admin/html/incluimap.html @@ -0,0 +1,18 @@ + + + + + + + +

+As versões novas do Mapserver exigem que os arquivos mapfile iniciem com a palavra "MAP" +

+

+Os mapfiles utilizados pelo i3geo, até a versão 4.1, e armazenados no diretório i3Geo/temas não iniciam com "MAP". Para ajustar os mapfiles +você pode editá-los individulamente ou rodar o programa i3geo/admin/php/incluiMAP.php +

+Antes de fazer isso, faça um backup do seu diretório i3geo/temas +

+Executar o ajuste dos mapfiles + diff --git a/admin/index.html b/admin/index.html index e1f34df..218ed4d 100644 --- a/admin/index.html +++ b/admin/index.html @@ -8,6 +8,7 @@

Administração do i3geo

+

Se você atualizou o Mapserver para a versão 5.2.2, seus mapfiles antigos podem não funcionar. Veja em "Outras opções" o item "Ajusta mapfiles".

Leia-me
@@ -16,14 +17,14 @@ Com a nova estrutura de administração, esses arquivos podem ser substituídos por registros em bancos de dados. Se você optar por usar um banco de dados, os arquivos antigos poderão ser importados para o banco (veja as opções de importação). Se vc desejar continuar utilizando os arquivos XML em disco, basta -editar as variáveis de configuração existentes emi3geo/ms_configura.php.

+editar as variáveis de configuração existentes em i3geo/ms_configura.php.

Para possibilitar a distribuição do i3geo de forma independente de banco de dados, optou-se pelo uso do gerenciador SQLITE, cujo arquivo com os dados fica armazenado em i3geo/menutemas/admin.db. Os programas em PHP que gerenciam esse banco utilizam o pacote PDO, possibilitando que seja utilizado outro gerenciador, como o POSTGRESQL, entre outros.

Para modificar a configuração do PDO, e utilizar outro gerenciador, deve-se editar o arquivo i3geo/admin/conexao.php ou então alterar a variável de configuração, definida no ms_configura.php, chamada $conexaoadmin. Essa variável indica o nome de um programa em PHP que será incluído nos programas que fazem acesso ao banco de dados de administração. Um exemplo de -conexão em PHP pode ser visto em i3geo/admin/conexaomma.php.

+conexão em PHP pode ser visto em i3geo/admin/php/conexaomma.php.

Para usar um gerenciador diferente do SQLITE é necessário criar as tabelas no novo banco de dados. Os sqls para essa criação podem ser obtidos no item "Outras opções".

@@ -183,6 +184,8 @@ essa criação podem ser obtidos no item "Outras opções".

Outras opções
+ + diff --git a/admin/php/admin.php b/admin/php/admin.php index bd146c0..f0279ac 100644 --- a/admin/php/admin.php +++ b/admin/php/admin.php @@ -162,6 +162,7 @@ function exclui() include("conexao.php"); $dbhw->query("DELETE from $tabela WHERE $coluna = $id"); $dbhw = null; + $dbh = null; return "ok"; } catch (PDOException $e) @@ -186,6 +187,7 @@ function pegaDados($sql,$locaplic="") $q = $dbh->query($sql,PDO::FETCH_ASSOC); $resultado = $q->fetchAll(); $dbh = null; + $dbhw = null; return $resultado; } catch (PDOException $e) diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index 276a728..f90b9c0 100644 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -265,6 +265,7 @@ function criarNovoMap() $arq = $locaplic."/temas/".$codigo.".map"; if(!file_exists($arq)) { + $dados[] = "MAP"; $dados[] = "SYMBOLSET ../symbols/simbolos.sym"; $dados[] = 'FONTSET "../symbols/fontes.txt"'; $dados[] = "LAYER"; @@ -874,6 +875,7 @@ function removeCabecalho($arq,$symbolset=true) { if($symbolset) { + $final[] = "MAP\n"; $final[] = "SYMBOLSET ../symbols/simbolos.sym\n"; $final[] = "FONTSET ".'"'."../symbols/fontes.txt".'"'."\n"; } diff --git a/admin/php/incluiMAP.php b/admin/php/incluiMAP.php new file mode 100644 index 0000000..24cf0e0 --- /dev/null +++ b/admin/php/incluiMAP.php @@ -0,0 +1,80 @@ +"; +foreach($arquivos as $arquivo) +{ + $arq = $locaplic."/temas/".$arquivo; + $abre = fopen($arq, "r"); + $maparray = array(); + $maparray[] = "MAP"; + $maparray[] = "\n"; + while (!feof($abre)) + { + $buffer = fgets($abre); + $buffer = str_replace(PHP_EOL,"",rtrim($buffer)); + if(trim($buffer) != "MAP" && $buffer != "") + { + $maparray[] = $buffer; + } + } + fclose($abre); + //echo "
";
+	//var_dump($maparray);
+	//exit;
+	$abre = fopen($arq, "wt");
+	foreach($maparray as $linha)
+	{
+		fwrite ($abre,$linha);
+		fwrite ($abre,"\n");
+	}
+	$fecha = fclose ($abre);
+	echo $arquivo."
"; +} + +?> \ No newline at end of file diff --git a/admin/php/menutemas.php b/admin/php/menutemas.php index 1aa06fc..49daa8d 100644 --- a/admin/php/menutemas.php +++ b/admin/php/menutemas.php @@ -90,6 +90,7 @@ switch ($funcao) $dados = pegaDados('SELECT * from i3geoadmin_perfis order by perfil'); if(count($dados) == 0){$dados = array("id_perfil"=>"","perfil"=>"");} retornaJSON($dados); + exit; break; case "alteraMenus": @@ -139,6 +140,8 @@ switch ($funcao) registraTema(); $dados = pegaDados($sql); } + if(count($dados) > 1) + {$dados = "erro. Mais de um mapfile com mesmo código registrado no banco";} retornaJSON($dados); exit; break; @@ -703,7 +706,10 @@ function registraTema() { $retorna = "ok"; include("conexao.php"); - $dbhw->query("INSERT INTO i3geoadmin_temas (nome_tema,codigo_tema,kml_tema,ogc_tema,download_tema,tags_tema,link_tema,desc_tema) VALUES ('$codigo_tema','$codigo_tema','SIM','SIM','SIM','','','')");// (link_tema,kml_tema,ogc_tema,download_tema,nome_tema,desc_tema,codigo_tema,tipoa_tema,tags_tema) VALUES ('','', '','','','','','','')"); + $sql = "SELECT * from i3geoadmin_temas where codigo_tema = '$codigo_tema'"; + $dados = pegaDados($sql); + if(count($dados) == 0) + {$dbhw->query("INSERT INTO i3geoadmin_temas (nome_tema,codigo_tema,kml_tema,ogc_tema,download_tema,tags_tema,link_tema,desc_tema) VALUES ('$codigo_tema','$codigo_tema','SIM','SIM','SIM','','','')");} $dbhw = null; $dbh = null; return "ok"; -- libgit2 0.21.2
Ajusta mapfiles
Descrição do banco padrão (SQLITE)
Criar banco de dados
Gera as miniaturas (thumbnails) para os temas existentes no diretório i3geo/temas