$codigo
) );
exit ();
break;
case "EXCLUIR" :
$codigo = $_POST ["codigo"];
$codigo = str_replace ( " ", "", removeAcentos ( $codigo ) );
$codigo = str_replace ( ".", "", $codigo );
$codigo = strip_tags ( $codigo );
$codigo = htmlspecialchars ( $codigo, ENT_QUOTES );
$retorna = excluir ( $codigo, $dbhw );
$dbhw = null;
$dbh = null;
if ($retorna === false) {
header ( "HTTP/1.1 400 $retorna" );
exit ();
}
retornaJSON ( array (
"codigo" => $codigo
) );
exit ();
break;
case "LISTA" :
$retorna = lista ( $dbh, $_GET["filtro"], $_GET["palavra"] );
$dbhw = null;
$dbh = null;
if ($retorna === false) {
header ( "HTTP/1.1 500 erro ao consultar banco de dados" );
exit ();
}
retornaJSON ( $retorna );
exit ();
break;
case "LIMPACACHE" :
$mapfile = $locaplic."/temas/".$_POST["codigo"].".map";
if(!file_exists($mapfile)){
header ( "HTTP/1.1 403 arquivo nao existe" );
exit ();
}
$mapa = ms_newMapObj($mapfile);
$nomes = $mapa->getalllayernames();
//$cachedir e $dir_tmp vem de ms_configura.php
if($cachedir != ""){
$d = $cachedir;
}
else{
$d = $dir_tmp."/cache";
}
foreach($nomes as $nome){
$nome = str_replace(".","",$nome);
$nome = strip_tags($nome);
$nome = htmlspecialchars($nome, ENT_QUOTES);
$dirs[] = $d."/".$nome;
$dirs[] = $d."/googlemaps/".$nome;
$dirs[] = $d."/wmts/".$nome;
foreach($dirs as $dir){
rrmdir($dir);
}
}
retornaJSON("ok");
exit ();
break;
}
cpjson ( $retorno );
function excluir($codigo, $dbhw) {
global $locaplic, $esquemaadmin;
// pega o id do tema
// se o mapfile nao estiver registrado, $id sera vazio
$dados = pegaDados ( "SELECT id_tema from " . $esquemaadmin . "i3geoadmin_temas WHERE codigo_tema = '" . $codigo . "'", $dbhw, false );
if (count ( $dados ) > 0) {
$id = $dados [0] ["id_tema"];
} else {
$id = "";
}
// verifica se o tema esta em uso
if ($id != "") {
$r = pegaDados ( "SELECT id_tema from " . $esquemaadmin . "i3geoadmin_n3 where id_tema ='$id'", $dbhw, false );
if (count ( $r ) > 0) {
return "o tema e utilizado em algum subgrupo";
}
$r = pegaDados ( "SELECT id_tema from " . $esquemaadmin . "i3geoadmin_raiz where id_tema ='$id'", $dbhw, false );
if (count ( $r ) > 0) {
return "o tema e utilizado em alguma raiz";
}
}
if (!file_exists ( "$locaplic/temas/" . $codigo . ".map" )) {
return "o arquivo mapfile nao existe";
}
//verifica se pode escrever
$handle = fopen("$locaplic/temas/" . $codigo . ".map", "r+");
if($handle == false){
return "o arquivo nao pode ser apagado verifique as permissoes";
}
fclose($handle);
//tenta excluir do banco
$resultado = i3GeoAdminExclui ( $esquemaadmin . "i3geoadmin_temas", "id_tema", $id, $dbhw, true );
if ($resultado === false) {
return "nao foi possivel excluir do banco de dados";
}
unlink("$locaplic/temas/" . $codigo . ".map");
return true;
}
function adicionar($locaplic, $link_tema, $codigo, $acessopublico, $metaestat, $titulo, $desc_tema, $tituloEN, $tituloES, $dbhw) {
global $convUTF, $esquemaadmin;
$arq = $locaplic . "/temas/" . $codigo . ".map";
if (empty ( $acessopublico ) || $acessopublico == "on") {
$acessopublico = "SIM";
} else {
$acessopublico = "SIM";
}
$tipoLayer = "line";
$dados [] = "MAP";
$dados [] = "SYMBOLSET ../symbols/simbolosv6.sym";
$dados [] = 'FONTSET "../symbols/fontes.txt"';
$dados [] = "LAYER";
$dados [] = ' NAME "' . $codigo . '"';
$dados [] = ' TEMPLATE "none.htm"';
if (! empty ( $metaestat ) && $metaestat == "SIM") {
$dados [] = ' CONNECTIONTYPE POSTGIS';
$tipoLayer = "polygon";
}
$dados [] = " TYPE " . $tipoLayer;
$dados [] = ' DATA ""';
$dados [] = ' CONNECTION ""';
$dados [] = ' STATUS DEFAULT';
$dados [] = ' METADATA';
$dados [] = ' TEMA "' . $titulo . '"';
$dados [] = ' CLASSE "SIM"';
$tipoa_tema = "";
if (! empty ( $metaestat ) && $metaestat == "SIM") {
$dados [] = ' METAESTAT "SIM"';
// para marcar no banco de dados de administracao
$tipoa_tema = "META";
}
$dados [] = ' permiteogc "' . $acessopublico . '"';
$dados [] = ' permitedownload "' . $acessopublico . '"';
$dados [] = ' permitekml "' . $acessopublico . '"';
$dados [] = ' permitekmz "' . $acessopublico . '"';
$dados [] = ' END';
$dados [] = ' CLASS';
$dados [] = ' NAME ""';
$dados [] = ' STYLE';
$dados [] = ' COLOR 0 0 0';
$dados [] = ' SIZE 12';
$dados [] = ' END';
$dados [] = ' END';
$dados [] = "END";
$dados [] = "END";
// abre o arquivo para ver se nao deu erro antes de adicionar ao banco
$fp = fopen ( $arq, "w" );
if ($fp === false) {
return false;
}
if ($convUTF != true) {
$titulo = utf8_decode ( $titulo );
$desc_tema = utf8_decode ( $desc_tema );
}
try {
$dataCol = array (
"link_tema" => $link_tema,
"kml_tema" => $acessopublico,
"kmz_tema" => $acessopublico,
"ogc_tema" => $acessopublico,
"download_tema" => $acessopublico,
"desc_tema" => $desc_tema,
"tipoa_tema" => $tipoa_tema,
"tags_tema" => '',
"nome_tema" => $titulo,
"codigo_tema" => $codigo,
"it" => "",
"es" => $tituloES,
"en" => $tituloEN
);
i3GeoAdminInsert ( $dbhw, "i3geoadmin_temas", $dataCol );
// salva o arquivo mapfile
foreach ( $dados as $dado ) {
fwrite ( $fp, $dado . "\n" );
}
fclose ( $fp );
return $retorna;
} catch ( PDOException $e ) {
return false;
}
}
function lista($dbh, $filtro = "", $palavra = "") {
global $locaplic, $esquemaadmin;
$arquivos = array ();
if (is_dir ( $locaplic . "/temas" )) {
if ($dh = opendir ( $locaplic . "/temas" )) {
$extensao = "";
while ( ($file = readdir ( $dh )) !== false ) {
if (! stristr ( $file, '.map' ) === FALSE) {
$file = str_replace ( ".map", "", $file );
//verifica se existe um filtro de palavra
if($palavra != ""){
if(stripos($file, $palavra) !== false){
$arquivos[] = array("nome"=>$file);
}
} else {
$arquivos [] = array (
"nome" => $file
);
}
}
}
}
closedir ( $dh );
}
sort ( $arquivos );
//
// pega o nome de cada tema filtrando a listagem se for o caso
//
$regs = pegaDados ( "select * from " . $esquemaadmin . "i3geoadmin_temas ", $dbh, false );
$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 ) {
$arq = $arq ["nome"];
$nT = explode ( ".", $arq );
$n = $nomes [$nT [0]];
if (! $n) {
$n = "";
}
$id = $ids [$nT [0]];
if (! $id) {
$id = "";
}
$imagem = "";
if (file_exists ( $locaplic . "/temas/miniaturas/" . $arq . ".map.mini.png" )) {
$imagem = $arq . ".map.mini.png";
}
if ($_POST ["checaNomes"] == "true") {
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_decode ( $ntema ) && $n != "") {
$n .= "" . utf8_decode ( $ntema ) . "";
}
break;
}
}
fclose ( $handle );
}
}
if ($_POST ["checaNames"] == "true") {
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 (
"id_tema" => $id,
"nome" => $n,
"codigo" => $arq,
"imagem" => $imagem,
"extensao" => $extensao
);
}
if (! isset ( $filtro ) || $filtro == "") {
$lista [] = array (
"id_tema" => $id,
"nome" => $n,
"codigo" => $arq,
"imagem" => $imagem,
"extensao" => $extensao
);
}
}
return $lista;
}
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir") {
rrmdir($dir."/".$object);
} else {
$object = str_replace(".png","",$object).".png";
chmod($dir."/".$object,077);
unlink($dir."/".$object);
}
}
}
reset($objects);
//rmdir($dir);
}
}
?>