From 3165a2e64342ddd5e6ef7084a80bd4ea5b77265c Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 25 Sep 2017 17:45:32 -0300 Subject: [PATCH] Revisão da página RSS e reorganização dos programas que geram as listagens em XML e RSS dos principais dados do sistema de administração --- admin/php/xml.php | 971 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- admin/php/xxxxml.php | 972 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ admin1/php/funcoesAdmin.php | 2 -- classesjs/classe_guias.js | 2 -- classesphp/atlas_controle.php | 2 +- classesphp/classe_menutemas.php | 10 +++++----- classesphp/classe_temas.php | 6 +++--- classesphp/wscliente.php | 4 ++-- classesphp/xml.php | 947 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ js/guias.js | 2 -- rss/index.js | 31 ++++++++++++++----------------- rss/rssgrupos.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ rss/rssmapas.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ rss/rsssubgrupos.php | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ rss/rsstemas.php | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ rss/rsstemasraiz.php | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ rss/xmlgeorss.php | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ rss/xmlmapas.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ rss/xmlmetaestatogc.php | 44 ++++++++++++++++++++++++++++++++++++++++++++ rss/xmlservicoswms.php | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ rss/xmlservicosws.php | 45 +++++++++++++++++++++++++++++++++++++++++++++ rss/xmlsistemas.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 22 files changed, 2475 insertions(+), 1005 deletions(-) delete mode 100755 admin/php/xml.php create mode 100755 admin/php/xxxxml.php create mode 100755 classesphp/xml.php create mode 100755 rss/rssgrupos.php create mode 100755 rss/rssmapas.php create mode 100755 rss/rsssubgrupos.php create mode 100755 rss/rsstemas.php create mode 100755 rss/rsstemasraiz.php create mode 100755 rss/xmlgeorss.php create mode 100755 rss/xmlmapas.php create mode 100755 rss/xmlmetaestatogc.php create mode 100755 rss/xmlservicoswms.php create mode 100755 rss/xmlservicosws.php create mode 100755 rss/xmlsistemas.php diff --git a/admin/php/xml.php b/admin/php/xml.php deleted file mode 100755 index 4fef160..0000000 --- a/admin/php/xml.php +++ /dev/null @@ -1,971 +0,0 @@ -"; - else - $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; - $xml .= "\n\n"; - $q = "select * from ".$esquemaadmin."i3geoadmin_sistemas"; - $qatlas = $dbh->query($q); - foreach($qatlas as $row) - { - if($row["perfil_sistema"] == "") - $mostra = true; - else - { - $perfilS = explode(" ",str_replace(","," ",$row["perfil_sistema"])); - $mostra = array_in_array($perfil,$perfilS); - } - if(strtolower($row["publicado_sistema"] == "nao")) - {$mostra = false;} - if($editor) - {$mostra = true;} - if($mostra) - { - $xml .= "\n"; - $xml .= " ".$row["perfil_sistema"]."\n"; - $xml .= " ".$row["publicado_sistema"]."\n"; - $xml .= " ".xmlTexto_prepara($row["nome_sistema"])."\n"; - $xml = geraXmlSistemas_pegafuncoes($perfil,$xml,$row["id_sistema"],$dbh); - $xml .= "\n"; - } - } - $xml .= "\n"; - $dbh = null; - $dbhw = null; - return $xml; -} -/* -Function: geraRSScomentariosTemas - -RSS com os comentarios sobre um ou todos os temas - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -id_tema {numeric} - (opcional) id do tema para mostrar apenas os comentários de um tema - -Retorno: - -RSS -*/ -function geraRSScomentariosTemas($locaplic,$id_tema=""){ - global $esquemaadmin; - xml_testaNum([$id_tema]); - $sql = "select '' as tipo_ws, b.nome_tema||' '||a.data as nome_ws,a.openidnome||' '||a.openidurl||' <br>'||a.comentario as desc_ws, a.openidnome as autor_ws, b.link_tema as link_ws from ".$esquemaadmin."i3geoadmin_comentarios as a,".$esquemaadmin."i3geoadmin_temas as b where a.id_tema = b.id_tema "; - if($id_tema != ""){ - $sql .= " and a.id_tema = $id_tema "; - } - return geraXmlRSS($locaplic,$sql,"Lista de comentarios"); -} -/* -Function: geraRSStemas - -RSS com os temas cadastrados - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -id_n2 {string} - c�digo do subgrupo do sistema de administração - -Retorno: - -RSS -*/ -function geraRSStemas($locaplic,$id_n2,$output="xml") -{ - global $esquemaadmin; - xml_testaNum([$id_n2]); - $sql = " - select '' as tipo_ws, i3geoadmin_temas.codigo_tema as id_ws,i3geoadmin_temas.nome_tema as nome_ws,'' as desc_ws,'php/parsemapfile.php?id='||i3geoadmin_temas.codigo_tema as link_ws,i3geoadmin_temas.link_tema as autor_ws - from ".$esquemaadmin."i3geoadmin_n3 as n3 - LEFT JOIN ".$esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = n3.id_tema - LEFT JOIN ".$esquemaadmin."i3geousr_grupotema ON n3.id_tema = i3geousr_grupotema.id_tema - where i3geousr_grupotema.id_grupo is null and i3geoadmin_temas.id_tema = n3.id_tema and n3.id_n2 = '$id_n2' and n3.n3_perfil = '' and n3.publicado != 'NAO' order by nome_ws"; - return geraXmlRSS($locaplic,$sql,"Lista de temas",$output); -} -/* -Function: geraRSStemasRaiz - -RSS com os temas localizados na raiz de um nível - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -id {string} - codigo do no - -nivel {string} - nível do no - -Retorno: - -RSS -*/ -function geraRSStemasRaiz($locaplic,$id,$nivel) -{ - global $esquemaadmin; - xml_testaNum([$id,$nivel]); - $sql = " - select '' as tipo_ws, i3geoadmin_temas.codigo_tema as id_ws,i3geoadmin_temas.nome_tema as nome_ws,'' as desc_ws,'php/parsemapfile.php?id='||i3geoadmin_temas.codigo_tema as link_ws,i3geoadmin_temas.link_tema as autor_ws - from ".$esquemaadmin."i3geoadmin_raiz as r - LEFT JOIN ".$esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = r.id_tema - LEFT JOIN ".$esquemaadmin."i3geousr_grupotema ON r.id_tema = i3geousr_grupotema.id_tema - where i3geousr_grupotema.id_grupo is null and i3geoadmin_temas.id_tema = r.id_tema and r.nivel = '$nivel' and r.id_nivel = '$id' order by nome_ws"; - return geraXmlRSS($locaplic,$sql,"Temas na raiz"); -} -/* -Function: geraRSSsubgrupos - -RSS com os subgrupos cadastrados - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -id_n1 {string} - c�digo do grupo do sistema de administração - -Retorno: - -RSS -*/ -function geraRSSsubgrupos($locaplic,$id_n1,$output="json") -{ - global $esquemaadmin; - xml_testaNum([$id_n1]); - $sql = "select '' as tipo_ws, n2.id_n2 as id_ws,g.nome_subgrupo as nome_ws,'' as desc_ws,'rsstemas.php?id='||n2.id_n2 as link_ws,'' as autor_ws from ".$esquemaadmin."i3geoadmin_n2 as n2,".$esquemaadmin."i3geoadmin_subgrupos as g "; - $sql .= " where g.id_subgrupo = n2.id_subgrupo and n2.id_n1 = '$id_n1' and n2.n2_perfil = '' and n2.publicado != 'NAO' order by nome_ws"; - return geraXmlRSS($locaplic,$sql,"Lista de sub-grupos",$output); -} -/* -Function: geraRSSgrupos - -RSS com os grupos cadastrados - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraRSSgrupos($locaplic,$output="xml") -{ - global $esquemaadmin; - $sql = "select '' as tipo_ws, n1.id_n1 as id_ws, g.nome_grupo as nome_ws,'rsstemasraiz.php?nivel=1&id='||n1.id_n1 as desc_ws,'rsssubgrupos.php?id='||n1.id_n1 as link_ws,'' as autor_ws "; - $sql .= "from ".$esquemaadmin."i3geoadmin_n1 as n1,".$esquemaadmin."i3geoadmin_grupos as g "; - $sql .= "where g.id_grupo = n1.id_grupo and n1.n1_perfil = '' and n1.publicado != 'NAO' group by id_ws,tipo_ws,nome_ws,desc_ws,link_ws,autor_ws order by nome_ws"; - return geraXmlRSS($locaplic,$sql,"Lista de grupos",$output); -} -/* -Function: geraXmlDownload - -RSS com os links para sistemas de download - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraXmlDownload($locaplic) -{ - global $esquemaadmin; - $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'DOWNLOAD' and nome_ws <> ''"; - return geraXmlRSS($locaplic,$sql,"Enderecos para download"); -} -/* -Function: geraXmlWS - -RSS com a lista de WS cadastrados - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraXmlWS($locaplic,$output) -{ - global $esquemaadmin; - $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'WS' and nome_ws <> ''"; - return geraXmlRSS($locaplic,$sql,"Web services",$output); -} -/* -Function: geraXmlKmlrss - -RSS com a lista de KML cadastrados - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraXmlKmlrss($locaplic) -{ - global $esquemaadmin; - $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'KML' and nome_ws <> ''"; - return geraXmlRSS($locaplic,$sql,"Web services"); -} -/* -Function: geraXmlWMS - -RSS com a lista de WMS cadastrados - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraXmlWMS($locaplic,$output) -{ - global $esquemaadmin; - $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where (tipo_ws = 'WMS' or tipo_ws = 'WMS-Tile') and nome_ws <> '' order by nome_ws"; - return geraXmlRSS($locaplic,$sql,"Web services WMS-OGC",$output); -} -/* -Function: geraXmlWMSmetaestat - -RSS com a lista de WMS das variaveis cadastradas no sistema de metadados estatisticos - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraXmlWMSmetaestat($locaplic) -{ - global $esquemaadmin; - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); - $c = "/admin/php/xml.php"; - if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ - $c = "\admin\php\xml.php"; - } - $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); - $sql = "select DISTINCT b.id_medida_variavel as id_ws, 'WMSMETAESTAT' as tipo_ws,'".$url."/ogc.php?id_medida_variavel='||b.id_medida_variavel as link_ws,a.nome||' -> '||b.nomemedida as nome_ws,a.descricao as desc_ws, '' as autor_ws from i3geoestat_variavel as a ,i3geoestat_medida_variavel as b WHERE a.codigo_variavel = b.codigo_variavel ORDER BY a.nome"; - return geraXmlRSS($locaplic,$sql,"Web services WMS-TIME OGC"); -} -/* -Function: geraXmlGeorss - -RSS com a lista de GEORSS cadastrados - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraXmlGeorss($locaplic,$output) -{ - global $esquemaadmin; - $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'GEORSS' and nome_ws <> ''"; - return geraXmlRSS($locaplic,$sql,"Georss",$output); -} -/* -Function: geraRSStemasDownload - -RSS com a lista de temas para download - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraRSStemasDownload($locaplic) -{ - global $esquemaadmin; - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); - $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemasdownload.php","",$_SERVER['PHP_SELF'])); - $sql = "select '' as tipo_ws,'".$url."/datadownload.htm?'||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; - $sql .= " - from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg - where - t.id_tema = n3.id_tema - and n3.id_n2 = n2.id_n2 - and n2.id_subgrupo = sg.id_subgrupo - and n2.id_n1 = n1.id_n1 - and n1.id_grupo = g.id_grupo - and (t.download_tema != 'nao' and t.download_tema != 'NAO') - and t.tipoa_tema != 'WMS' - and n3.n3_perfil = '' - and n2.n2_perfil = '' - and n1.n1_perfil = '' - and n3.publicado != 'NAO' - and n2.publicado != 'NAO' - and n1.publicado != 'NAO' - "; - //echo $sql;exit; - return geraXmlRSS($locaplic,$sql,"Temas para download"); -} -/* -Function: geraRSStemasKml - -RSS com a lista de temas que permitem KML - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraRSStemasKml($locaplic) -{ - global $esquemaadmin; - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); - $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemaskml.php","",$_SERVER['PHP_SELF'])); - $sql = "select '' as tipo_ws,'".$url."/pacotes/kmlmapserver/kmlservice.php?request=kml&map='||codigo_tema||'&typename='||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; - $sql .= " - from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg - where - t.id_tema = n3.id_tema - and n3.id_n2 = n2.id_n2 - and n2.id_subgrupo = sg.id_subgrupo - and n2.id_n1 = n1.id_n1 - and n1.id_grupo = g.id_grupo - and (t.kml_tema != 'nao' and t.kml_tema != 'NAO') - and n3.n3_perfil = '' - and n2.n2_perfil = '' - and n1.n1_perfil = '' - and n3.publicado != 'NAO' - and n2.publicado != 'NAO' - and n1.publicado != 'NAO' - "; - //echo $sql;exit; - return geraXmlRSS($locaplic,$sql,"Temas em KML"); -} -/* -Function: geraRSStemasOgc - -RSS com a lista de temas que permitem serviços OGC - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -Retorno: - -RSS -*/ -function geraRSStemasOgc($locaplic) -{ - global $esquemaadmin; - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); - $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemasogc.php","",$_SERVER['PHP_SELF'])); - $sql = "select '' as tipo_ws,'".$url."/ogc.php?request=getcapabilities&service=wms&tema='||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; - $sql .= " - from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg - where - t.id_tema = n3.id_tema - and n3.id_n2 = n2.id_n2 - and n2.id_subgrupo = sg.id_subgrupo - and n2.id_n1 = n1.id_n1 - and n1.id_grupo = g.id_grupo - and (t.ogc_tema != 'nao' or t.ogc_tema != 'NAO') - and t.tipoa_tema != 'WMS' - and n3.n3_perfil = '' - and n2.n2_perfil = '' - and n1.n1_perfil = '' - and n3.publicado != 'NAO' - and n2.publicado != 'NAO' - and n1.publicado != 'NAO' - "; - //echo $sql;exit; - return geraXmlRSS($locaplic,$sql,"Temas em KML"); -} -/* -Function: geraXmlRSS - -Gera um RSS com base em um SQL compatível com o sistema de administração. - -O SQL deverá retornar os itens nome_ws desc_ws e link_ws - -Parametros: - -locaplic {string} - localização do i3Geo no sistema de arquivos - -sql {string} - SQL que será aplicado ao sistema de administração - -descricao {string} - descrição que será inserida no canal RSS - -output {string} - xml|json -Retorno: - -RSS -*/ -function geraXmlRSS($locaplic,$sql,$descricao,$output="xml") -{ - global $esquemaadmin; - if(empty($output)){ - $output = "xml"; - } - //var_dump($_SERVER);exit; - $dbh = ""; - include($locaplic."/admin/php/conexao.php"); - if($convUTF){ - $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; - } else { - $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; - } - $xml .= ""; - $xml .= "\n"; - $xml .= "RSS\n"; - $xml .= "".str_replace("&","&",$descricao)."\n"; - $xml .= "\n"; - $xml .= "\n"; - $xml .= "Gerado pelo i3Geo\n"; - $xml .= "pt-br\n"; - $xml .= "\n"; - $json = array( - "description"=>$descricao, - "copyright"=>"Gerado pelo i3Geo", - "language"=>"pt-br" - ); - $jsonItems = array(); - $qatlas = $dbh->query($sql); - foreach($qatlas as $row) { - $xml .= "\n"; - $xml .= "\n"; - $xml .= "".entity_decode($row["nome_ws"])."\n"; - $xml .= "".xmlTexto_prepara(entity_decode($row["desc_ws"]))."\n"; - $link = xmlTexto_prepara($row["link_ws"]); - if(stristr($link, 'http') === FALSE){ - $link = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["REQUEST_URI"])."/".$link; - } - $xml .= "\n"; - $xml .= "\n"; - $xml .= "".xmlTexto_prepara($row["autor_ws"])."\n"; - $xml .= "\n"; - $xml .= "\n"; - $xml .= "".xmlTexto_prepara($row["id_ws"])."\n"; - $xml .= "".$row["tipo_ws"]."\n"; - $xml .= "\n"; - $jsonItems[] = array( - "title"=>$row["nome_ws"], - "description"=>$row["desc_ws"], - "link"=>$link."&output=json", - "author"=>$row["autor_ws"], - "id"=>$row["id_ws"], - "tipo"=>$row["tipo_ws"] - ); - } - $json["items"] = $jsonItems; - $xml .= "\n"; - $dbh = null; - $dbhw = null; - if($output == "xml"){ - return $xml; - } - else{ - return json_encode($json); - } -} -function geraXmlAtlas($locaplic,$editores) -{ - global $esquemaadmin; - //error_reporting(0); - $dbh = ""; - include($locaplic."/admin/php/conexao.php"); - - if($convUTF) - $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; - else - $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; - $xml .= "\n\n"; - //$q = "select * from i3geoadmin_atlas"; - $qatlas = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_atlas"); - - $editor = "nao";//$editor = verificaEditores($editores); - foreach($qatlas as $row) - { - $mostra = true; - if(strtolower($row["publicado_atlas"] == "nao")) - {$mostra = false;} - if($editor) - {$mostra = true;} - if($mostra) - { - $xml .= "\n"; - $xml .= " ".$row["id_atlas"]."\n"; - $xml .= " ".$row["publicado_atlas"]."\n"; - $xml .= " ".xmlTexto_prepara($row["titulo_atlas"])."\n"; - $xml .= " ".xmlTexto_prepara($row["desc_atlas"])."\n"; - $xml .= " ".$row["icone_atlas"]."\n"; - $xml .= " \n"; - $xml .= " ".xmlTexto_prepara($row["template_atlas"])."\n"; - $xml .= " ".$row["w_atlas"]."\n"; - $xml .= " ".$row["h_atlas"]."\n"; - $xml .= " ".$row["pranchadefault_atlas"]."\n"; - $xml .= " ".$row["tipoguias_atlas"]."\n"; - $xml .= " ".$row["basemapfile_atlas"]."\n"; - $xml .= " \n"; - $xml = geraXmlAtlas_pegapranchas($xml,$row["id_atlas"],$dbh); - $xml .= " \n"; - $xml .= " \n"; - } - } - $xml .= "\n"; - $dbh = null; - $dbhw = null; - return $xml; -} -function geraXmlIdentifica($perfil,$locaplic,$editores="") -{ - global $esquemaadmin; - $editor = "nao";//$editor = verificaEditores($editores); - if (!isset($perfil)){$perfil = "";} - $perfil = str_replace(","," ",$perfil); - $perfil = explode(" ",$perfil); - $dbh = ""; - include($locaplic."/admin/php/conexao.php"); - if($convUTF) - $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; - else - $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; - $xml .= "\n\n"; - $q = "select * from ".$esquemaadmin."i3geoadmin_identifica "; - $qi = $dbh->query($q); - foreach($qi as $row) - { - $mostra = true; - if(strtolower($row["publicado_i"] == "nao")) - {$mostra = false;} - if($editor) - {$mostra = true;} - if($mostra) - { - $xml .= " \n"; - $xml .= " ".xmlTexto_prepara($row["nome_i"])."\n"; - $xml .= " ".xmlTexto_prepara($row["abrir_i"])."\n"; - $xml .= " ".$row["publicado_i"]."\n"; - $target = $row["target_i"]; - if($target == ""){$target = "_self";} - $xml .= " ".$target."\n"; - $xml .= " \n"; - }//error_reporting(0); - } - $xml .= "\n"; - $dbh = null; - $dbhw = null; - return $xml; -} -function geraXmlMapas($perfil,$locaplic,$editores) -{ - global $esquemaadmin; - if (!isset($perfil)){$perfil = "";} - $perfil = str_replace(","," ",$perfil); - $perfil = explode(" ",$perfil); - $dbh = ""; - include($locaplic."/admin/php/conexao.php"); - if($convUTF) - $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; - else - $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; - $xml .= "\n\n"; - $q = "select * from ".$esquemaadmin."i3geoadmin_mapas"; - $q = $dbh->query($q); - $editor = "nao";//$editor = "nao";//verificaEditores($editores); - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); - $c = "/admin/php/xml.php"; - if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ - $c = "\admin\php\xml.php"; - } - $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); - foreach($q as $row) - { - $mostraMapa = false; - if($row["perfil_mapa"] == "") - {$mostraMapa = true;} - else - { - $perfilMapa = explode(" ",str_replace(","," ",$row["perfil_mapa"])); - $mostraMapa = array_in_array($perfil,$perfilMapa); - } - if(strtolower($row["publicado_mapa"] == "nao")) - {$mostraMapa = false;} - if($editor) - {$mostraMapa = true;} - - if($mostraMapa) - { - $xml .= "\n"; - $perfil = $row["perfil_mapa"]; - $xml .= " ".$perfil."\n"; - $xml .= " ".xmlTexto_prepara($row["nome_mapa"])."\n"; - $xml .= " ".xmlTexto_prepara($row["desc_mapa"])."\n"; - $xml .= " ".xmlTexto_prepara($row["imagem_mapa"])."\n"; - $xml .= " ".$row["temas_mapa"]."\n"; - $xml .= " ".$row["ligados_mapa"]."\n"; - $extensao = $row["ext_mapa"]; - $xml .= " ".$extensao."\n"; - $outros = xmlTexto_prepara($row["outros_mapa"]); - $xml .= " \n"; - $linkdireto = xmlTexto_prepara($row["linkdireto_mapa"]); - if(empty($linkdireto)){ - $linkdireto = $url."/ms_criamapa.php?mapext=".$extensao."&perfil=".$perfil."&temasa=".$temas."&layers=".$ligados.$row["outros_mapa"]; - $linkdireto = xmlTexto_prepara($linkdireto); - } - $xml .= " \n"; - $xml .= " ".$row["publicado_mapa"]."\n"; - $xml .= " ".$row["id_mapa"]."\n"; - if($row["mapfile"] != ""){ - $xml .= " sim\n"; - } - else{ - $xml .= " nao\n"; - } - $xml .= "\n"; - } - } - $xml .= "\n"; - $dbh = null; - $dbhw = null; - return $xml; -} -//mostra apenas os mapas que possuem outros_mapa definido, o que e tipico do sistema de metadados estatisticos -function geraRSSmapas($locaplic,$output) -{ - global $esquemaadmin; - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); - $c = "/admin/php/xml.php"; - if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ - $c = "\admin\php\xml.php"; - } - $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); - $descricao = "'"; - $descricao .= "Openlayers 1

"; - $descricao .= "Openlayers 2

"; - $descricao .= "Openlayers 3

"; - $descricao .= "Openlayers 4

"; - $descricao .= "]]>'"; - $sql = "select '' as tipo_ws,'".$url."/ms_criamapa.php?restauramapa='||id_mapa as link_ws, nome_mapa as nome_ws, ".$descricao." as desc_ws, '' as autor_ws from ".$esquemaadmin."i3geoadmin_mapas WHERE publicado_mapa = 'sim' AND mapfile != ''"; - //echo $sql;exit; - return geraXmlRSS($locaplic,$sql,"Mapas cadastrados",$output); -} - -// -//$id_menu = id do menu que será montado -//$perfil = perfis separados por espaços -//$tipo = gruposeraiz|subgrupos|temas -//$dbh objeto com a conexão com o banco -//$locaplic = localização do i3geo no servidor -// -function geraXmlMenutemas($perfil,$id_menu,$tipo,$locaplic) -{ - global $esquemaadmin; - xml_testaNum([$id_menu]); - $dbh = ""; - include($locaplic."/admin/php/conexao.php"); - if (!isset($perfil)){$perfil = "";} - $perfil = str_replace(","," ",$perfil); - $perfil = explode(" ",$perfil); - if($convUTF) - $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; - else - $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; - $xml .= "\n\n"; - if(!isset($id_menu)) - $xml .= "Utilize ?id_menu=1 por exemplo\n"; - else - $xml .= "\n"; - // - //pega os temas na raiz - // - $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,r.perfil as perfil from ".$esquemaadmin."i3geoadmin_raiz as r,".$esquemaadmin."i3geoadmin_temas as temas where r.id_nivel = 0 and r.id_tema = temas.id_tema and r.id_menu = $id_menu "; - $qtemasraiz = $dbh->query($q); - $xml = geraXmlMenutemas_notema($qtemasraiz,$xml,$perfil); - $q = "select nome_grupo,desc_grupo,n1.id_grupo,n1.id_n1,n1.n1_perfil as perfil from ".$esquemaadmin."i3geoadmin_n1 as n1,".$esquemaadmin."i3geoadmin_grupos as grupos where n1.id_menu = $id_menu and n1.id_grupo = grupos.id_grupo "; - $qgrupos = $dbh->query($q); - foreach($qgrupos as $row) - { - //filtra pelo perfil - if($row["perfil"] == "") - {$mostra = true;} - else - { - $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); - $mostra = array_in_array($perfil,$perfilatual); - } - if($mostra) - { - $xml .= "\n"; - $xml .= " ".xmlTexto_prepara($row["nome_grupo"])."\n"; - // - //pega temas na raiz - // - $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,r.perfil as perfil from ".$esquemaadmin."i3geoadmin_raiz as r,".$esquemaadmin."i3geoadmin_temas as temas where r.nivel = 1 and r.id_nivel = ".$row["id_n1"]." and r.id_tema = temas.id_tema and r.id_menu = $id_menu "; - $qtemasraiz = $dbh->query($q); - $xml = geraXmlMenutemas_notema($qtemasraiz,$xml,$perfil); - if(isset($tipo) && ($tipo == "subgrupos") || ($tipo == "")) - $xml = geraXmlMenutemas_pegasubgrupos($row["id_n1"],$xml,$dbh,$tipo,$perfil); - $xml .= " ".xmlTexto_prepara($row["desc_grupo"])."\n"; - $xml .= " ".$row["perfil"]."\n"; - $xml .= "\n"; - } - } - $xml .= "\n"; - $dbh = null; - $dbhw = null; - return $xml; -} -function geraXmlMenutemas_pegasubgrupos($id_n1,$xml,$dbh,$tipo,$perfil) -{ - global $esquemaadmin; - xml_testaNum([$id_n1]); - $q = "select subgrupos.id_subgrupo,nome_subgrupo,id_n2,n2.n2_perfil as perfil from ".$esquemaadmin."i3geoadmin_n2 as n2,".$esquemaadmin."i3geoadmin_subgrupos as subgrupos where n2.id_n1 = $id_n1 and n2.id_subgrupo = subgrupos.id_subgrupo "; - //echo $q;exit; - $qsgrupos = $dbh->query($q); - foreach($qsgrupos as $row) - { - if($row["perfil"] == "") - $mostra = true; - else - { - $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); - $mostra = array_in_array($perfil,$perfilatual); - } - if($mostra) - { - $xml .= "\n"; - $xml .= "".xmlTexto_prepara($row["nome_subgrupo"])."\n"; - $xml .= "".xmlTexto_prepara($row["perfil"])."\n"; - if(isset($tipo) && ($tipo == "temas") || ($tipo == "")) - $xml = geraXmlMenutemas_pegatemas($row["id_n2"],$xml,$dbh,$perfil); - $xml .= "\n"; - } - } - return $xml; -} -function geraXmlMenutemas_pegatemas($id_n2,$xml,$dbh,$perfil) -{ - global $esquemaadmin; - xml_testaNum([$id_n2]); - $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,n3.n3_perfil as perfil from ".$esquemaadmin."i3geoadmin_n3 as n3,".$esquemaadmin."i3geoadmin_temas as temas where n3.id_n2 = $id_n2 and n3.id_tema = temas.id_tema "; - $qtemas = $dbh->query($q); - $xml = geraXmlMenutemas_notema($qtemas,$xml,$perfil); - return $xml; -} -function geraXmlMenutemas_notema($qtemas,$xml,$perfil) -{ - global $esquemaadmin; - foreach($qtemas as $row) - { - if($row["perfil"] == "") - {$mostra = true;} - else - { - $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); - $mostra = array_in_array($perfil,$perfilatual); - } - if($mostra) - { - $xml .= "\n"; - $xml .= "".$row["codigo_tema"]."\n"; - $xml .= "".$row["perfil"]."\n"; - $xml .= "".xmlTexto_prepara($row["nome_tema"])."\n"; - $xml .= "".xmlTexto_prepara($row["desc_tema"])."\n"; - $xml .= "\n"; - $xml .= "".$row["tipoa_tema"]."\n"; - $xml .= "".xmlTexto_prepara($row["tags_tema"])."\n"; - $xml .= "".$row["kml_tema"]."\n"; - if($row["tipoa_tema"] == "WMS") - {$xml .= "nao\n";} - else - {$xml .= "".$row["ogc_tema"]."\n";} - $xml .= "".$row["download_tema"]."\n"; - $xml .= "\n"; - $xml .= "\n"; - } - } - return $xml; -} -function geraXmlAtlas_pegapranchas($xml,$id_atlas,$dbh) -{ - global $esquemaadmin; - xml_testaNum([$id_atlas]); - $q = "select * from ".$esquemaadmin."i3geoadmin_atlasp as p where p.id_atlas = $id_atlas order by ordem_prancha"; - $qpranchas = $dbh->query($q); - foreach($qpranchas as $row) - { - $xml .= " \n"; - $xml .= " ".$row["id_prancha"]."\n"; - $xml .= " ".xmlTexto_prepara($row["titulo_prancha"])."\n"; - $xml .= " ".xmlTexto_prepara($row["desc_prancha"])."\n"; - $xml .= " ".$row["icone_prancha"]."\n"; - $xml .= " \n"; - $xml .= " ".$row["w_prancha"]."\n"; - $xml .= " ".$row["h_prancha"]."\n"; - $xml .= " ".$row["mapext_prancha"]."\n"; - $xml .= " \n"; - $xml = geraXmlAtlas_pegatemas($xml,$row["id_prancha"],$dbh); - $xml .= " \n"; - $xml .= " \n"; - } - return $xml; -} -function geraXmlAtlas_pegatemas($xml,$id_prancha,$dbh) -{ - global $esquemaadmin; - xml_testaNum([$id_prancha]); - $q = "select t.codigo_tema,t.ligado_tema from ".$esquemaadmin."i3geoadmin_atlast as t where t.id_prancha = '$id_prancha' order by ordem_tema"; - //echo $q; - $qtemas = $dbh->query($q); - foreach($qtemas as $row) - { - $xml .= "\n"; - $xml .= "".$row["codigo_tema"]."\n"; - $xml .= "".$row["ligado_tema"]."\n"; - $xml .= "\n"; - } - return $xml; -} -function geraXmlSistemas_pegafuncoes($perfil,$xml,$id_sistema,$dbh) -{ - global $esquemaadmin; - xml_testaNum([$id_sistema]); - $q = "select * from ".$esquemaadmin."i3geoadmin_sistemasf where id_sistema = '$id_sistema'"; - $qtemas = $dbh->query($q); - foreach($qtemas as $row) - { - if($row["perfil_funcao"] == "") - $mostra = true; - else - { - $perfilF = explode(" ",str_replace(","," ",$row["perfil_funcao"])); - $mostra = array_in_array($perfil,$perfilF); - } - if($mostra) - { - $xml .= "\n"; - $xml .= " ".xmlTexto_prepara($row["nome_funcao"])."\n"; - $xml .= " ".xmlTexto_prepara($row["abrir_funcao"])."\n"; - $xml .= " ".$row["w_funcao"]."\n"; - $xml .= " ".$row["h_funcao"]."\n"; - $xml .= " ".$row["perfil_funcao"]."\n"; - $xml .= "\n"; - } - } - return $xml; -} -function array_in_array($needle, $haystack) -{ - //Make sure $needle is an array for foreach - if(!is_array($needle)) $needle = array($needle); - //For each value in $needle, return TRUE if in $haystack - foreach($needle as $pin) - if(in_array($pin, $haystack)) return TRUE; - //Return FALSE if none of the values from $needle are found in $haystack - return FALSE; -} -function xmlTexto_prepara($texto) -{ - return str_replace("&","&",$texto); -} -function entity_decode($texto) -{ - return html_entity_decode($texto); -} -function xml_testaNum($valores){ - foreach ($valores as $valor) { - if(!empty($valor) && !is_numeric($valor)) { - ob_clean(); - header ( "HTTP/1.1 403 valor nao numerico" ); - exit; - } - } -} -?> diff --git a/admin/php/xxxxml.php b/admin/php/xxxxml.php new file mode 100755 index 0000000..51a3b72 --- /dev/null +++ b/admin/php/xxxxml.php @@ -0,0 +1,972 @@ +"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + $q = "select * from ".$esquemaadmin."i3geoadmin_sistemas"; + $qatlas = $dbh->query($q); + foreach($qatlas as $row) + { + if($row["perfil_sistema"] == "") + $mostra = true; + else + { + $perfilS = explode(" ",str_replace(","," ",$row["perfil_sistema"])); + $mostra = array_in_array($perfil,$perfilS); + } + if(strtolower($row["publicado_sistema"] == "nao")) + {$mostra = false;} + if($editor) + {$mostra = true;} + if($mostra) + { + $xml .= "\n"; + $xml .= " ".$row["perfil_sistema"]."\n"; + $xml .= " ".$row["publicado_sistema"]."\n"; + $xml .= " ".xmlTexto_prepara($row["nome_sistema"])."\n"; + $xml = geraXmlSistemas_pegafuncoes($perfil,$xml,$row["id_sistema"],$dbh); + $xml .= "\n"; + } + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +/* +Function: geraRSScomentariosTemas + +RSS com os comentarios sobre um ou todos os temas + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +id_tema {numeric} - (opcional) id do tema para mostrar apenas os comentários de um tema + +Retorno: + +RSS +*/ +function geraRSScomentariosTemas($locaplic,$id_tema=""){ + global $esquemaadmin; + xml_testaNum([$id_tema]); + $sql = "select '' as tipo_ws, b.nome_tema||' '||a.data as nome_ws,a.openidnome||' '||a.openidurl||' <br>'||a.comentario as desc_ws, a.openidnome as autor_ws, b.link_tema as link_ws from ".$esquemaadmin."i3geoadmin_comentarios as a,".$esquemaadmin."i3geoadmin_temas as b where a.id_tema = b.id_tema "; + if($id_tema != ""){ + $sql .= " and a.id_tema = $id_tema "; + } + return geraXmlRSS($locaplic,$sql,"Lista de comentarios"); +} +/* +Function: geraRSStemas + +RSS com os temas cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +id_n2 {string} - c�digo do subgrupo do sistema de administração + +Retorno: + +RSS +*/ +function geraRSStemas($locaplic,$id_n2,$output="xml") +{ + global $esquemaadmin; + xml_testaNum([$id_n2]); + $sql = " + select '' as tipo_ws, i3geoadmin_temas.codigo_tema as id_ws,i3geoadmin_temas.nome_tema as nome_ws,'' as desc_ws,'php/parsemapfile.php?id='||i3geoadmin_temas.codigo_tema as link_ws,i3geoadmin_temas.link_tema as autor_ws + from ".$esquemaadmin."i3geoadmin_n3 as n3 + LEFT JOIN ".$esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = n3.id_tema + LEFT JOIN ".$esquemaadmin."i3geousr_grupotema ON n3.id_tema = i3geousr_grupotema.id_tema + where i3geousr_grupotema.id_grupo is null and i3geoadmin_temas.id_tema = n3.id_tema and n3.id_n2 = '$id_n2' and n3.n3_perfil = '' and n3.publicado != 'NAO' order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Lista de temas",$output); +} +/* +Function: geraRSStemasRaiz + +RSS com os temas localizados na raiz de um nível + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +id {string} - codigo do no + +nivel {string} - nível do no + +Retorno: + +RSS +*/ +function geraRSStemasRaiz($locaplic,$id,$nivel) +{ + global $esquemaadmin; + xml_testaNum([$id,$nivel]); + $sql = " + select '' as tipo_ws, i3geoadmin_temas.codigo_tema as id_ws,i3geoadmin_temas.nome_tema as nome_ws,'' as desc_ws,'php/parsemapfile.php?id='||i3geoadmin_temas.codigo_tema as link_ws,i3geoadmin_temas.link_tema as autor_ws + from ".$esquemaadmin."i3geoadmin_raiz as r + LEFT JOIN ".$esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = r.id_tema + LEFT JOIN ".$esquemaadmin."i3geousr_grupotema ON r.id_tema = i3geousr_grupotema.id_tema + where i3geousr_grupotema.id_grupo is null and i3geoadmin_temas.id_tema = r.id_tema and r.nivel = '$nivel' and r.id_nivel = '$id' order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Temas na raiz"); +} +/* +Function: geraRSSsubgrupos + +RSS com os subgrupos cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +id_n1 {string} - c�digo do grupo do sistema de administração + +Retorno: + +RSS +*/ +function geraRSSsubgrupos($locaplic,$id_n1,$output="json") +{ + global $esquemaadmin; + xml_testaNum([$id_n1]); + $sql = "select '' as tipo_ws, n2.id_n2 as id_ws,g.nome_subgrupo as nome_ws,'' as desc_ws,'rsstemas.php?id='||n2.id_n2 as link_ws,'' as autor_ws from ".$esquemaadmin."i3geoadmin_n2 as n2,".$esquemaadmin."i3geoadmin_subgrupos as g "; + $sql .= " where g.id_subgrupo = n2.id_subgrupo and n2.id_n1 = '$id_n1' and n2.n2_perfil = '' and n2.publicado != 'NAO' order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Lista de sub-grupos",$output); +} +/* +Function: geraRSSgrupos + +RSS com os grupos cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraRSSgrupos($locaplic,$output="xml") +{ + global $esquemaadmin; + $sql = "select '' as tipo_ws, n1.id_n1 as id_ws, g.nome_grupo as nome_ws,'rsstemasraiz.php?nivel=1&id='||n1.id_n1 as desc_ws,'rsssubgrupos.php?id='||n1.id_n1 as link_ws,'' as autor_ws "; + $sql .= "from ".$esquemaadmin."i3geoadmin_n1 as n1,".$esquemaadmin."i3geoadmin_grupos as g "; + $sql .= "where g.id_grupo = n1.id_grupo and n1.n1_perfil = '' and n1.publicado != 'NAO' group by id_ws,tipo_ws,nome_ws,desc_ws,link_ws,autor_ws order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Lista de grupos",$output); +} +/* +Function: geraXmlDownload + +RSS com os links para sistemas de download + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlDownload($locaplic) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'DOWNLOAD' and nome_ws <> ''"; + return geraXmlRSS($locaplic,$sql,"Enderecos para download"); +} +/* +Function: geraXmlWS + +RSS com a lista de WS cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlWS($locaplic,$output) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'WS' and nome_ws <> ''"; + return geraXmlRSS($locaplic,$sql,"Web services",$output); +} +/* +Function: geraXmlKmlrss + +RSS com a lista de KML cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlKmlrss($locaplic) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'KML' and nome_ws <> ''"; + return geraXmlRSS($locaplic,$sql,"Web services"); +} +/* +Function: geraXmlWMS + +RSS com a lista de WMS cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlWMS($locaplic,$output) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where (tipo_ws = 'WMS' or tipo_ws = 'WMS-Tile') and nome_ws <> '' order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Web services WMS-OGC",$output); +} +/* +Function: geraXmlWMSmetaestat + +RSS com a lista de WMS das variaveis cadastradas no sistema de metadados estatisticos + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlWMSmetaestat($locaplic) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $c = "/admin/php/xml.php"; + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ + $c = "\admin\php\xml.php"; + } + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); + $sql = "select DISTINCT b.id_medida_variavel as id_ws, 'WMSMETAESTAT' as tipo_ws,'".$url."/ogc.php?id_medida_variavel='||b.id_medida_variavel as link_ws,a.nome||' -> '||b.nomemedida as nome_ws,a.descricao as desc_ws, '' as autor_ws from i3geoestat_variavel as a ,i3geoestat_medida_variavel as b WHERE a.codigo_variavel = b.codigo_variavel ORDER BY a.nome"; + return geraXmlRSS($locaplic,$sql,"Web services WMS-TIME OGC"); +} +/* +Function: geraXmlGeorss + +RSS com a lista de GEORSS cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlGeorss($locaplic,$output) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'GEORSS' and nome_ws <> ''"; + return geraXmlRSS($locaplic,$sql,"Georss",$output); +} +/* +Function: geraRSStemasDownload + +RSS com a lista de temas para download + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraRSStemasDownload($locaplic) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemasdownload.php","",$_SERVER['PHP_SELF'])); + $sql = "select '' as tipo_ws,'".$url."/datadownload.htm?'||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; + $sql .= " + from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg + where + t.id_tema = n3.id_tema + and n3.id_n2 = n2.id_n2 + and n2.id_subgrupo = sg.id_subgrupo + and n2.id_n1 = n1.id_n1 + and n1.id_grupo = g.id_grupo + and (t.download_tema != 'nao' and t.download_tema != 'NAO') + and t.tipoa_tema != 'WMS' + and n3.n3_perfil = '' + and n2.n2_perfil = '' + and n1.n1_perfil = '' + and n3.publicado != 'NAO' + and n2.publicado != 'NAO' + and n1.publicado != 'NAO' + "; + //echo $sql;exit; + return geraXmlRSS($locaplic,$sql,"Temas para download"); +} +/* +Function: geraRSStemasKml + +RSS com a lista de temas que permitem KML + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraRSStemasKml($locaplic) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemaskml.php","",$_SERVER['PHP_SELF'])); + $sql = "select '' as tipo_ws,'".$url."/pacotes/kmlmapserver/kmlservice.php?request=kml&map='||codigo_tema||'&typename='||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; + $sql .= " + from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg + where + t.id_tema = n3.id_tema + and n3.id_n2 = n2.id_n2 + and n2.id_subgrupo = sg.id_subgrupo + and n2.id_n1 = n1.id_n1 + and n1.id_grupo = g.id_grupo + and (t.kml_tema != 'nao' and t.kml_tema != 'NAO') + and n3.n3_perfil = '' + and n2.n2_perfil = '' + and n1.n1_perfil = '' + and n3.publicado != 'NAO' + and n2.publicado != 'NAO' + and n1.publicado != 'NAO' + "; + //echo $sql;exit; + return geraXmlRSS($locaplic,$sql,"Temas em KML"); +} +/* +Function: geraRSStemasOgc + +RSS com a lista de temas que permitem serviços OGC + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraRSStemasOgc($locaplic) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemasogc.php","",$_SERVER['PHP_SELF'])); + $sql = "select '' as tipo_ws,'".$url."/ogc.php?request=getcapabilities&service=wms&tema='||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; + $sql .= " + from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg + where + t.id_tema = n3.id_tema + and n3.id_n2 = n2.id_n2 + and n2.id_subgrupo = sg.id_subgrupo + and n2.id_n1 = n1.id_n1 + and n1.id_grupo = g.id_grupo + and (t.ogc_tema != 'nao' or t.ogc_tema != 'NAO') + and t.tipoa_tema != 'WMS' + and n3.n3_perfil = '' + and n2.n2_perfil = '' + and n1.n1_perfil = '' + and n3.publicado != 'NAO' + and n2.publicado != 'NAO' + and n1.publicado != 'NAO' + "; + //echo $sql;exit; + return geraXmlRSS($locaplic,$sql,"Temas em KML"); +} +/* +Function: geraXmlRSS + +Gera um RSS com base em um SQL compatível com o sistema de administração. + +O SQL deverá retornar os itens nome_ws desc_ws e link_ws + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +sql {string} - SQL que será aplicado ao sistema de administração + +descricao {string} - descrição que será inserida no canal RSS + +output {string} - xml|json +Retorno: + +RSS +*/ +function geraXmlRSS($locaplic,$sql,$descricao,$output="xml") +{ + global $esquemaadmin; + if(empty($output)){ + $output = "xml"; + } + //var_dump($_SERVER);exit; + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + if($convUTF){ + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + } else { + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + } + $xml .= ""; + $xml .= "\n"; + $xml .= "RSS\n"; + $xml .= "".str_replace("&","&",$descricao)."\n"; + $xml .= "\n"; + $xml .= "\n"; + $xml .= "Gerado pelo i3Geo\n"; + $xml .= "pt-br\n"; + $xml .= "\n"; + $json = array( + "description"=>$descricao, + "copyright"=>"Gerado pelo i3Geo", + "language"=>"pt-br" + ); + $jsonItems = array(); + $qatlas = $dbh->query($sql); + foreach($qatlas as $row) { + $xml .= "\n"; + $xml .= "\n"; + $xml .= "".entity_decode($row["nome_ws"])."\n"; + $xml .= "".xmlTexto_prepara(entity_decode($row["desc_ws"]))."\n"; + $link = xmlTexto_prepara($row["link_ws"]); + if(stristr($link, 'http') === FALSE){ + $link = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["REQUEST_URI"])."/".$link; + } + $xml .= "\n"; + $xml .= "\n"; + $xml .= "".xmlTexto_prepara($row["autor_ws"])."\n"; + $xml .= "\n"; + $xml .= "\n"; + $xml .= "".xmlTexto_prepara($row["id_ws"])."\n"; + $xml .= "".$row["tipo_ws"]."\n"; + $xml .= "\n"; + $jsonItems[] = array( + "title"=>$row["nome_ws"], + "description"=>$row["desc_ws"], + "link"=>$link."&output=json", + "author"=>$row["autor_ws"], + "id"=>$row["id_ws"], + "tipo"=>$row["tipo_ws"] + ); + } + $json["items"] = $jsonItems; + $xml .= "\n"; + $dbh = null; + $dbhw = null; + if($output == "xml"){ + return $xml; + } + else{ + return json_encode($json); + } +} +function geraXmlAtlas($locaplic,$editores) +{ + global $esquemaadmin; + //error_reporting(0); + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + + if($convUTF) + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + //$q = "select * from i3geoadmin_atlas"; + $qatlas = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_atlas"); + + $editor = "nao";//$editor = verificaEditores($editores); + foreach($qatlas as $row) + { + $mostra = true; + if(strtolower($row["publicado_atlas"] == "nao")) + {$mostra = false;} + if($editor) + {$mostra = true;} + if($mostra) + { + $xml .= "\n"; + $xml .= " ".$row["id_atlas"]."\n"; + $xml .= " ".$row["publicado_atlas"]."\n"; + $xml .= " ".xmlTexto_prepara($row["titulo_atlas"])."\n"; + $xml .= " ".xmlTexto_prepara($row["desc_atlas"])."\n"; + $xml .= " ".$row["icone_atlas"]."\n"; + $xml .= " \n"; + $xml .= " ".xmlTexto_prepara($row["template_atlas"])."\n"; + $xml .= " ".$row["w_atlas"]."\n"; + $xml .= " ".$row["h_atlas"]."\n"; + $xml .= " ".$row["pranchadefault_atlas"]."\n"; + $xml .= " ".$row["tipoguias_atlas"]."\n"; + $xml .= " ".$row["basemapfile_atlas"]."\n"; + $xml .= " \n"; + $xml = geraXmlAtlas_pegapranchas($xml,$row["id_atlas"],$dbh); + $xml .= " \n"; + $xml .= " \n"; + } + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +function geraXmlIdentifica($perfil,$locaplic,$editores="") +{ + global $esquemaadmin; + $editor = "nao";//$editor = verificaEditores($editores); + if (!isset($perfil)){$perfil = "";} + $perfil = str_replace(","," ",$perfil); + $perfil = explode(" ",$perfil); + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + if($convUTF) + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + $q = "select * from ".$esquemaadmin."i3geoadmin_identifica "; + $qi = $dbh->query($q); + foreach($qi as $row) + { + $mostra = true; + if(strtolower($row["publicado_i"] == "nao")) + {$mostra = false;} + if($editor) + {$mostra = true;} + if($mostra) + { + $xml .= " \n"; + $xml .= " ".xmlTexto_prepara($row["nome_i"])."\n"; + $xml .= " ".xmlTexto_prepara($row["abrir_i"])."\n"; + $xml .= " ".$row["publicado_i"]."\n"; + $target = $row["target_i"]; + if($target == ""){$target = "_self";} + $xml .= " ".$target."\n"; + $xml .= " \n"; + }//error_reporting(0); + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +function geraXmlMapas($perfil,$locaplic,$editores) +{ + global $esquemaadmin; + if (!isset($perfil)){$perfil = "";} + $perfil = str_replace(","," ",$perfil); + $perfil = explode(" ",$perfil); + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + if($convUTF) + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + $q = "select * from ".$esquemaadmin."i3geoadmin_mapas"; + $q = $dbh->query($q); + $editor = "nao";//$editor = "nao";//verificaEditores($editores); + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $c = "/admin/php/xml.php"; + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ + $c = "\admin\php\xml.php"; + } + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); + foreach($q as $row) + { + $mostraMapa = false; + if($row["perfil_mapa"] == "") + {$mostraMapa = true;} + else + { + $perfilMapa = explode(" ",str_replace(","," ",$row["perfil_mapa"])); + $mostraMapa = array_in_array($perfil,$perfilMapa); + } + if(strtolower($row["publicado_mapa"] == "nao")) + {$mostraMapa = false;} + if($editor) + {$mostraMapa = true;} + + if($mostraMapa) + { + $xml .= "\n"; + $perfil = $row["perfil_mapa"]; + $xml .= " ".$perfil."\n"; + $xml .= " ".xmlTexto_prepara($row["nome_mapa"])."\n"; + $xml .= " ".xmlTexto_prepara($row["desc_mapa"])."\n"; + $xml .= " ".xmlTexto_prepara($row["imagem_mapa"])."\n"; + $xml .= " ".$row["temas_mapa"]."\n"; + $xml .= " ".$row["ligados_mapa"]."\n"; + $extensao = $row["ext_mapa"]; + $xml .= " ".$extensao."\n"; + $outros = xmlTexto_prepara($row["outros_mapa"]); + $xml .= " \n"; + $linkdireto = xmlTexto_prepara($row["linkdireto_mapa"]); + if(empty($linkdireto)){ + $linkdireto = $url."/ms_criamapa.php?mapext=".$extensao."&perfil=".$perfil."&temasa=".$temas."&layers=".$ligados.$row["outros_mapa"]; + $linkdireto = xmlTexto_prepara($linkdireto); + } + $xml .= " \n"; + $xml .= " ".$row["publicado_mapa"]."\n"; + $xml .= " ".$row["id_mapa"]."\n"; + if($row["mapfile"] != ""){ + $xml .= " sim\n"; + } + else{ + $xml .= " nao\n"; + } + $xml .= "\n"; + } + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +//mostra apenas os mapas que possuem outros_mapa definido, o que e tipico do sistema de metadados estatisticos +function geraRSSmapas($locaplic,$output) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $c = "/admin/php/xml.php"; + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ + $c = "\admin\php\xml.php"; + } + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); + $descricao = "'"; + $descricao .= "Openlayers 1

"; + $descricao .= "Openlayers 2

"; + $descricao .= "Openlayers 3

"; + $descricao .= "Openlayers 4

"; + $descricao .= "]]>'"; + $sql = "select '' as tipo_ws,'".$url."/ms_criamapa.php?restauramapa='||id_mapa as link_ws, nome_mapa as nome_ws, ".$descricao." as desc_ws, '' as autor_ws from ".$esquemaadmin."i3geoadmin_mapas WHERE publicado_mapa = 'sim' AND mapfile != ''"; + //echo $sql;exit; + return geraXmlRSS($locaplic,$sql,"Mapas cadastrados",$output); +} + +// +//$id_menu = id do menu que será montado +//$perfil = perfis separados por espaços +//$tipo = gruposeraiz|subgrupos|temas +//$dbh objeto com a conexão com o banco +//$locaplic = localização do i3geo no servidor +// +function geraXmlMenutemas($perfil,$id_menu,$tipo,$locaplic) +{ + global $esquemaadmin; + xml_testaNum([$id_menu]); + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + if (!isset($perfil)){$perfil = "";} + $perfil = str_replace(","," ",$perfil); + $perfil = explode(" ",$perfil); + if($convUTF) + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + if(!isset($id_menu)) + $xml .= "Utilize ?id_menu=1 por exemplo\n"; + else + $xml .= "\n"; + // + //pega os temas na raiz + // + $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,r.perfil as perfil from ".$esquemaadmin."i3geoadmin_raiz as r,".$esquemaadmin."i3geoadmin_temas as temas where r.id_nivel = 0 and r.id_tema = temas.id_tema and r.id_menu = $id_menu "; + $qtemasraiz = $dbh->query($q); + $xml = geraXmlMenutemas_notema($qtemasraiz,$xml,$perfil); + $q = "select nome_grupo,desc_grupo,n1.id_grupo,n1.id_n1,n1.n1_perfil as perfil from ".$esquemaadmin."i3geoadmin_n1 as n1,".$esquemaadmin."i3geoadmin_grupos as grupos where n1.id_menu = $id_menu and n1.id_grupo = grupos.id_grupo "; + $qgrupos = $dbh->query($q); + foreach($qgrupos as $row) + { + //filtra pelo perfil + if($row["perfil"] == "") + {$mostra = true;} + else + { + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + $xml .= "\n"; + $xml .= " ".xmlTexto_prepara($row["nome_grupo"])."\n"; + // + //pega temas na raiz + // + $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,r.perfil as perfil from ".$esquemaadmin."i3geoadmin_raiz as r,".$esquemaadmin."i3geoadmin_temas as temas where r.nivel = 1 and r.id_nivel = ".$row["id_n1"]." and r.id_tema = temas.id_tema and r.id_menu = $id_menu "; + $qtemasraiz = $dbh->query($q); + $xml = geraXmlMenutemas_notema($qtemasraiz,$xml,$perfil); + if(isset($tipo) && ($tipo == "subgrupos") || ($tipo == "")) + $xml = geraXmlMenutemas_pegasubgrupos($row["id_n1"],$xml,$dbh,$tipo,$perfil); + $xml .= " ".xmlTexto_prepara($row["desc_grupo"])."\n"; + $xml .= " ".$row["perfil"]."\n"; + $xml .= "\n"; + } + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +function geraXmlMenutemas_pegasubgrupos($id_n1,$xml,$dbh,$tipo,$perfil) +{ + global $esquemaadmin; + xml_testaNum([$id_n1]); + $q = "select subgrupos.id_subgrupo,nome_subgrupo,id_n2,n2.n2_perfil as perfil from ".$esquemaadmin."i3geoadmin_n2 as n2,".$esquemaadmin."i3geoadmin_subgrupos as subgrupos where n2.id_n1 = $id_n1 and n2.id_subgrupo = subgrupos.id_subgrupo "; + //echo $q;exit; + $qsgrupos = $dbh->query($q); + foreach($qsgrupos as $row) + { + if($row["perfil"] == "") + $mostra = true; + else + { + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + $xml .= "\n"; + $xml .= "".xmlTexto_prepara($row["nome_subgrupo"])."\n"; + $xml .= "".xmlTexto_prepara($row["perfil"])."\n"; + if(isset($tipo) && ($tipo == "temas") || ($tipo == "")) + $xml = geraXmlMenutemas_pegatemas($row["id_n2"],$xml,$dbh,$perfil); + $xml .= "\n"; + } + } + return $xml; +} +function geraXmlMenutemas_pegatemas($id_n2,$xml,$dbh,$perfil) +{ + global $esquemaadmin; + xml_testaNum([$id_n2]); + $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,n3.n3_perfil as perfil from ".$esquemaadmin."i3geoadmin_n3 as n3,".$esquemaadmin."i3geoadmin_temas as temas where n3.id_n2 = $id_n2 and n3.id_tema = temas.id_tema "; + $qtemas = $dbh->query($q); + $xml = geraXmlMenutemas_notema($qtemas,$xml,$perfil); + return $xml; +} +function geraXmlMenutemas_notema($qtemas,$xml,$perfil) +{ + global $esquemaadmin; + foreach($qtemas as $row) + { + if($row["perfil"] == "") + {$mostra = true;} + else + { + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + $xml .= "\n"; + $xml .= "".$row["codigo_tema"]."\n"; + $xml .= "".$row["perfil"]."\n"; + $xml .= "".xmlTexto_prepara($row["nome_tema"])."\n"; + $xml .= "".xmlTexto_prepara($row["desc_tema"])."\n"; + $xml .= "\n"; + $xml .= "".$row["tipoa_tema"]."\n"; + $xml .= "".xmlTexto_prepara($row["tags_tema"])."\n"; + $xml .= "".$row["kml_tema"]."\n"; + if($row["tipoa_tema"] == "WMS") + {$xml .= "nao\n";} + else + {$xml .= "".$row["ogc_tema"]."\n";} + $xml .= "".$row["download_tema"]."\n"; + $xml .= "\n"; + $xml .= "\n"; + } + } + return $xml; +} +function geraXmlAtlas_pegapranchas($xml,$id_atlas,$dbh) +{ + global $esquemaadmin; + xml_testaNum([$id_atlas]); + $q = "select * from ".$esquemaadmin."i3geoadmin_atlasp as p where p.id_atlas = $id_atlas order by ordem_prancha"; + $qpranchas = $dbh->query($q); + foreach($qpranchas as $row) + { + $xml .= " \n"; + $xml .= " ".$row["id_prancha"]."\n"; + $xml .= " ".xmlTexto_prepara($row["titulo_prancha"])."\n"; + $xml .= " ".xmlTexto_prepara($row["desc_prancha"])."\n"; + $xml .= " ".$row["icone_prancha"]."\n"; + $xml .= " \n"; + $xml .= " ".$row["w_prancha"]."\n"; + $xml .= " ".$row["h_prancha"]."\n"; + $xml .= " ".$row["mapext_prancha"]."\n"; + $xml .= " \n"; + $xml = geraXmlAtlas_pegatemas($xml,$row["id_prancha"],$dbh); + $xml .= " \n"; + $xml .= " \n"; + } + return $xml; +} +function geraXmlAtlas_pegatemas($xml,$id_prancha,$dbh) +{ + global $esquemaadmin; + xml_testaNum([$id_prancha]); + $q = "select t.codigo_tema,t.ligado_tema from ".$esquemaadmin."i3geoadmin_atlast as t where t.id_prancha = '$id_prancha' order by ordem_tema"; + //echo $q; + $qtemas = $dbh->query($q); + foreach($qtemas as $row) + { + $xml .= "\n"; + $xml .= "".$row["codigo_tema"]."\n"; + $xml .= "".$row["ligado_tema"]."\n"; + $xml .= "\n"; + } + return $xml; +} +function geraXmlSistemas_pegafuncoes($perfil,$xml,$id_sistema,$dbh) +{ + global $esquemaadmin; + xml_testaNum([$id_sistema]); + $q = "select * from ".$esquemaadmin."i3geoadmin_sistemasf where id_sistema = '$id_sistema'"; + $qtemas = $dbh->query($q); + foreach($qtemas as $row) + { + if($row["perfil_funcao"] == "") + $mostra = true; + else + { + $perfilF = explode(" ",str_replace(","," ",$row["perfil_funcao"])); + $mostra = array_in_array($perfil,$perfilF); + } + if($mostra) + { + $xml .= "\n"; + $xml .= " ".xmlTexto_prepara($row["nome_funcao"])."\n"; + $xml .= " ".xmlTexto_prepara($row["abrir_funcao"])."\n"; + $xml .= " ".$row["w_funcao"]."\n"; + $xml .= " ".$row["h_funcao"]."\n"; + $xml .= " ".$row["perfil_funcao"]."\n"; + $xml .= "\n"; + } + } + return $xml; +} +function array_in_array($needle, $haystack) +{ + //Make sure $needle is an array for foreach + if(!is_array($needle)) $needle = array($needle); + //For each value in $needle, return TRUE if in $haystack + foreach($needle as $pin) + if(in_array($pin, $haystack)) return TRUE; + //Return FALSE if none of the values from $needle are found in $haystack + return FALSE; +} +function xmlTexto_prepara($texto) +{ + return str_replace("&","&",$texto); +} +function entity_decode($texto) +{ + return html_entity_decode($texto); +} +function xml_testaNum($valores){ + foreach ($valores as $valor) { + if(!empty($valor) && !is_numeric($valor)) { + ob_clean(); + header ( "HTTP/1.1 403 valor nao numerico" ); + exit; + } + } +} +?> diff --git a/admin1/php/funcoesAdmin.php b/admin1/php/funcoesAdmin.php index 78ddc40..21a04fa 100755 --- a/admin1/php/funcoesAdmin.php +++ b/admin1/php/funcoesAdmin.php @@ -1,7 +1,6 @@ " diff --git a/classesphp/atlas_controle.php b/classesphp/atlas_controle.php index 3340c53..503bb0b 100755 --- a/classesphp/atlas_controle.php +++ b/classesphp/atlas_controle.php @@ -116,7 +116,7 @@ if ($map_file != ""){ } -include($locaplic."/admin/php/xml.php"); +include($locaplic."/classesphp/xml.php"); $xml = geraXmlAtlas($locaplic,$editores); diff --git a/classesphp/classe_menutemas.php b/classesphp/classe_menutemas.php index ddfa23f..17c57a2 100755 --- a/classesphp/classe_menutemas.php +++ b/classesphp/classe_menutemas.php @@ -248,7 +248,7 @@ array {$this->xml = simplexml_load_file($locmapas);} else { - include_once($this->locaplic."/admin/php/xml.php"); + include_once($this->locaplic."/classesphp/xml.php"); $this->xml = simplexml_load_string(geraXmlMapas(implode(" ",$this->perfil),$this->locaplic)); } //print_r($this->xml);exit; @@ -293,7 +293,7 @@ Array function pegaSistemas() { //error_reporting(0); - include_once($this->locaplic."/admin/php/xml.php"); + include_once($this->locaplic."/classesphp/xml.php"); $xmlsistemas = simplexml_load_string(geraXmlSistemas(implode(" ",$this->perfil),$this->locaplic)); $sistemas = array(); foreach($xmlsistemas->SISTEMA as $s) @@ -339,7 +339,7 @@ Array function pegaSistemasI() { //error_reporting(0); - include_once($this->locaplic."/admin/php/xml.php"); + include_once($this->locaplic."/classesphp/xml.php"); $xmlsistemas = simplexml_load_string(geraXmlIdentifica(implode(" ",$this->perfil),$this->locaplic)); $sistemas = array(); @@ -371,7 +371,7 @@ $procurar - String que será procurada. */ function procurartemas($procurar) { - include_once($this->locaplic."/admin/php/xml.php"); + include_once($this->locaplic."/classesphp/xml.php"); $tipo = ""; $this->xml = ""; if($this->menutemas != "") @@ -536,7 +536,7 @@ nrss - (opcional) número de registros no rss que serão considerado */ function listaTags($rss="",$nrss="") { - include_once($this->locaplic."/admin/php/xml.php"); + include_once($this->locaplic."/classesphp/xml.php"); $tipo = ""; //carrega os títulos e links do rss especificado $noticiasRSS = array(); //guarda as notícias originais do RRS diff --git a/classesphp/classe_temas.php b/classesphp/classe_temas.php index 7053c29..9685296 100755 --- a/classesphp/classe_temas.php +++ b/classesphp/classe_temas.php @@ -1105,7 +1105,7 @@ tema - codigo do tema */ function fonteTema($tema) { - include_once($this->locaplic."/admin/php/xml.php"); + include_once($this->locaplic."/classesphp/xml.php"); require($this->locaplic."/classesphp/classe_menutemas.php"); $menutemas = new Menutemas("","","",$this->locaplic); $linkfonte = "erro"; @@ -1380,8 +1380,8 @@ Adiciona LABEL em uma classe de um tema $label->set("type",MS_TRUETYPE); $label->set("font","arial"); $label->set("size",0); - $label->removeBinding(0); - $classe->settext($texto); + $label->removeBinding(0); + $classe->settext($texto); } /* $nlabel = $classe->numlabels; diff --git a/classesphp/wscliente.php b/classesphp/wscliente.php index 5c2beab..ae93e97 100755 --- a/classesphp/wscliente.php +++ b/classesphp/wscliente.php @@ -421,7 +421,7 @@ function listaRSSws2() global $cp,$rss,$locaplic,$tipo; if(!isset($tipo)){$tipo = "GEORSS";} include_once("$locaplic/classesphp/funcoes_gerais.php"); - include_once("$locaplic/admin/php/xml.php"); + include_once("$locaplic/classesphp/xml.php"); include_once("$locaplic/ms_configura.php"); $rsss = explode("|",$rss); if(count($rsss) == 0){$rsss = array(" ");} @@ -496,7 +496,7 @@ function listaRSSwsARRAY() if(!isset($tipo)){$tipo = "GEORSS";} include_once("$locaplic/classesphp/funcoes_gerais.php"); - include_once("$locaplic/admin/php/xml.php"); + include_once("$locaplic/classesphp/xml.php"); include_once("$locaplic/ms_configura.php"); $rsss = explode("|",$rss); if(count($rsss) == 0){ diff --git a/classesphp/xml.php b/classesphp/xml.php new file mode 100755 index 0000000..e82e0ce --- /dev/null +++ b/classesphp/xml.php @@ -0,0 +1,947 @@ +"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + $q = "select * from ".$esquemaadmin."i3geoadmin_sistemas"; + $qatlas = $dbh->query($q); + foreach($qatlas as $row) + { + if($row["perfil_sistema"] == "") + $mostra = true; + else + { + $perfilS = explode(" ",str_replace(","," ",$row["perfil_sistema"])); + $mostra = array_in_array($perfil,$perfilS); + } + if(strtolower($row["publicado_sistema"] == "nao")) + {$mostra = false;} + if($editor) + {$mostra = true;} + if($mostra) + { + $xml .= "\n"; + $xml .= " ".$row["perfil_sistema"]."\n"; + $xml .= " ".$row["publicado_sistema"]."\n"; + $xml .= " ".xmlTexto_prepara($row["nome_sistema"])."\n"; + $xml = geraXmlSistemas_pegafuncoes($perfil,$xml,$row["id_sistema"],$dbh); + $xml .= "\n"; + } + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +/* +Function: geraRSStemas + +RSS com os temas cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +id_n2 {string} - c�digo do subgrupo do sistema de administração + +Retorno: + +RSS +*/ +function geraRSStemas($locaplic,$id_n2,$output="xml") +{ + global $esquemaadmin; + xml_testaNum([$id_n2]); + $sql = " + select '' as tipo_ws, i3geoadmin_temas.codigo_tema as id_ws,i3geoadmin_temas.nome_tema as nome_ws,'' as desc_ws,'../ms_criamapa.php?layers='||i3geoadmin_temas.codigo_tema as link_ws,i3geoadmin_temas.link_tema as autor_ws + from ".$esquemaadmin."i3geoadmin_n3 as n3 + LEFT JOIN ".$esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = n3.id_tema + LEFT JOIN ".$esquemaadmin."i3geousr_grupotema ON n3.id_tema = i3geousr_grupotema.id_tema + where i3geousr_grupotema.id_grupo is null and i3geoadmin_temas.id_tema = n3.id_tema and n3.id_n2 = '$id_n2' and n3.n3_perfil = '' and n3.publicado != 'NAO' order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Lista de temas",$output); +} +/* +Function: geraRSStemasRaiz + +RSS com os temas localizados na raiz de um nível + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +id {string} - codigo do no + +nivel {string} - nível do no + +Retorno: + +RSS +*/ +function geraRSStemasRaiz($locaplic,$id,$nivel) +{ + global $esquemaadmin; + xml_testaNum([$id,$nivel]); + $sql = " + select '' as tipo_ws, i3geoadmin_temas.codigo_tema as id_ws,i3geoadmin_temas.nome_tema as nome_ws,'' as desc_ws,'../ms_criamapa.php?layers='||i3geoadmin_temas.codigo_tema as link_ws,i3geoadmin_temas.link_tema as autor_ws + from ".$esquemaadmin."i3geoadmin_raiz as r + LEFT JOIN ".$esquemaadmin."i3geoadmin_temas ON i3geoadmin_temas.id_tema = r.id_tema + LEFT JOIN ".$esquemaadmin."i3geousr_grupotema ON r.id_tema = i3geousr_grupotema.id_tema + where i3geousr_grupotema.id_grupo is null and i3geoadmin_temas.id_tema = r.id_tema and r.nivel = '$nivel' and r.id_nivel = '$id' order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Temas na raiz"); +} +/* +Function: geraRSSsubgrupos + +RSS com os subgrupos cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +id_n1 {string} - c�digo do grupo do sistema de administração + +Retorno: + +RSS +*/ +function geraRSSsubgrupos($locaplic,$id_n1,$output="json") +{ + global $esquemaadmin; + xml_testaNum([$id_n1]); + $sql = "select '' as tipo_ws, n2.id_n2 as id_ws,g.nome_subgrupo as nome_ws,'' as desc_ws,'rsstemas.php?id='||n2.id_n2 as link_ws,'' as autor_ws from ".$esquemaadmin."i3geoadmin_n2 as n2,".$esquemaadmin."i3geoadmin_subgrupos as g "; + $sql .= " where g.id_subgrupo = n2.id_subgrupo and n2.id_n1 = '$id_n1' and n2.n2_perfil = '' and n2.publicado != 'NAO' order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Lista de sub-grupos",$output); +} +/* +Function: geraRSSgrupos + +RSS com os grupos cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraRSSgrupos($locaplic,$output="xml") +{ + global $esquemaadmin; + $sql = "select '' as tipo_ws, n1.id_n1 as id_ws, g.nome_grupo as nome_ws,'rsstemasraiz.php?nivel=1&id='||n1.id_n1 as desc_ws,'rsssubgrupos.php?id='||n1.id_n1 as link_ws,'' as autor_ws "; + $sql .= "from ".$esquemaadmin."i3geoadmin_n1 as n1,".$esquemaadmin."i3geoadmin_grupos as g "; + $sql .= "where g.id_grupo = n1.id_grupo and n1.n1_perfil = '' and n1.publicado != 'NAO' group by id_ws,tipo_ws,nome_ws,desc_ws,link_ws,autor_ws order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Lista de grupos",$output); +} +/* +Function: geraXmlDownload + +RSS com os links para sistemas de download + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlDownload($locaplic) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'DOWNLOAD' and nome_ws <> ''"; + return geraXmlRSS($locaplic,$sql,"Enderecos para download"); +} +/* +Function: geraXmlWS + +RSS com a lista de WS cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlWS($locaplic,$output) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'WS' and nome_ws <> ''"; + return geraXmlRSS($locaplic,$sql,"Web services",$output); +} +/* +Function: geraXmlKmlrss + +RSS com a lista de KML cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlKmlrss($locaplic) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'KML' and nome_ws <> ''"; + return geraXmlRSS($locaplic,$sql,"Web services"); +} +/* +Function: geraXmlWMS + +RSS com a lista de WMS cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlWMS($locaplic,$output) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where (tipo_ws = 'WMS' or tipo_ws = 'WMS-Tile') and nome_ws <> '' order by nome_ws"; + return geraXmlRSS($locaplic,$sql,"Web services WMS-OGC",$output); +} +/* +Function: geraXmlWMSmetaestat + +RSS com a lista de WMS das variaveis cadastradas no sistema de metadados estatisticos + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlWMSmetaestat($locaplic) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $c = "/classesphp/xml.php"; + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ + $c = "\classesphp\xml.php"; + } + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); + $sql = "select DISTINCT b.id_medida_variavel as id_ws, 'WMSMETAESTAT' as tipo_ws,'".$url."/ogc.php?id_medida_variavel='||b.id_medida_variavel as link_ws,a.nome||' -> '||b.nomemedida as nome_ws,a.descricao as desc_ws, '' as autor_ws from i3geoestat_variavel as a ,i3geoestat_medida_variavel as b WHERE a.codigo_variavel = b.codigo_variavel ORDER BY a.nome"; + return geraXmlRSS($locaplic,$sql,"Web services WMS-TIME OGC"); +} +/* +Function: geraXmlGeorss + +RSS com a lista de GEORSS cadastrados + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraXmlGeorss($locaplic,$output) +{ + global $esquemaadmin; + $sql = "select * from ".$esquemaadmin."i3geoadmin_ws where tipo_ws = 'GEORSS' and nome_ws <> ''"; + return geraXmlRSS($locaplic,$sql,"Georss",$output); +} +/* +Function: geraRSStemasDownload + +RSS com a lista de temas para download + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraRSStemasDownload($locaplic) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemasdownload.php","",$_SERVER['PHP_SELF'])); + $sql = "select '' as tipo_ws,'".$url."/datadownload.htm?'||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; + $sql .= " + from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg + where + t.id_tema = n3.id_tema + and n3.id_n2 = n2.id_n2 + and n2.id_subgrupo = sg.id_subgrupo + and n2.id_n1 = n1.id_n1 + and n1.id_grupo = g.id_grupo + and (t.download_tema != 'nao' and t.download_tema != 'NAO') + and t.tipoa_tema != 'WMS' + and n3.n3_perfil = '' + and n2.n2_perfil = '' + and n1.n1_perfil = '' + and n3.publicado != 'NAO' + and n2.publicado != 'NAO' + and n1.publicado != 'NAO' + "; + //echo $sql;exit; + return geraXmlRSS($locaplic,$sql,"Temas para download"); +} +/* +Function: geraRSStemasKml + +RSS com a lista de temas que permitem KML + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraRSStemasKml($locaplic) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemaskml.php","",$_SERVER['PHP_SELF'])); + $sql = "select '' as tipo_ws,'".$url."/pacotes/kmlmapserver/kmlservice.php?request=kml&map='||codigo_tema||'&typename='||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; + $sql .= " + from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg + where + t.id_tema = n3.id_tema + and n3.id_n2 = n2.id_n2 + and n2.id_subgrupo = sg.id_subgrupo + and n2.id_n1 = n1.id_n1 + and n1.id_grupo = g.id_grupo + and (t.kml_tema != 'nao' and t.kml_tema != 'NAO') + and n3.n3_perfil = '' + and n2.n2_perfil = '' + and n1.n1_perfil = '' + and n3.publicado != 'NAO' + and n2.publicado != 'NAO' + and n1.publicado != 'NAO' + "; + //echo $sql;exit; + return geraXmlRSS($locaplic,$sql,"Temas em KML"); +} +/* +Function: geraRSStemasOgc + +RSS com a lista de temas que permitem serviços OGC + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +Retorno: + +RSS +*/ +function geraRSStemasOgc($locaplic) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST'].(str_replace("/admin/rsstemasogc.php","",$_SERVER['PHP_SELF'])); + $sql = "select '' as tipo_ws,'".$url."/ogc.php?request=getcapabilities&service=wms&tema='||codigo_tema as link_ws, g.nome_grupo||' -> '||sg.nome_subgrupo||' -> '||nome_tema as nome_ws, desc_tema as desc_ws, link_tema as autor_ws "; + $sql .= " + from ".$esquemaadmin."i3geoadmin_temas as t,".$esquemaadmin."i3geoadmin_n3 as n3, ".$esquemaadmin."i3geoadmin_n2 as n2, ".$esquemaadmin."i3geoadmin_n1 as n1, ".$esquemaadmin."i3geoadmin_grupos as g, ".$esquemaadmin."i3geoadmin_subgrupos as sg + where + t.id_tema = n3.id_tema + and n3.id_n2 = n2.id_n2 + and n2.id_subgrupo = sg.id_subgrupo + and n2.id_n1 = n1.id_n1 + and n1.id_grupo = g.id_grupo + and (t.ogc_tema != 'nao' or t.ogc_tema != 'NAO') + and t.tipoa_tema != 'WMS' + and n3.n3_perfil = '' + and n2.n2_perfil = '' + and n1.n1_perfil = '' + and n3.publicado != 'NAO' + and n2.publicado != 'NAO' + and n1.publicado != 'NAO' + "; + //echo $sql;exit; + return geraXmlRSS($locaplic,$sql,"Temas em KML"); +} +/* +Function: geraXmlRSS + +Gera um RSS com base em um SQL compatível com o sistema de administração. + +O SQL deverá retornar os itens nome_ws desc_ws e link_ws + +Parametros: + +locaplic {string} - localização do i3Geo no sistema de arquivos + +sql {string} - SQL que será aplicado ao sistema de administração + +descricao {string} - descrição que será inserida no canal RSS + +output {string} - xml|json +Retorno: + +RSS +*/ +function geraXmlRSS($locaplic,$sql,$descricao,$output="xml") +{ + global $esquemaadmin; + if(empty($output)){ + $output = "xml"; + } + //var_dump($_SERVER);exit; + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + if($convUTF){ + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + } else { + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + } + $xml .= ""; + $xml .= "\n"; + $xml .= "RSS\n"; + $xml .= "".str_replace("&","&",$descricao)."\n"; + $xml .= "\n"; + $xml .= "\n"; + $xml .= "Gerado pelo i3Geo\n"; + $xml .= "pt-br\n"; + $xml .= "\n"; + $json = array( + "description"=>$descricao, + "copyright"=>"Gerado pelo i3Geo", + "language"=>"pt-br" + ); + $jsonItems = array(); + $qatlas = $dbh->query($sql); + foreach($qatlas as $row) { + $xml .= "\n"; + $xml .= "\n"; + $xml .= "".entity_decode($row["nome_ws"])."\n"; + $xml .= "".xmlTexto_prepara(entity_decode($row["desc_ws"]))."\n"; + $link = xmlTexto_prepara($row["link_ws"]); + if(stristr($link, 'http') === FALSE){ + $link = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["REQUEST_URI"])."/".$link; + } + $xml .= "\n"; + $xml .= "\n"; + $xml .= "".xmlTexto_prepara($row["autor_ws"])."\n"; + $xml .= "\n"; + $xml .= "\n"; + $xml .= "".xmlTexto_prepara($row["id_ws"])."\n"; + $xml .= "".$row["tipo_ws"]."\n"; + $xml .= "\n"; + $jsonItems[] = array( + "title"=>$row["nome_ws"], + "description"=>$row["desc_ws"], + "link"=>$link."&output=json", + "author"=>$row["autor_ws"], + "id"=>$row["id_ws"], + "tipo"=>$row["tipo_ws"] + ); + } + $json["items"] = $jsonItems; + $xml .= "\n"; + $dbh = null; + $dbhw = null; + if($output == "xml"){ + return $xml; + } + else{ + return json_encode($json); + } +} +function geraXmlAtlas($locaplic,$editores) +{ + global $esquemaadmin; + //error_reporting(0); + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + + if($convUTF) + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + //$q = "select * from i3geoadmin_atlas"; + $qatlas = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_atlas"); + + $editor = "nao";//$editor = verificaEditores($editores); + foreach($qatlas as $row) + { + $mostra = true; + if(strtolower($row["publicado_atlas"] == "nao")) + {$mostra = false;} + if($editor) + {$mostra = true;} + if($mostra) + { + $xml .= "\n"; + $xml .= " ".$row["id_atlas"]."\n"; + $xml .= " ".$row["publicado_atlas"]."\n"; + $xml .= " ".xmlTexto_prepara($row["titulo_atlas"])."\n"; + $xml .= " ".xmlTexto_prepara($row["desc_atlas"])."\n"; + $xml .= " ".$row["icone_atlas"]."\n"; + $xml .= " \n"; + $xml .= " ".xmlTexto_prepara($row["template_atlas"])."\n"; + $xml .= " ".$row["w_atlas"]."\n"; + $xml .= " ".$row["h_atlas"]."\n"; + $xml .= " ".$row["pranchadefault_atlas"]."\n"; + $xml .= " ".$row["tipoguias_atlas"]."\n"; + $xml .= " ".$row["basemapfile_atlas"]."\n"; + $xml .= " \n"; + $xml = geraXmlAtlas_pegapranchas($xml,$row["id_atlas"],$dbh); + $xml .= " \n"; + $xml .= " \n"; + } + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +function geraXmlIdentifica($perfil,$locaplic,$editores="") +{ + global $esquemaadmin; + $editor = "nao";//$editor = verificaEditores($editores); + if (!isset($perfil)){$perfil = "";} + $perfil = str_replace(","," ",$perfil); + $perfil = explode(" ",$perfil); + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + if($convUTF) + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + $q = "select * from ".$esquemaadmin."i3geoadmin_identifica "; + $qi = $dbh->query($q); + foreach($qi as $row) + { + $mostra = true; + if(strtolower($row["publicado_i"] == "nao")) + {$mostra = false;} + if($editor) + {$mostra = true;} + if($mostra) + { + $xml .= " \n"; + $xml .= " ".xmlTexto_prepara($row["nome_i"])."\n"; + $xml .= " ".xmlTexto_prepara($row["abrir_i"])."\n"; + $xml .= " ".$row["publicado_i"]."\n"; + $target = $row["target_i"]; + if($target == ""){$target = "_self";} + $xml .= " ".$target."\n"; + $xml .= " \n"; + }//error_reporting(0); + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +function geraXmlMapas($perfil,$locaplic,$editores) +{ + global $esquemaadmin; + if (!isset($perfil)){$perfil = "";} + $perfil = str_replace(","," ",$perfil); + $perfil = explode(" ",$perfil); + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + if($convUTF) + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + $q = "select * from ".$esquemaadmin."i3geoadmin_mapas"; + $q = $dbh->query($q); + $editor = "nao";//$editor = "nao";//verificaEditores($editores); + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $c = "/classesphp/xml.php"; + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ + $c = "\classesphp\xml.php"; + } + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); + foreach($q as $row) + { + $mostraMapa = false; + if($row["perfil_mapa"] == "") + {$mostraMapa = true;} + else + { + $perfilMapa = explode(" ",str_replace(","," ",$row["perfil_mapa"])); + $mostraMapa = array_in_array($perfil,$perfilMapa); + } + if(strtolower($row["publicado_mapa"] == "nao")) + {$mostraMapa = false;} + if($editor) + {$mostraMapa = true;} + + if($mostraMapa) + { + $xml .= "\n"; + $perfil = $row["perfil_mapa"]; + $xml .= " ".$perfil."\n"; + $xml .= " ".xmlTexto_prepara($row["nome_mapa"])."\n"; + $xml .= " ".xmlTexto_prepara($row["desc_mapa"])."\n"; + $xml .= " ".xmlTexto_prepara($row["imagem_mapa"])."\n"; + $xml .= " ".$row["temas_mapa"]."\n"; + $xml .= " ".$row["ligados_mapa"]."\n"; + $extensao = $row["ext_mapa"]; + $xml .= " ".$extensao."\n"; + $outros = xmlTexto_prepara($row["outros_mapa"]); + $xml .= " \n"; + $linkdireto = xmlTexto_prepara($row["linkdireto_mapa"]); + if(empty($linkdireto)){ + $linkdireto = $url."/ms_criamapa.php?mapext=".$extensao."&perfil=".$perfil."&temasa=".$temas."&layers=".$ligados.$row["outros_mapa"]; + $linkdireto = xmlTexto_prepara($linkdireto); + } + $xml .= " \n"; + $xml .= " ".$row["publicado_mapa"]."\n"; + $xml .= " ".$row["id_mapa"]."\n"; + if($row["mapfile"] != ""){ + $xml .= " sim\n"; + } + else{ + $xml .= " nao\n"; + } + $xml .= "\n"; + } + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +//mostra apenas os mapas que possuem outros_mapa definido, o que e tipico do sistema de metadados estatisticos +function geraRSSmapas($locaplic,$output) +{ + global $esquemaadmin; + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); + $c = "/classesphp/xml.php"; + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){ + $c = "\classesphp\xml.php"; + } + $url = strtolower($protocolo[0])."://".$_SERVER['HTTP_HOST']."/".(basename(str_replace($c,"",__FILE__))); + $descricao = "'"; + $descricao .= "Openlayers 1

"; + $descricao .= "Openlayers 2

"; + $descricao .= "Openlayers 3

"; + $descricao .= "Openlayers 4

"; + $descricao .= "]]>'"; + $sql = "select '' as tipo_ws,'".$url."/ms_criamapa.php?restauramapa='||id_mapa as link_ws, nome_mapa as nome_ws, ".$descricao." as desc_ws, '' as autor_ws from ".$esquemaadmin."i3geoadmin_mapas WHERE publicado_mapa = 'sim' AND mapfile != ''"; + //echo $sql;exit; + return geraXmlRSS($locaplic,$sql,"Mapas cadastrados",$output); +} + +// +//$id_menu = id do menu que será montado +//$perfil = perfis separados por espaços +//$tipo = gruposeraiz|subgrupos|temas +//$dbh objeto com a conexão com o banco +//$locaplic = localização do i3geo no servidor +// +function geraXmlMenutemas($perfil,$id_menu,$tipo,$locaplic) +{ + global $esquemaadmin; + xml_testaNum([$id_menu]); + $dbh = ""; + include($locaplic."/admin/php/conexao.php"); + if (!isset($perfil)){$perfil = "";} + $perfil = str_replace(","," ",$perfil); + $perfil = explode(" ",$perfil); + if($convUTF) + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; + else + $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; + $xml .= "\n\n"; + if(!isset($id_menu)) + $xml .= "Utilize ?id_menu=1 por exemplo\n"; + else + $xml .= "\n"; + // + //pega os temas na raiz + // + $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,r.perfil as perfil from ".$esquemaadmin."i3geoadmin_raiz as r,".$esquemaadmin."i3geoadmin_temas as temas where r.id_nivel = 0 and r.id_tema = temas.id_tema and r.id_menu = $id_menu "; + $qtemasraiz = $dbh->query($q); + $xml = geraXmlMenutemas_notema($qtemasraiz,$xml,$perfil); + $q = "select nome_grupo,desc_grupo,n1.id_grupo,n1.id_n1,n1.n1_perfil as perfil from ".$esquemaadmin."i3geoadmin_n1 as n1,".$esquemaadmin."i3geoadmin_grupos as grupos where n1.id_menu = $id_menu and n1.id_grupo = grupos.id_grupo "; + $qgrupos = $dbh->query($q); + foreach($qgrupos as $row) + { + //filtra pelo perfil + if($row["perfil"] == "") + {$mostra = true;} + else + { + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + $xml .= "\n"; + $xml .= " ".xmlTexto_prepara($row["nome_grupo"])."\n"; + // + //pega temas na raiz + // + $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,r.perfil as perfil from ".$esquemaadmin."i3geoadmin_raiz as r,".$esquemaadmin."i3geoadmin_temas as temas where r.nivel = 1 and r.id_nivel = ".$row["id_n1"]." and r.id_tema = temas.id_tema and r.id_menu = $id_menu "; + $qtemasraiz = $dbh->query($q); + $xml = geraXmlMenutemas_notema($qtemasraiz,$xml,$perfil); + if(isset($tipo) && ($tipo == "subgrupos") || ($tipo == "")) + $xml = geraXmlMenutemas_pegasubgrupos($row["id_n1"],$xml,$dbh,$tipo,$perfil); + $xml .= " ".xmlTexto_prepara($row["desc_grupo"])."\n"; + $xml .= " ".$row["perfil"]."\n"; + $xml .= "\n"; + } + } + $xml .= "\n"; + $dbh = null; + $dbhw = null; + return $xml; +} +function geraXmlMenutemas_pegasubgrupos($id_n1,$xml,$dbh,$tipo,$perfil) +{ + global $esquemaadmin; + xml_testaNum([$id_n1]); + $q = "select subgrupos.id_subgrupo,nome_subgrupo,id_n2,n2.n2_perfil as perfil from ".$esquemaadmin."i3geoadmin_n2 as n2,".$esquemaadmin."i3geoadmin_subgrupos as subgrupos where n2.id_n1 = $id_n1 and n2.id_subgrupo = subgrupos.id_subgrupo "; + //echo $q;exit; + $qsgrupos = $dbh->query($q); + foreach($qsgrupos as $row) + { + if($row["perfil"] == "") + $mostra = true; + else + { + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + $xml .= "\n"; + $xml .= "".xmlTexto_prepara($row["nome_subgrupo"])."\n"; + $xml .= "".xmlTexto_prepara($row["perfil"])."\n"; + if(isset($tipo) && ($tipo == "temas") || ($tipo == "")) + $xml = geraXmlMenutemas_pegatemas($row["id_n2"],$xml,$dbh,$perfil); + $xml .= "\n"; + } + } + return $xml; +} +function geraXmlMenutemas_pegatemas($id_n2,$xml,$dbh,$perfil) +{ + global $esquemaadmin; + xml_testaNum([$id_n2]); + $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema,n3.n3_perfil as perfil from ".$esquemaadmin."i3geoadmin_n3 as n3,".$esquemaadmin."i3geoadmin_temas as temas where n3.id_n2 = $id_n2 and n3.id_tema = temas.id_tema "; + $qtemas = $dbh->query($q); + $xml = geraXmlMenutemas_notema($qtemas,$xml,$perfil); + return $xml; +} +function geraXmlMenutemas_notema($qtemas,$xml,$perfil) +{ + global $esquemaadmin; + foreach($qtemas as $row) + { + if($row["perfil"] == "") + {$mostra = true;} + else + { + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + $xml .= "\n"; + $xml .= "".$row["codigo_tema"]."\n"; + $xml .= "".$row["perfil"]."\n"; + $xml .= "".xmlTexto_prepara($row["nome_tema"])."\n"; + $xml .= "".xmlTexto_prepara($row["desc_tema"])."\n"; + $xml .= "\n"; + $xml .= "".$row["tipoa_tema"]."\n"; + $xml .= "".xmlTexto_prepara($row["tags_tema"])."\n"; + $xml .= "".$row["kml_tema"]."\n"; + if($row["tipoa_tema"] == "WMS") + {$xml .= "nao\n";} + else + {$xml .= "".$row["ogc_tema"]."\n";} + $xml .= "".$row["download_tema"]."\n"; + $xml .= "\n"; + $xml .= "\n"; + } + } + return $xml; +} +function geraXmlAtlas_pegapranchas($xml,$id_atlas,$dbh) +{ + global $esquemaadmin; + xml_testaNum([$id_atlas]); + $q = "select * from ".$esquemaadmin."i3geoadmin_atlasp as p where p.id_atlas = $id_atlas order by ordem_prancha"; + $qpranchas = $dbh->query($q); + foreach($qpranchas as $row) + { + $xml .= " \n"; + $xml .= " ".$row["id_prancha"]."\n"; + $xml .= " ".xmlTexto_prepara($row["titulo_prancha"])."\n"; + $xml .= " ".xmlTexto_prepara($row["desc_prancha"])."\n"; + $xml .= " ".$row["icone_prancha"]."\n"; + $xml .= " \n"; + $xml .= " ".$row["w_prancha"]."\n"; + $xml .= " ".$row["h_prancha"]."\n"; + $xml .= " ".$row["mapext_prancha"]."\n"; + $xml .= " \n"; + $xml = geraXmlAtlas_pegatemas($xml,$row["id_prancha"],$dbh); + $xml .= " \n"; + $xml .= " \n"; + } + return $xml; +} +function geraXmlAtlas_pegatemas($xml,$id_prancha,$dbh) +{ + global $esquemaadmin; + xml_testaNum([$id_prancha]); + $q = "select t.codigo_tema,t.ligado_tema from ".$esquemaadmin."i3geoadmin_atlast as t where t.id_prancha = '$id_prancha' order by ordem_tema"; + //echo $q; + $qtemas = $dbh->query($q); + foreach($qtemas as $row) + { + $xml .= "\n"; + $xml .= "".$row["codigo_tema"]."\n"; + $xml .= "".$row["ligado_tema"]."\n"; + $xml .= "\n"; + } + return $xml; +} +function geraXmlSistemas_pegafuncoes($perfil,$xml,$id_sistema,$dbh) +{ + global $esquemaadmin; + xml_testaNum([$id_sistema]); + $q = "select * from ".$esquemaadmin."i3geoadmin_sistemasf where id_sistema = '$id_sistema'"; + $qtemas = $dbh->query($q); + foreach($qtemas as $row) + { + if($row["perfil_funcao"] == "") + $mostra = true; + else + { + $perfilF = explode(" ",str_replace(","," ",$row["perfil_funcao"])); + $mostra = array_in_array($perfil,$perfilF); + } + if($mostra) + { + $xml .= "\n"; + $xml .= " ".xmlTexto_prepara($row["nome_funcao"])."\n"; + $xml .= " ".xmlTexto_prepara($row["abrir_funcao"])."\n"; + $xml .= " ".$row["w_funcao"]."\n"; + $xml .= " ".$row["h_funcao"]."\n"; + $xml .= " ".$row["perfil_funcao"]."\n"; + $xml .= "\n"; + } + } + return $xml; +} +function array_in_array($needle, $haystack) +{ + //Make sure $needle is an array for foreach + if(!is_array($needle)) $needle = array($needle); + //For each value in $needle, return TRUE if in $haystack + foreach($needle as $pin) + if(in_array($pin, $haystack)) return TRUE; + //Return FALSE if none of the values from $needle are found in $haystack + return FALSE; +} +function xmlTexto_prepara($texto) +{ + return str_replace("&","&",$texto); +} +function entity_decode($texto) +{ + return html_entity_decode($texto); +} +function xml_testaNum($valores){ + foreach ($valores as $valor) { + if(!empty($valor) && !is_numeric($valor)) { + ob_clean(); + header ( "HTTP/1.1 403 valor nao numerico" ); + exit; + } + } +} +?> diff --git a/js/guias.js b/js/guias.js index d94c0ce..2b41933 100755 --- a/js/guias.js +++ b/js/guias.js @@ -218,8 +218,6 @@ i3GEO.guias = // combo de opcoes para abrir os mapas // salvos // como mapfiles - // esses links tambem sao colocados em - // admin/php/xml.php geraRSSmapas combo = "