set_data(verificaEditores($editores));
$cp->return_data();
break;
case "importarXmlMenu":
$cp->set_data(importarXmlMenu());
$cp->return_data();
break;
case "pegaMenus":
$cp->set_data(pegaDados('SELECT * from i3geoadmin_menus order by nome_menu'));
$cp->return_data();
break;
case "pegaTags":
$cp->set_data(pegaDados('SELECT * from i3geoadmin_tags order by nome'));
$cp->return_data();
break;
case "alteraMenus":
$cp->set_data(alteraMenus());
$cp->return_data();
break;
case "pegaGrupos":
$cp->set_data(pegaDados('SELECT * from i3geoadmin_grupos order by nome_grupo'));
$cp->return_data();
break;
case "alteraGrupos":
$cp->set_data(alteraGrupos());
$cp->return_data();
break;
case "pegaSubGrupos":
$cp->set_data(pegaDados('SELECT * from i3geoadmin_subgrupos order by nome_subgrupo'));
$cp->return_data();
break;
case "alteraSubGrupos":
$cp->set_data(alteraSubGrupos());
$cp->return_data();
break;
case "pegaTemas":
$cp->set_data(pegaTemas());
$cp->return_data();
break;
case "alteraTemas":
$cp->set_data(alteraTemas());
$cp->return_data();
break;
case "alteraTags":
$cp->set_data(alteraTags());
$cp->return_data();
break;
case "pegaSubXGrupos":
$cp->set_data(pegaSubXGrupos());
$cp->return_data();
break;
case "excluirRegistro":
if($tabela == "grupos")
{$tabela = "i3geoadmin_grupos";$coluna = "id_grupo";}
if($tabela == "tags")
{excluiTagTemas($id);$tabela = "i3geoadmin_tags";$coluna = "id_tag";}
if($tabela == "subgrupos")
{$tabela = "i3geoadmin_subgrupos";$coluna = "id_subgrupo";}
if($tabela == "temas")
{$tabela = "i3geoadmin_temas";$coluna = "id_tema";}
if($tabela == "menus")
{$tabela = "i3geoadmin_menus";$coluna = "id_menu";}
$cp->set_data(exclui());
$cp->return_data();
break;
case "listaMapsTemas":
$cp->set_data(listaMapsTemas());
$cp->return_data();
break;
}
function excluiTagTemas($id)
{
require_once("conexao.php");
foreach($dbh->query("select * from i3geoadmin_tags where id_tag = $id") as $row)
{$nometag = $row["nome"];}
foreach($dbh->query("select * from i3geoadmin_temas") as $row)
{
$ts = $row['tags_tema'];
$i = $row['id_tema'];
$ts = str_replace($nometag,"",$ts);
$dbh->query("UPDATE i3geoadmin_temas SET tags_tema = '$ts' WHERE id_tema = $i");
}
}
/*
Function: pegaTemas
Pega a lista de temas
Parameters:
filtro - texto para filtrar os dados
*/
function pegaTemas()
{
global $filtro;
try
{
$resultado = array();
require_once("conexao.php");
foreach($dbh->query('SELECT * from i3geoadmin_temas order by nome_tema') as $row)
{
$continua = true;
if(isset($filtro) && $filtro != "")
{
$continua = false;
if ($row['codigo_tema'] == $filtro)
{$continua = true;}
$testanome = mb_convert_encoding($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'],
"tags_tema"=>$row['tags_tema']
);
}
$dbh = null;
return $resultado;
}
catch (PDOException $e)
{
return "Error!: " . $e->getMessage();
}
}
/*
Function: pegaSubXGrupos
Pega a lista de sub-grupos por grupos
*/
function pegaSubXGrupos()
{
/*
select i3geoadmin_subxgrupos.id_subxgrupo,i3geoadmin_grupos.nome_grupo,i3geoadmin_subgrupos.nome_subgrupo
from
i3geoadmin_grupos,i3geoadmin_subgrupos,i3geoadmin_subxgrupos
where
i3geoadmin_grupos.id_grupo = i3geoadmin_subxgrupos.id_grupo
and
i3geoadmin_subgrupos.id_subgrupo = i3geoadmin_subxgrupos.id_subgrupo
order by nome_grupo,nome_subgrupo
*/
}
/*
Function: alteraMenus
Altera o registro de um menu. Se id for vazio acrescenta o registro
*/
function alteraMenus()
{
global $nome,$desc,$id,$aberto,$perfil;
try
{
$nome = mb_convert_encoding($nome,"UTF-8","ISO-8859-1");
$desc = mb_convert_encoding($desc,"UTF-8","ISO-8859-1");
include("conexao.php");
if($id != "")
{
$dbh->query("UPDATE i3geoadmin_menus SET aberto = '$aberto', nome_menu = '$nome', desc_menu = '$desc', perfil_menu = '$perfil' WHERE id_menu = $id");
}
else
$dbh->query("INSERT INTO i3geoadmin_menus (nome_menu, desc_menu, aberto, perfil_menu) VALUES ('', '','sim','')");
$dbh = null;
return "ok";
}
catch (PDOException $e)
{
return "Error!: " . $e->getMessage();
}
}
function alteraTags()
{
global $nome,$id;
try
{
$dbh = "";
$nome = mb_convert_encoding($nome,"UTF-8","ISO-8859-1");
include("conexao.php");
if($id != "")
{
if(!verificaDuplicados("select * from i3geoadmin_tags where nome = '$nome'",$dbh))
{
$original = "";
foreach($dbh->query("select * from i3geoadmin_tags where id_tag = $id") as $row)
{$original = $row["nome"];}
$dbh->query("UPDATE i3geoadmin_tags SET nome = '$nome' WHERE id_tag = $id");
//exclui os registros do tag alterado nos temas
foreach($dbh->query("select * from i3geoadmin_temas") as $row)
{
$ts = $row['tags_tema'];
$i = $row['id_tema'];
$ts = str_replace($original,$nome,$ts);
$dbh->query("UPDATE i3geoadmin_temas SET tags_tema = '$ts' WHERE id_tema = $i");
}
}
}
else
$dbh->query("INSERT INTO i3geoadmin_tags (nome) VALUES ('$nome')");
$dbh = null;
return "ok";
}
catch (PDOException $e)
{
return "Error!: " . $e->getMessage();
}
}
/*
Function: alteraGrupos
Altera o registro de um grupo. Se id for vazio acrescenta o registro
*/
function alteraGrupos()
{
global $nome,$desc,$id;
try
{
$nome = mb_convert_encoding($nome,"UTF-8","ISO-8859-1");
$desc = mb_convert_encoding($desc,"UTF-8","ISO-8859-1");
include("conexao.php");
if($id != "")
{
$dbh->query("UPDATE i3geoadmin_grupos SET nome_grupo = '$nome', desc_grupo = '$desc' WHERE id_grupo = $id");
}
else
$dbh->query("INSERT INTO i3geoadmin_grupos (nome_grupo, desc_grupo) VALUES ('', '')");
$dbh = null;
return "ok";
}
catch (PDOException $e)
{
return "Error!: " . $e->getMessage();
}
}
/*
Function: alteraSubGrupos
Altera o registro de um sub-grupo. Se id for vazio acrescenta o registro
*/
function alteraSubGrupos()
{
global $nome,$desc,$id;
try
{
$nome = mb_convert_encoding($nome,"UTF-8","ISO-8859-1");
$desc = mb_convert_encoding($desc,"UTF-8","ISO-8859-1");
require_once("conexao.php");
if($id != "")
{
$dbh->query("UPDATE i3geoadmin_subgrupos SET nome_subgrupo = '$nome', desc_subgrupo = '$desc' WHERE id_subgrupo = $id");
}
else
$dbh->query("INSERT INTO i3geoadmin_subgrupos (nome_subgrupo, desc_subgrupo) VALUES ('', '')");
$dbh = null;
return "ok";
}
catch (PDOException $e)
{
return "Error!: " . $e->getMessage();
}
}
/*
Function: alteraTemas
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;
try
{
$nome = mb_convert_encoding($nome,"UTF-8","ISO-8859-1");
$desc = mb_convert_encoding($desc,"UTF-8","ISO-8859-1");
$tags = mb_convert_encoding($tags,"UTF-8","ISO-8859-1");
require_once("conexao.php");
if($id != "")
{
$dbh->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' WHERE id_tema = $id");
}
else
$dbh->query("INSERT INTO i3geoadmin_temas (link_tema,kml_tema,ogc_tema,download_tema,nome_tema,desc_tema,codigo_tema,tipoa_tema,tags_tema) VALUES ('','', '','','','','','','')");
//verifica se é necessário adicionar algum tag novo
$tags = explode(" ",$tags);
foreach($tags as $tag)
{
if(!(verificaDuplicados("select * from i3geoadmin_tags where nome = '$tag'",$dbh)))
{
$dbh->query("INSERT INTO i3geoadmin_tags (nome) VALUES ('$tag')");
}
}
$dbh = null;
return "ok";
}
catch (PDOException $e)
{
return "Error!: " . $e->getMessage();
}
}
/*
Function: listaMapsTemas
Retorna a lista de mapfiles do diretorio i3geo/temas
Parameters:
cp - objeto CPAINT
locaplic - localização da instalação do I3Geo
*/
function listaMapsTemas()
{
global $cp,$locaplic;
$arquivos = array();
if (is_dir($locaplic."/temas"))
{
if ($dh = opendir($locaplic."/temas"))
{
while (($file = readdir($dh)) !== false)
{
if(!stristr($file, '.map') === FALSE || !stristr($file, ".php")===FALSE)
{
$file = str_replace(".map","",$file);
$file = str_replace(".php","",$file);
$arquivos[] = $file;
}
}
}
closedir($dh);
}
sort($arquivos);
return $arquivos;
}
/*
/*
Function importarXmlMenu
Importa um arquivo xml do tipo "menutemas" para o banco de dados
*/
function importarXmlMenu()
{
global $nomemenu,$xml;
$listaDeTags = array();
if(!file_exists($xml))
{return "
Arquivo $xml não encontrado";}
include_once("../../classesphp/funcoes_gerais.php");
include("conexao.php");
$dbh->query("INSERT INTO i3geoadmin_menus (desc_menu,nome_menu) VALUES ('','$nomemenu')");
$id_menu = $dbh->lastInsertId("id_menu");
$xml = simplexml_load_file($xml);
//
//importa os grupos
//
$gruposExistentes = array();
$q = $dbh->query("select * from i3geoadmin_grupos");
$resultado = $q->fetchAll();
foreach($resultado as $r)
{$gruposExistentes[$r["nome_grupo"]] = 0;}
foreach($xml->GRUPO as $grupo)
{
$nome = ixml($grupo,"GTIPO");
$descricao = ixml($grupo,"DTIPO");
if(!isset($gruposExistentes[$nome]))
$dbh->query("INSERT INTO i3geoadmin_grupos (desc_grupo,nome_grupo) VALUES ('$descricao','$nome')");
$gruposExistentes[$nome] = 0;
}
//
//importa os sub-grupos
//
$subgruposExistentes = array();
$q = $dbh->query("select * from i3geoadmin_subgrupos");
$resultado = $q->fetchAll();
foreach($resultado as $r)
{$subgruposExistentes[$r["nome_subgrupo"]] = 0;}
foreach($xml->GRUPO as $grupo)
{
foreach($grupo->SGRUPO as $sgrupo)
{
$nome = ixml($sgrupo,"SDTIPO");
$descricao = "";
if(!isset($subgruposExistentes[$nome]))
$dbh->query("INSERT INTO i3geoadmin_subgrupos (desc_subgrupo,nome_subgrupo) VALUES ('$descricao','$nome')");
$subgruposExistentes[$nome] = 0;
}
}
//
//importa os temas
//
$temasExistentes = array();
$q = $dbh->query("select * from i3geoadmin_subgrupos");
$resultado = $q->fetchAll();
foreach($resultado as $r)
{$temasExistentes[$r["codigo_tema"]] = 0;}
foreach($xml->TEMA as $tema)
{
$nome = ixml($tema,"TNOME");
$descricao = ixml($tema,"TDESC");
$codigo = ixml($tema,"TID");
$link = ixml($tema,"TLINK");
$tipo = ixml($tema,"TIPOA");
$tags = ixml($tema,"TAGS");
$down = ixml($tema,"DOWNLOAD");
$kml = ixml($tema,"KML");
$ogc = ixml($tema,"OGC");
$listaDeTags = array_merge($listaDeTags,explode(" ",$tags));
if(!isset($temasExistentes[$codigo]))
$dbh->query("INSERT INTO i3geoadmin_temas (kml_tema,ogc_tema,download_tema,tags_tema,tipoa_tema,link_tema,desc_tema,nome_tema,codigo_tema) VALUES ('$kml','$ogc','$down','$tags','$tipo','$link','$descricao','$nome','$codigo')");
$temasExistentes[$codigo] = 0;
}
foreach($xml->GRUPO as $grupo)
{
foreach($grupo->TEMA as $tema)
{
$nome = ixml($tema,"TNOME");
$descricao = ixml($tema,"TDESC");
$codigo = ixml($tema,"TID");
$link = ixml($tema,"TLINK");
$tipo = ixml($tema,"TIPOA");
$tags = ixml($tema,"TAGS");
$down = ixml($tema,"DOWNLOAD");
$kml = ixml($tema,"KML");
$ogc = ixml($tema,"OGC");
$listaDeTags = array_merge($listaDeTags,explode(" ",$tags));
if(!isset($temasExistentes[$codigo]))
$dbh->query("INSERT INTO i3geoadmin_temas (kml_tema,ogc_tema,download_tema,tags_tema,tipoa_tema,link_tema,desc_tema,nome_tema,codigo_tema) VALUES ('$kml','$ogc','$down','$tags','$tipo','$link','$descricao','$nome','$codigo')");
$temasExistentes[$codigo] = 0;
}
foreach($grupo->SGRUPO as $sgrupo)
{
foreach($sgrupo->TEMA as $tema)
{
$nome = ixml($tema,"TNOME");
$descricao = ixml($tema,"TDESC");
$codigo = ixml($tema,"TID");
$link = ixml($tema,"TLINK");
$tipo = ixml($tema,"TIPOA");
$tags = ixml($tema,"TAGS");
$down = ixml($tema,"DOWNLOAD");
$kml = ixml($tema,"KML");
$ogc = ixml($tema,"OGC");
$listaDeTags = array_merge($listaDeTags,explode(" ",$tags));
if(!isset($temasExistentes[$codigo]))
$dbh->query("INSERT INTO i3geoadmin_temas (kml_tema,ogc_tema,download_tema,tags_tema,tipoa_tema,link_tema,desc_tema,nome_tema,codigo_tema) VALUES ('$kml','$ogc','$down','$tags','$tipo','$link','$descricao','$nome','$codigo')");
$temasExistentes[$codigo] = 0;
}
}
}
//
//monta árvore
//
//
//registra os temas no nível da raiz
//
foreach($xml->TEMA as $tema)
{
$codigo = ixml($tema,"TID");
$perfil = ixml($tema,"PERFIL");
$r = $dbh->query("select id_tema from i3geoadmin_temas where codigo_tema = '$codigo'");
$id_tema = $r->fetchColumn();
$dbh->query("INSERT INTO i3geoadmin_raiz (id_tema,id_menu,id_nivel,nivel,perfil) VALUES ('$id_tema','$id_menu','0','0','$perfil')");
}
//
//registra o restante
//
foreach($xml->GRUPO as $grupo)
{
$gtipo = ixml($grupo,"GTIPO");
$n1_perfil = ixml($grupo,"PERFIL");
$r = $dbh->query("select id_grupo from i3geoadmin_grupos where nome_grupo = '$gtipo'");
$id_grupo = $r->fetchColumn();
$dbh->query("INSERT INTO i3geoadmin_n1 (id_menu,id_grupo,n1_perfil) VALUES ('$id_menu','$id_grupo','$n1_perfil')");
$id_n1 = $dbh->lastInsertId("id_n1");
foreach($grupo->TEMA as $tema)
{
$codigo = ixml($tema,"TID");
$perfil = ixml($tema,"PERFIL");
$r = $dbh->query("select id_tema from i3geoadmin_temas where codigo_tema = '$codigo'");
$id_tema = $r->fetchColumn();
$dbh->query("INSERT INTO i3geoadmin_raiz (id_tema,id_menu,id_nivel,nivel,perfil) VALUES ('$id_tema','$id_menu','$id_n1','1','$perfil')");
}
foreach($grupo->SGRUPO as $subgrupo)
{
$sdtipo = ixml($subgrupo,"SDTIPO");
$n2_perfil = ixml($subgrupo,"PERFIL");
$r = $dbh->query("select id_subgrupo from i3geoadmin_subgrupos where nome_subgrupo = '$sdtipo'");
$id_subgrupo = $r->fetchColumn();
$dbh->query("INSERT INTO i3geoadmin_n2 (id_n1,id_subgrupo,n2_perfil) VALUES ('$id_n1','$id_subgrupo','$n2_perfil')");
$id_n2 = $dbh->lastInsertId("id_n2");
foreach($subgrupo->TEMA as $tema)
{
$codigo = ixml($tema,"TID");
$perfil = ixml($tema,"PERFIL");
$r = $dbh->query("select id_tema from i3geoadmin_temas where codigo_tema = '$codigo'");
$id_tema = $r->fetchColumn();
$dbh->query("INSERT INTO i3geoadmin_n3 (id_n2,id_tema,n3_perfil) VALUES ('$id_n2','$id_tema','$perfil')");
}
}
}
//registra os tags
$listaDeTags = array_unique($listaDeTags);
foreach ($listaDeTags as $t)
{
if(!(verificaDuplicados("select * from i3geoadmin_tags where nome = '$t'",$dbh)))
$dbh->query("INSERT INTO i3geoadmin_tags (nome) VALUES ('$t')");
}
$dbh = null;
return "Dados importados.";
}
?>