Licenca:
GPL2
i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
Este programa é software livre; você pode redistribuí-lo
e/ou modificá-lo sob os termos da Licença Pública Geral
GNU conforme publicada pela Free Software Foundation;
Este programa é distribuído na expectativa de que seja útil,
porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
Consulte a Licença Pública Geral do GNU para mais detalhes.
Você deve ter recebido uma da Licença Pública Geral do
GNU junto com este programa; se não, escreva para a
Free Software Foundation, Inc., no endereço
59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
Arquivo:
i3geo/admin/php/menutemas.php
Parametros:
O parâmetro principal é "funcao", que define qual operação será executada, por exemplo, menutemas.php?funcao=pegaMenus
Cada operação possuí seus proprios parâmetros, que devem ser enviados também na requisição da operação.
*/
include_once(dirname(__FILE__)."/login.php");
$funcoesEdicao = array(
"ALTERAMENUS",
"ALTERAGRUPOS",
"ALTERASUBGRUPOS",
"ATUALIZAMINIATURA",
"ALTERATEMAS",
"ALTERATAGS",
"ALTERAPERFIS",
"EXCLUIRREGISTRO"
);
if(in_array(strtoupper($funcao),$funcoesEdicao)){
if(verificaOperacaoSessao("admin/html/arvore") == false){
retornaJSON("Vc nao pode realizar essa operacao.");exit;
}
}
$codigo_tema = $_GET["codigo_tema"];
$id = $_GET["id"];
testaSafeNumerico([$id]);
if(!isset($funcao))
{
$funcao = "";
}
if(!isset($idioma))
{
$idioma = "pt";
}
if($idioma == "")
{
$idioma = "pt";
}
//faz a busca da função que deve ser executada
switch (strtoupper($funcao))
{
/*
Note:
Valores que o parâmetro &funcao pode receber. Os parâmetros devem ser enviados na requisição em AJAX.
*/
/*
Valor: PEGAMENUS
Lista de menus contendo todas as colunas
Retorno:
{JSON}
*/
case "PEGAMENUS":
if(isset($id_menu) && $id_menu != "")
{
$dados = pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_menus where id_menu = $id_menu order by nome_menu");
}
else{
$dados = pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_menus order by nome_menu");
}
retornaJSON($dados);
exit;
break;
/*
Valor: PEGAMENUS2
Lista de menus contendo apenas colunas selecionadas
Retorno:
{JSON}
*/
case "PEGAMENUS2":
if($idioma == "pt")
{
$coluna = "nome_menu";
}
else
{$coluna = $idioma;
}
if(isset($id_menu) && $id_menu != "")
{
$dados = pegaDados("SELECT publicado_menu,perfil_menu,aberto,desc_menu,id_menu,$coluna as nome_menu from ".$esquemaadmin."i3geoadmin_menus where id_menu = $id_menu order by nome_menu");
}
else
{$dados = pegaDados("SELECT publicado_menu,perfil_menu,aberto,desc_menu,id_menu,$coluna as nome_menu from ".$esquemaadmin."i3geoadmin_menus order by nome_menu");
}
retornaJSON($dados);
exit;
break;
/*
Valor: PEGATAGS
Lista de tags
Retorno:
{JSON}
*/
case "PEGATAGS":
$sql = "SELECT * from ".$esquemaadmin."i3geoadmin_tags order by nome";
retornaJSON(pegaDados($sql));
exit;
break;
/*
Valor: PEGATAGSPORMAPFILE
Lista de tags por mapfile
Retorno:
{JSON}
*/
case "PEGATAGSPORMAPFILE":
if($idioma == "pt")
{
$coluna = "nome_tema";
}
else
{$coluna = $idioma;
}
$q = pegaDados("select link_tema,tags_tema,codigo_tema,$coluna as nome_tema from ".$esquemaadmin."i3geoadmin_temas");
$temas = array();
$temaExiste = array();
foreach($q as $row)
{
$ts = html_entity_decode($row['tags_tema']);
$i = $row['codigo_tema'];
$nome = $row['nome_tema'];
$link = $row['link_tema'];
$tags = explode(" ",$ts);
foreach($tags as $t)
{
if (removeAcentos($t) == $tag)
{
if(!isset($temaExiste[$i]))
{
$temas[] = array("codigoMap"=>$i,"nome"=>$nome,"link"=>$link);
$temaExiste[$i] = 0;
}
}
}
}
retornaJSON($temas);
exit;
break;
/*
Valor: PEGAPERFIS
Lista de perfis
Retorno:
{JSON}
*/
case "PEGAPERFIS":
$dados = pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_perfis order by perfil");
if(count($dados) == 0){
$dados = array("id_perfil"=>"","perfil"=>"");
}
retornaJSON($dados);
exit;
break;
/*
Valor: ALTERAMENUS
Altera os dados de um menu
Parametros:
nome_menu
desc_menu
id_menu
aberto
perfil_menu
publicado_menu
en_menu
es_menu
it_menu
Retorno:
{JSON}
*/
case "ALTERAMENUS":
$retorna = alteraMenus();
if(isset($id_menu) && $id_menu != ""){
retornaJSON(pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_menus where id_menu = $id_menu order by nome_menu"));
}
else{
retornaJSON($retorna);
}
exit;
break;
/*
Valor: PEGAGRUPOS
Lista de grupos com todas as colunas
Retorno:
{JSON}
*/
case "PEGAGRUPOS":
if(isset($id_grupo) && $id_grupo != "")
{
$dados = pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_grupos WHERE id_grupo = $id_grupo order by nome_grupo");
}
else{
$dados = pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_grupos order by nome_grupo");
}
retornaJSON($dados);
exit;
break;
/*
Valor: PEGAGRUPOS2
Lista de grupos contendo as colunas principais
Retorno:
{JSON}
*/
case "PEGAGRUPOS2":
$nome = "nome_grupo";
if($idioma != "pt"){
$nome = $idioma;
}
$dados = pegaDados("SELECT desc_grupo,id_grupo,$nome as 'nome_grupo' from ".$esquemaadmin."i3geoadmin_grupos order by $nome");
retornaJSON($dados);
exit;
break;
/*
Valor: ALTERAGRUPOS
Altera os dados de um grupo
Parametros:
nome
desc
id
en
es
it
Retorno:
{JSON}
*/
case "ALTERAGRUPOS":
alteraGrupos();
if(isset($id_grupo) && $id_grupo != "") {
retornaJSON(pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_grupos WHERE id_grupo = $id_grupo"));
}
else{
retornaJSON("ok");
}
exit;
break;
/*
Valor: PEGASUBGRUPOS
Lista de subgrupos com todas as colunas
Retorno:
{JSON}
*/
case "PEGASUBGRUPOS":
if(isset($id_subgrupo) && $id_subgrupo != ""){
$dados = pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_subgrupos WHERE id_subgrupo = $id_subgrupo order by nome_subgrupo");
}
else{
$dados = pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_subgrupos order by nome_subgrupo");
}
retornaJSON($dados);
exit;
break;
/*
Valor: PEGASUBGRUPOS2
Lista de grupos contendo as colunas principais
Retorno:
{JSON}
*/
case "PEGASUBGRUPOS2":
$nome = "nome_subgrupo";
if($idioma != "pt"){
$nome = $idioma;
}
$dados = pegaDados("SELECT desc_subgrupo,id_subgrupo,$nome as 'nome_subgrupo' from ".$esquemaadmin."i3geoadmin_subgrupos order by nome_subgrupo");
retornaJSON($dados);
exit;
break;
/*
Valor: ALTERASUBGRUPOS
Altera os dados de um subgrupo
Parametros:
nome
desc
id
en
es
it
Retorno:
{JSON}
*/
case "ALTERASUBGRUPOS":
alteraSubGrupos();
if(isset($id_subgrupo) && $id_subgrupo != "") {
retornaJSON(pegaDados("SELECT * from ".$esquemaadmin."i3geoadmin_subgrupos WHERE id_subgrupo = $id_subgrupo"));
}
else{
retornaJSON("ok");
}
exit;
break;
/*
Valor: PEGATEMAS
Lista de temas com todas as colunas
Retorno:
{JSON}
*/
case "PEGATEMAS":
$sql = "SELECT * from ".$esquemaadmin."i3geoadmin_temas where id_tema = '$id_tema'";
retornaJSON(pegaDados($sql));
exit;
break;
/*
Valor: PEGATEMAPORMAPFILE
Lista os dados de um tema procurando registros com base no nome do mapfile
Parametro:
codigo_tema - nome do mapfile sem ".map"
Retorno:
{JSON}
*/
case "PEGATEMAPORMAPFILE":
$sql = "SELECT * from ".$esquemaadmin."i3geoadmin_temas where codigo_tema = '$codigo_tema'";
$dados = pegaDados($sql);
if(is_array($dados) && count($dados) == 0)
{
registraTema();
$dados = pegaDados($sql);
}
$imagem = "";
if(file_exists($locaplic."/temas/miniaturas/".$codigo_tema.".map.grande.png"))
{
$imagem = $codigo_tema.".map.grande.png";
}
$dados[0]["imagem"] = $imagem;
if(is_array($dados) && count($dados) > 1)
{
$dados = "erro. Mais de um mapfile com mesmo c�digo registrado no banco";
}
retornaJSON($dados);
exit;
break;
/*
Valor: PEGATEMAS2
Lista de temas com as colunas principais
Retorno:
{JSON}
*/
case "PEGATEMAS2":
retornaJSON(pegaTemas2());
exit;
break;
/*
Valor: ATUALIZAMINIATURA
Atualiza as imagens das miniaturas de um tema
Retorno:
{JSON}
*/
case "ATUALIZAMINIATURA":
retornaJSON(atualizaMiniatura($_GET["tema"]));
exit;
break;
/*
Valor: ALTERATEMAS
Altera os dados de um tema
Parametros:
nome
desc
id
codigo
tipoa
download
ogc
kml
link
tags
kmz
locaplic
Retorno:
{JSON}
*/
case "ALTERATEMAS":
//$r será igual ao novo id criado, no caso de inserção de um novo tema
$r = alteraTemas();
if($id == ""){
retornaJSON($r);
}
else{
retornaJSON(pegaDados("select * from ".$esquemaadmin."i3geoadmin_temas where id_tema = $id"));
}
exit;
break;
/*
Valor: ALTERATAGS
Altera os dados de um tag
Parametros:
nome
id
Retorno:
{JSON}
*/
case "ALTERATAGS":
$novo = alteraTags();
$sql = "SELECT * from ".$esquemaadmin."i3geoadmin_tags WHERE id_tag = '".$novo."'";
retornaJSON(pegaDados($sql));
exit;
break;
/*
Valor: ALTERAPERFIS
Altera os dados de um perfil
Parametros:
perfil
id
Retorno:
{JSON}
*/
case "ALTERAPERFIS":
$novo = alteraPerfis();
$sql = "SELECT * from ".$esquemaadmin."i3geoadmin_perfis WHERE id_perfil = '".$novo."'";
retornaJSON(pegaDados($sql));
exit;
break;
case "EXCLUIRREGISTRO":
$tabela = $_GET["tabela"];
if($tabela == "grupos")
{
$tabela = "i3geoadmin_grupos";
$coluna = "id_grupo";
$filhos = verificaFilhos();
if($filhos)
{
retornaJSON("erro");
exit;
}
}
if($tabela == "tags")
{
$tabela = "i3geoadmin_tags";
$coluna = "id_tag";
//excluiTagTemas($id);
}
if($tabela == "perfis")
{
$tabela = "i3geoadmin_perfis";
$coluna = "id_perfil";
excluiPerfil($id);
}
if($tabela == "subgrupos")
{
$tabela = "i3geoadmin_subgrupos";
$coluna = "id_subgrupo";
$filhos = verificaFilhos();
if($filhos)
{
retornaJSON("erro");
exit;
}
}
if($tabela == "temas")
{
$tabela = "i3geoadmin_temas";
$coluna = "id_tema";
$filhos = verificaFilhos();
if($filhos)
{
retornaJSON("erro");
exit;
}
}
if($tabela == "menus")
{
$tabela = "i3geoadmin_menus";
$coluna = "id_menu";
$filhos = verificaFilhos();
if($filhos){
retornaJSON("erro");
exit;
}
}
retornaJSON(exclui($esquemaadmin.$tabela,$coluna,$id));
exit;
break;
case "LISTAMAPSTEMAS":
retornaJSON(listaMapsTemas());
exit;
break;
/*
Valor: VERIFICAORFAOS
Verifica se existem temas sem o correspondente mapfile
Retorno:
{JSON}
*/
case "VERIFICAORFAOS":
retornaJSON(verificaOrfaos());
exit;
break;
}
function excluiPerfil($id)
{
global $esquemaadmin;
require_once("conexao.php");
$perfil = "";
foreach($dbh->query("select * from ".$esquemaadmin."i3geoadmin_perfis where perfil = '$id'") as $row){
$perfil = $row["perfil"];
}
if($perfil == ""){
return;
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_mapas");
foreach($q as $row){
$t = $row['perfil_mapa'];
$i = $row['id_mapa'];
$ts = str_replace($perfil,"",$t);
if($t != $ts){
$dataCol = array(
"perfil_mapa" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_mapas",$dataCol,"WHERE id_mapa = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_menus");
foreach($q as $row){
$t = $row['perfil_menu'];
$i = $row['id_menu'];
$ts = str_replace($perfil,"",$t);
if($t != $ts){
$dataCol = array(
"perfil_menu" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_menus",$dataCol,"WHERE id_menu = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_n1");
foreach($q as $row){
$t = $row['perfil_n1'];
$i = $row['id_n1'];
$ts = str_replace($perfil,"",$t);
if($t != $ts){
$dataCol = array(
"perfil_n1" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_n1",$dataCol,"WHERE id_n1 = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_n2");
foreach($q as $row){
$t = $row['perfil_n2'];
$i = $row['id_n2'];
$ts = str_replace($perfil,"",$t);
if($t != $ts){
$dataCol = array(
"perfil_n2" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_n2",$dataCol,"WHERE id_n2 = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_n3");
foreach($q as $row){
$t = $row['perfil_n3'];
$i = $row['id_n3'];
$ts = str_replace($perfil,"",$t);
if($t != $ts){
$dataCol = array(
"perfil_n3" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_n3",$dataCol,"WHERE id_n3 = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_raiz");
foreach($q as $row){
$t = $row['perfil'];
$i = $row['id_raiz'];
$ts = str_replace($perfil,"",$t);
if($t != $ts){
$dataCol = array(
"perfil" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_raiz",$dataCol,"WHERE id_raiz = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_sistemasf");
foreach($q as $row){
$t = $row['perfil_funcao'];
$i = $row['id_funcao'];
$ts = str_replace($perfil,"",$t);
if($t != $ts){
$dataCol = array(
"perfil_funcao" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_sistemasf",$dataCol,"WHERE id_funcao = $i");
}
}
}
function excluiTagTemas($id)
{
global $esquemaadmin;
require_once("conexao.php");
$q1 = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_tags where id_tag = $id");
foreach($q1 as $row){
$nometag = $row["nome"];
}
if($nometag == ""){
return;
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_temas");
foreach($q as $row){
$t = $row['tags_tema'];
$i = $row['id_tema'];
$ts = str_replace($nometag,"",$t);
if($t != $ts){
$dataCol = array(
"tags_tema" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_temas",$dataCol,"WHERE id_tema = $i");
}
}
}
/*
Pega a lista de temas
Parameters:
filtro - texto para filtrar os dados
*/
function pegaTemas()
{
global $esquemaadmin;
try
{
$resultado = array();
require_once("conexao.php");
foreach($dbh->query("SELECT * from ".$esquemaadmin."i3geoadmin_temas order by nome_tema") as $row)
{
$continua = true;
if(isset($_GET["filtro"]) && $_GET["filtro"] != "")
{
$continua = false;
if ($row['codigo_tema'] == $_GET["filtro"])
{
$continua = true;
}
$testanome = mb_convert_encoding($_GET["filtro"],"UTF-8","ISO-8859-1");
if (!stristr($row['nome_tema'],$testanome) === FALSE)
{
$continua = true;
}
if (!stristr($row['tags_tema'],$testanome) === FALSE)
{
$continua = true;
}
}
if($row['codigo_tema'] == ""){
$continua = true;
}
if ($continua)
$resultado[] = array(
"nome_tema"=>$row['nome_tema'],
"codigo_tema"=>$row['codigo_tema'],
"id_tema"=>$row['id_tema'],
"desc_tema"=>$row['desc_tema'],
"link_tema"=>$row['link_tema'],
"tipoa_tema"=>$row['tipoa_tema'],
"download_tema"=>$row['download_tema'],
"ogc_tema"=>$row['ogc_tema'],
"kml_tema"=>$row['kml_tema'],
"kmz_tema"=>$row['kmz_tema'],
"tags_tema"=>$row['tags_tema']
);
}
$dbh = null;
$dbh = null;
return $resultado;
}
catch (PDOException $e)
{
return "Error!: ";
}
}
function pegaTemas2()
{
global $esquemaadmin;
try
{
$resultado = array();
require_once("conexao.php");
foreach($dbh->query("SELECT codigo_tema,nome_tema,id_tema from ".$esquemaadmin."i3geoadmin_temas order by nome_tema") as $row)
{
$continua = true;
if(isset($_GET["filtro"]) && $_GET["filtro"] != "")
{
$continua = false;
if ($row['codigo_tema'] == $_GET["filtro"])
{
$continua = true;
}
$testanome = mb_convert_encoding($_GET["filtro"],"UTF-8","ISO-8859-1");
if (!stristr($row['nome_tema'],$testanome) === FALSE)
{
$continua = true;
}
}
if($row['codigo_tema'] == ""){
$continua = true;
}
if ($continua)
$resultado[] = array(
"nome_tema"=>$row['nome_tema'],
"codigo_tema"=>$row['codigo_tema'],
"id_tema"=>$row['id_tema']
);
}
$dbh = null;
$dbh = null;
return $resultado;
}
catch (PDOException $e)
{
return "Error!: ";
}
}
/*
Altera o registro de um menu. Se id for vazio acrescenta o registro
*/
function alteraMenus()
{
global $esquemaadmin,$id_menu;
$en = $_GET["en"];
$es = $_GET["es"];
$it = $_GET["it"];
try
{
$retorna = "";
include("conexao.php");
if($convUTF){
$_GET["nome_menu"] = utf8_encode($_GET["nome_menu"]);
$_GET["desc_menu"] = utf8_encode($_GET["desc_menu"]);
$en = utf8_encode($en);
$es = utf8_encode($es);
$it = utf8_encode($it);
}
if($id_menu != ""){
$dataCol = array(
"en" => $en,
"es" => $es,
"it" => $it,
"publicado_menu" => $_GET["publicado_menu"],
"aberto" => $_GET["aberto"],
"nome_menu" => $_GET["nome_menu"],
"desc_menu" => $_GET["desc_menu"],
"perfil_menu" => $_GET["perfil_menu"]
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_menus",$dataCol,"WHERE id_menu = $id_menu");
$retorna = "ok";
}
else{
$dataCol = array(
"en" => "",
"es" => "",
"it" => "",
"publicado_menu" => "",
"aberto" => "SIM",
"nome_menu" => "",
"desc_menu" => "",
"perfil_menu" => ""
);
$retorna = i3GeoAdminInsertUnico($dbhw,"i3geoadmin_menus",$dataCol,"nome_menu","id_menu");
}
$dbhw = null;
$dbh = null;
return $retorna;
}
catch (PDOException $e){
return "Error!: ";
}
}
function alteraPerfis(){
global $perfil,$id,$esquemaadmin;
try
{
$dbh = "";
include("conexao.php");
if($convUTF) $perfil = utf8_encode($perfil);
$retorna = "";
if($id != ""){
$original = "";
foreach($dbh->query("select * from ".$esquemaadmin."i3geoadmin_perfis where id_perfil = $id") as $row){
$original = $row["perfil"];
}
$dataCol = array(
"perfil" => $perfil
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_perfis",$dataCol,"WHERE id_perfil = $id");
if($original != ""){
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_mapas");
foreach($q as $row){
$t = $row['perfil_mapa'];
$i = $row['id_mapa'];
$ts = str_replace($original,$perfil,$t);
if($t != $ts){
$dataCol = array(
"perfil_mapa" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_mapas",$dataCol,"WHERE id_mapa = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_menus");
foreach($q as $row){
$t = $row['perfil_menu'];
$i = $row['id_menu'];
$ts = str_replace($original,$perfil,$t);
if($t != $ts){
$dataCol = array(
"perfil_menu" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_menus",$dataCol,"WHERE id_menu = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_n1");
foreach($q as $row){
$t = $row['n1_perfil'];
$i = $row['id_n1'];
$ts = str_replace($original,$perfil,$t);
if($t != $ts){
$dataCol = array(
"n1_perfil" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_n1",$dataCol,"WHERE id_n1 = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_n2");
foreach($q as $row){
$t = $row['n2_perfil'];
$i = $row['id_n2'];
$ts = str_replace($original,$perfil,$t);
if($t != $ts){
$dataCol = array(
"n2_perfil" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_n2",$dataCol,"WHERE id_n2 = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_n3");
foreach($q as $row){
$t = $row['n3_perfil'];
$i = $row['id_n3'];
$ts = str_replace($original,$perfil,$t);
if($t != $ts){
$dataCol = array(
"n3_perfil" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_n3",$dataCol,"WHERE id_n3 = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_raiz");
foreach($q as $row){
$t = $row['perfil'];
$i = $row['id_raiz'];
$ts = str_replace($original,$perfil,$t);
if($t != $ts){
$dataCol = array(
"perfil" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_raiz",$dataCol,"WHERE id_raiz = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_sistemas");
foreach($q as $row)
{
$t = $row['perfil_sistema'];
$i = $row['id_sistema'];
$ts = str_replace($original,$perfil,$t);
if($t != $ts){
$dataCol = array(
"perfil_sistema" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_sistemas",$dataCol,"WHERE id_sistema = $i");
}
}
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_sistemasf");
foreach($q as $row){
$t = $row['perfil_funcao'];
$i = $row['id_funcao'];
$ts = str_replace($original,$perfil,$t);
if($t != $ts){
$dataCol = array(
"perfil_funcao" => $ts
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_sistemasf",$dataCol,"WHERE id_funcao = $i");
}
}
}
$retorna = $id;
}
else{
$dataCol = array(
"perfil" => $perfil
);
i3GeoAdminInsert($dbhw,"i3geoadmin_perfis",$dataCol);
$id = $dbh->query("SELECT * FROM ".$esquemaadmin."i3geoadmin_perfis");
$id = $id->fetchAll();
$id = intval($id[count($id)-1]['id_perfil']);
$retorna = $id;
}
$dbhw = null;
$dbh = null;
return $retorna;
}
catch (PDOException $e){
return "Error!: ";
}
}
function alteraTags(){
global $id,$esquemaadmin;
$nome = $_GET["nome"];
try{
$dbh = "";
include("conexao.php");
if($convUTF) $nome = utf8_encode($nome);
$retorna = "";
if($id != ""){
if(!verificaDuplicados("select * from ".$esquemaadmin."i3geoadmin_tags where nome = '$nome'",$dbh)){
$original = "";
$q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_tags where id_tag = $id");
foreach($q as $row){
$original = $row["nome"];
}
$dataCol = array(
"nome" => $nome
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_tags",$dataCol,"WHERE id_tag = $id");
}
$retorna = $id;
}
else{
$dataCol = array(
"nome" => $nome
);
i3GeoAdminInsert($dbhw,"i3geoadmin_tags",$dataCol);
$id = $dbh->query("SELECT * FROM ".$esquemaadmin."i3geoadmin_tags");
$id = $id->fetchAll();
$id = intval($id[count($id)-1]['id_tag']);
$retorna = $id;
}
$dbhw = null;
$dbh = null;
return $retorna;
}
catch (PDOException $e){
return "Error!: ";
}
}
/*
Altera o registro de um grupo. Se id for vazio acrescenta o registro
*/
function alteraGrupos()
{
global $id_grupo,$esquemaadmin;
try{
require(dirname(__FILE__)."/conexao.php");
if($convUTF){
$_GET["nome_grupo"] = utf8_encode($_GET["nome_grupo"]);
$_GET["desc_grupo"] = utf8_encode($_GET["desc_grupo"]);
$_GET["en"] = utf8_encode($_GET["en"]);
$_GET["es"] = utf8_encode($_GET["es"]);
$_GET["it"] = utf8_encode($_GET["it"]);
}
if($id_grupo != ""){
$dataCol = array(
"en" => $_GET["en"],
"es" => $_GET["es"],
"it" => $_GET["it"],
"nome_grupo" => $_GET["nome_grupo"],
"desc_grupo" => $_GET["desc_grupo"]
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_grupos",$dataCol,"WHERE id_grupo = $id_grupo");
}
else{
$dataCol = array(
"nome_grupo" => $_GET["nome_grupo"],
"desc_grupo" => "",
"en" => "",
"es" => "",
"it" => ""
);
$id_grupo = i3GeoAdminInsertUnico($dbhw,"i3geoadmin_grupos",$dataCol,"nome_grupo","id_grupo");
}
$dbhw = null;
$dbh = null;
return $id_grupo;
}
catch (PDOException $e){
return "Error!: ";
}
}
/*
Altera o registro de um sub-grupo. Se id for vazio acrescenta o registro
*/
function alteraSubGrupos()
{
global $id_subgrupo,$esquemaadmin;
try{
require(dirname(__FILE__)."/conexao.php");
if($convUTF){
$_GET["nome_subgrupo"] = utf8_encode($_GET["nome_subgrupo"]);
$_GET["desc_subgrupo"] = utf8_encode($_GET["desc_subgrupo"]);
$_GET["en"] = utf8_encode($_GET["en"]);
$_GET["es"] = utf8_encode($_GET["es"]);
$_GET["it"] = utf8_encode($_GET["it"]);
}
$retorna = "";
if($id_subgrupo != ""){
$dataCol = array(
"en" => $_GET["en"],
"es" => $_GET["es"],
"it" => $_GET["it"],
"nome_subgrupo" => $_GET["nome_subgrupo"],
"desc_subgrupo" => $_GET["desc_subgrupo"]
);
i3GeoAdminUpdate($dbhw,"i3geoadmin_subgrupos",$dataCol,"WHERE id_subgrupo = $id_subgrupo");
}
else{
$dataCol = array(
"nome_subgrupo" => $_GET["nome_subgrupo"],
"desc_subgrupo" => "",
"en" => "",
"es" => "",
"it" => ""
);
$id_subgrupo = i3GeoAdminInsertUnico($dbhw,"i3geoadmin_subgrupos",$dataCol,"nome_subgrupo","id_subgrupo");
}
$dbhw = null;
$dbh = null;
return $id_subgrupo;
}
catch (PDOException $e)
{
return "Error!: ";
}
}
/*
Registra um mapfile na tabela de temas
*/
function registraTema()
{
global $codigo_tema,$esquemaadmin;
try
{
$retorna = "ok";
include("conexao.php");
$sql = "SELECT * from ".$esquemaadmin."i3geoadmin_temas where codigo_tema = '$codigo_tema'";
$dados = pegaDados($sql);
if(count($dados) == 0){
$dataCol = array(
"tipoa_tema" => '',
"nome_tema" => $codigo_tema,
"codigo_tema" => $codigo_tema,
"kml_tema" => 'SIM',
"kmz_tema" => 'NAO',
"ogc_tema" => 'SIM',
"download_tema" => 'SIM',
"tags_tema" => '',
"link_tema" => '',
"desc_tema" => ''
);
i3GeoAdminInsert($dbhw,"i3geoadmin_temas",$dataCol);
}
$dbhw = null;
$dbh = null;
return "ok";
}
catch (PDOException $e){
return "Error!: ";
}
}
/*
Altera o registro de um tema. Se id for vazio acrescenta o registro
*/
function alteraTemas()
{
global $esquemaadmin,$id,$locaplic;
//error_reporting(0);
try{
$retorna = "ok";
include("conexao.php");
$nomeo = $_GET["nome"];
if($convUTF){
$_GET["nome"] = utf8_encode($_GET["nome"]);
$_GET["desc"] = utf8_encode($_GET["desc"]);
$_GET["tags"] = utf8_encode($_GET["tags"]);
$_GET["en"] = utf8_encode($_GET["en"]);
$_GET["es"] = utf8_encode($_GET["es"]);
$_GET["it"] = utf8_encode($_GET["it"]);
}
if($id != ""){
$dataCol = array(
"en" => $_GET["en"],
"es" => $_GET["es"],
"it" => $_GET["it"],
"tags_tema" => $_GET["tags"],
"link_tema" => $_GET["link"],
"nome_tema" => $_GET["nome"],
"desc_tema" => $_GET["desc"],
"codigo_tema" => $_GET["codigo"],
"tipoa_tema" => $_GET["tipoa"],
"download_tema" => $_GET["download"],
"ogc_tema" => $_GET["ogc"],
"kml_tema" => $_GET["kml"]
);
if(isset($_GET["kmz"])){
$dataCol["kmz_tema"] = $_GET["kmz"];
}
i3GeoAdminUpdate($dbhw,"i3geoadmin_temas",$dataCol,"WHERE id_tema = $id");
$retorna = $id;
if(!isset($_GET["kmz"])){
$_GET["kmz"] = "nao";
}
$sql = "SELECT * from ".$esquemaadmin."i3geoadmin_temas where id_tema = $id";
$q = $dbh->query($sql,PDO::FETCH_ASSOC);
$resultado = $q->fetchAll();
$mapfile = $resultado[0]["codigo_tema"];
if(file_exists($locaplic."/temas/".$mapfile.".map")){
$mapfile = $locaplic."/temas/".$mapfile.".map";
if($mapa = @ms_newMapObj($mapfile)){
$mapa = ms_newMapObj($mapfile);
$numlayers = $mapa->numlayers;
for ($i=0;$i < $numlayers;$i++){
$layer = $mapa->getlayer($i);
$layer->setmetadata("permitedownload",strtolower($_GET["download"]));
$layer->setmetadata("download",strtolower($_GET["download"]));
$layer->setmetadata("permiteogc",strtolower($_GET["ogc"]));
$layer->setmetadata("permitekml",strtolower($_GET["kml"]));
$layer->setmetadata("permitekmz",strtolower($_GET["kmz"]));
//zera os metadados do sistema METAESTAT
if($_GET["tipoa"] != "META"){
$layer->setmetadata("METAESTAT_CODIGO_TIPO_REGIAO","");
$layer->setmetadata("METAESTAT_ID_MEDIDA_VARIAVEL","");
$layer->setmetadata("metaestat","");
}
if(count($_GET["nomes"]) == 1){
$layer->setmetadata("tema",$nomeo);
}
}
$mapa->save($mapfile);
removeCabecalho($mapfile);
}
}
}
else{
$dataCol = array(
"en" => "",
"es" => "",
"it" => "",
"tags_tema" => "",
"link_tema" => "",
"nome_tema" => "",
"desc_tema" => "",
"codigo_tema" => "",
"tipoa_tema" => "",
"download_tema" => "",
"ogc_tema" => "",
"kml_tema" => ""
);
if(isset($kmz)){
$dataCol["kmz_tema"] = "";
}
$retorna = i3GeoAdminInsertUnico($dbhw,"i3geoadmin_temas",$dataCol,"nome_tema","id_tema");
}
//verifica se é necessário adicionar algum tag novo
$_GET["tags"] = explode(" ",$_GET["tags"]);
foreach($_GET["tags"] as $tag){
if(!(verificaDuplicados("select * from ".$esquemaadmin."i3geoadmin_tags where nome = '$tag'",$dbh))){
$dataCol = array(
"nome" => $tag
);
i3GeoAdminInsert($dbhw,"i3geoadmin_tags",$dataCol);
}
}
$dbhw = null;
$dbh = null;
return $retorna;
}
catch (PDOException $e){
return "Error!: ";
}
}
/*
Retorna a lista de mapfiles do diretorio i3geo/temas
*/
function listaMapsTemas()
{
global $locaplic,$esquemaadmin;
$arquivos = array();
if (is_dir($locaplic."/temas"))
{
if ($dh = opendir($locaplic."/temas"))
{
$extensao = "";
while (($file = readdir($dh)) !== false)
{
$extensao = "";
if(!stristr($file, '.map') === FALSE){
$extensao = "map";
}
if(!stristr($file, '.php') === FALSE){
//$extensao = "php";
}
if(!stristr($file, '.gvp') === FALSE){
$extensao = "gvp";
}
if($extensao != "")
{
$file = str_replace(".".$extensao,"",$file);
if(isset($_GET["letra"]) && $_GET["letra"] != "")
{
if(strtolower(substr(basename($file),0,strlen($_GET["letra"]))) == strtolower($_GET["letra"])){
$arquivos[] = array("nome"=>$file,"extensao"=>$extensao);
}
}
else
{$arquivos[] = array("nome"=>$file,"extensao"=>$extensao);
}
}
$extensao = "";
}
}
closedir($dh);
}
sort($arquivos);
//
//pega o nome de cada tema filtrando a listagem se for o caso
//
$sql = "select * from ".$esquemaadmin."i3geoadmin_temas ";
$filtro = $_GET["filtro"];
if(isset($filtro) && $filtro != ""){
$filtro = explode(",",$filtro);
$filtro = $filtro[0]." ".$filtro[1]." '".$filtro[2]."' or ".$filtro[0]." ".$filtro[1]." '".strtoupper($filtro[2])."'";
$sql .= "where $filtro";
}
$dbh = "";
include($locaplic."/admin/php/conexao.php");
$q = $dbh->query($sql,PDO::FETCH_ASSOC);
$regs = $q->fetchAll();
//pega os grupos de usuarios que podem acessar o tema
$grpids = array();
$sql = "select nome,descricao,a.id_grupo,id_tema from ".$esquemaadmin."i3geousr_grupotema as a,".$esquemaadmin."i3geousr_grupos as b where a.id_grupo = b.id_grupo";
$q = $dbh->query($sql,PDO::FETCH_ASSOC);
if($q){
$gs = $q->fetchAll();
//agrupa o array
foreach($gps as $g){
array_push($grpids[$g["id_tema"]],array("id_grupo"=>$g["id_grupo"],"nome"=>$g["nome"],"descricao"=>$g["descricao"]));
}
}
$nomes = array();
$ids = array();
foreach($regs as $reg){
$nomes[$reg["codigo_tema"]] = $reg["nome_tema"];
$ids[$reg["codigo_tema"]] = $reg["id_tema"];
}
$lista = array();
foreach($arquivos as $arq){
$extensao = $arq["extensao"];
$arq = $arq["nome"];
$nT = explode(".",$arq);
$n = $nomes[$nT[0]];
if(!$n){
$n = "";
}
$id = $ids[$nT[0]];
if(!$id){
$id = "";
}
//pega os grupos de usuarios
$grupousr = $grpids[$id];
if(!$grupousr){
$grupousr = "";
}
$imagem = "";
if(file_exists($locaplic."/temas/miniaturas/".$arq.".map.mini.png")){
$imagem = $arq.".map.mini.png";
}
if($_GET["checaNomes"] == "true"){
if($extensao == "map"){
if(file_exists($locaplic."/temas/".$arq.".map")){
$handle = fopen($locaplic."/temas/".$arq.".map", "r");
while (!feof($handle)){
$linha = fgets($handle);
if(stripos($linha,"'TEMA'") !== false || stripos($linha,'"TEMA"') !== false){
$ntema = str_replace(array("'TEMA'",'"TEMA"',"'tema'",'"tema"'),"",$linha);
$ntema = trim(str_replace(array("'",'"'),"",$ntema));
if($n != $ntema && $n != utf8_encode($ntema) && $n != ""){
$n .= "".utf8_encode($ntema)."";
}
break;
}
}
fclose($handle);
}
}
}
if($_GET["checaNames"] == "true"){
if($extensao == "map"){
if(file_exists($locaplic."/temas/".$arq.".map")){
$handle = fopen($locaplic."/temas/".$arq.".map", "r");
//deve buscar dentro de LAYER pois pode haver simbolos antes
$elayer = false;
while (!feof($handle)){
$linha = trim(fgets($handle));
if(stripos($linha,"LAYER") === 0){
$elayer = true;
}
if($elayer == true && stripos($linha,"NAME") === 0){
$ntema = ltrim($linha,"NAMEname");
$ntema = trim(str_replace(array("'",'"'),"",$ntema));
if($arq != $ntema){
$n .= "
";
}
break;
}
}
fclose($handle);
}
}
}
if(isset($filtro) && $filtro != "" && $n != ""){
$lista[] = array("grupousr"=>$grupousr,"id_tema"=>$id,"nome"=>$n,"codigo"=>$arq,"imagem"=>$imagem,"extensao"=>$extensao);
}
if(!isset($filtro) || $filtro == ""){
$lista[] = array("grupousr"=>$grupousr,"id_tema"=>$id,"nome"=>$n,"codigo"=>$arq,"imagem"=>$imagem,"extensao"=>$extensao);
}
}
return $lista;
}
/*
Retorna a lista de temas sem mapfiles
*/
function verificaOrfaos()
{
global $locaplic,$esquemaadmin;
$arquivos = array();
//
//pega o nome de cada tema
//
$sql = "select nome_tema,codigo_tema,id_tema from ".$esquemaadmin."i3geoadmin_temas ";
$dbh = "";
include($locaplic."/admin/php/conexao.php");
$q = $dbh->query($sql,PDO::FETCH_ASSOC);
$regs = $q->fetchAll();
$nomes = array();
foreach($regs as $reg){
if(!file_exists($locaplic."/temas/".$reg["codigo_tema"].".map") && !file_exists($locaplic."/temas/".$reg["codigo_tema"].".php")){
$nomes[] = array("nome_tema"=>$reg["nome_tema"],"codigo_tema"=>$reg["codigo_tema"],"id_tema"=>$reg["id_tema"]);
}
}
sort($nomes);
return $nomes;
}
function removeCabecalho($arq,$symbolset=true)
{
$handle = fopen($arq, "r");
if ($handle)
{
$cabeca = array();
if($symbolset)
{
$cabeca[] = "MAP\n";
}
$grava = false;
while (!feof($handle))
{
$linha = fgets($handle);
if($symbolset)
{
if(strpos(strtoupper($linha),"SYMBOLSET") !== false)
{
$cabeca[] = $linha;
}
if(strpos(strtoupper($linha),"FONTSET") !== false)
{
$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);
}
function atualizaMiniatura(){
global $locaplic;
$tipo = "foo";
include_once(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
require(dirname(__FILE__)."/../../geraminiatura.php");
verificaMiniatura($_GET["tema"],"todos",true);
return "ok";
}
?>