From 5cbd9c8653e46944d198e06d0433808d9e6e82fc Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sat, 14 Jun 2008 17:30:50 +0000 Subject: [PATCH] Inclusão do programa xmladminmapas.php para geração do xml mapas.xml usando o banco de administracao. --- admin/php/admin.php | 11 ++++++++++- admin/xmlatlas.php | 22 ++++++++++++++++++++-- admin/xmlidentifica.php | 22 ++++++++++++++++++++-- admin/xmlmapas.php | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ admin/xmlmenutemas.php | 152 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------- classesphp/classe_menutemas.php | 54 ++++++++++++++++++++++++++++++++++++------------------ classesphp/mapa_inicia.php | 2 +- menutemas/admin.db | Bin 67584 -> 0 bytes ms_configura.php | 4 +++- 9 files changed, 227 insertions(+), 104 deletions(-) create mode 100644 admin/xmlmapas.php diff --git a/admin/php/admin.php b/admin/php/admin.php index eea89c2..c1fa3e4 100644 --- a/admin/php/admin.php +++ b/admin/php/admin.php @@ -166,5 +166,14 @@ function pegaDados($sql) return "Error!: " . $e->getMessage(); } } - +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; +} ?> \ No newline at end of file diff --git a/admin/xmlatlas.php b/admin/xmlatlas.php index 5f347d7..2eef2cd 100644 --- a/admin/xmlatlas.php +++ b/admin/xmlatlas.php @@ -2,8 +2,26 @@ // //$id_menu = id do menu que será montado //$perfil = perfis -include_once("php/admin.php"); -include_once("php/conexao.php"); +if(!isset($locaplic)) +{ + $locaplic = ""; + if(file_exists("../../../ms_configura.php")) + {include_once("../../../ms_configura.php");} + else + { + if(file_exists("../../ms_configura.php")) + {include_once("../../ms_configura.php");} + else + { + if(file_exists("../ms_configura.php")) + {include_once("../ms_configura.php");} + else + include_once("ms_configura.php"); + } + } +} +include_once($locaplic."/admin/php/admin.php"); +include_once($locaplic."/admin/php/conexao.php"); echo "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; //echo "<"."\x3F"."xml-stylesheet type='text/xsl' href='../menutemas/menutemas.xsl'"."\x3F".">"; echo "\n\n"; diff --git a/admin/xmlidentifica.php b/admin/xmlidentifica.php index 5976023..10853f5 100644 --- a/admin/xmlidentifica.php +++ b/admin/xmlidentifica.php @@ -2,8 +2,26 @@ // //$id_menu = id do menu que será montado //$perfil = perfis -include_once("php/admin.php"); -include_once("php/conexao.php"); +if(!isset($locaplic)) +{ + $locaplic = ""; + if(file_exists("../../../ms_configura.php")) + {include_once("../../../ms_configura.php");} + else + { + if(file_exists("../../ms_configura.php")) + {include_once("../../ms_configura.php");} + else + { + if(file_exists("../ms_configura.php")) + {include_once("../ms_configura.php");} + else + include_once("ms_configura.php"); + } + } +} +include_once($locaplic."/admin/php/admin.php"); +include_once($locaplic."/admin/php/conexao.php"); echo "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; //echo "<"."\x3F"."xml-stylesheet type='text/xsl' href='../menutemas/menutemas.xsl'"."\x3F".">"; echo "\n\n"; diff --git a/admin/xmlmapas.php b/admin/xmlmapas.php new file mode 100644 index 0000000..32c4b6e --- /dev/null +++ b/admin/xmlmapas.php @@ -0,0 +1,64 @@ +"; +//echo "<"."\x3F"."xml-stylesheet type='text/xsl' href='../menutemas/menutemas.xsl'"."\x3F".">"; +echo "\n\n"; +$q = "select * from i3geoadmin_mapas"; +$q = $dbh->query($q); +foreach($q as $row) +{ + if($row["perfil_mapa"] == "") + $mostraMapa = true; + else + { + $perfilMapa = explode(" ",str_replace(","," ",$row["perfil_mapa"])); + $mostraMapa = array_in_array($perfil,$perfilMapa); + } + if($mostraMapa) + { + echo "\n"; + echo " ".$row["perfil_mapa"]."\n"; + echo " ".xmlmenu_prepara($row["nome_mapa"])."\n"; + echo " ".xmlmenu_prepara($row["desc_mapa"])."\n"; + echo " ".xmlmenu_prepara($row["imagem_mapa"])."\n"; + echo " ".$row["temas_mapa"]."\n"; + echo " ".$row["ligados_mapa"]."\n"; + echo " ".$row["ext_mapa"]."\n"; + echo " ".xmlmenu_prepara($row["outros_mapa"])."\n"; + echo " ".xmlmenu_prepara($row["linkdireto_mapa"])."\n"; + echo " \n"; + } +} +echo "\n"; +$dbh = null; +function xmlmenu_prepara($texto) +{ + return str_replace("&","&",$texto); +} +?> diff --git a/admin/xmlmenutemas.php b/admin/xmlmenutemas.php index 89f7b8d..284ee76 100644 --- a/admin/xmlmenutemas.php +++ b/admin/xmlmenutemas.php @@ -24,6 +24,10 @@ if(!isset($locaplic)) } include_once($locaplic."/admin/php/admin.php"); include_once($locaplic."/admin/php/conexao.php"); +if (!isset($perfil)){$perfil = "";} +$perfil = str_replace(","," ",$perfil); +$perfil = explode(" ",$perfil); + echo "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">"; //echo "<"."\x3F"."xml-stylesheet type='text/xsl' href='../menutemas/menutemas.xsl'"."\x3F".">"; echo "\n\n"; @@ -31,117 +35,107 @@ if(!isset($id_menu)) echo "Utilize ?id_menu=1 por exemplo\n"; else echo "\n"; -if (!isset($perfil)){$perfil = "";} + // //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 from i3geoadmin_raiz as r,i3geoadmin_temas as temas where r.id_nivel = 0 and r.id_tema = temas.id_tema and r.id_menu = $id_menu "; -if($perfil == "") -$q .= "and r.perfil = ''"; -else -{ - $perfis = explode(" ",$perfil); - foreach ($perfis as $p) - {$q .= "and r.perfil = '$p' ";} -} +$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 i3geoadmin_raiz as r,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); xmlmenu_notema($qtemasraiz); - -$q = "select nome_grupo,desc_grupo,n1.id_grupo,n1.id_n1 from i3geoadmin_n1 as n1,i3geoadmin_grupos as grupos where n1.id_menu = $id_menu and n1.id_grupo = grupos.id_grupo "; -if($perfil == "") -$q .= "and n1_perfil = ''"; -else -{ - $perfis = explode(" ",$perfil); - foreach ($perfis as $p) - { - $q .= "and n1_perfil = '$p' "; - } -} +$q = "select nome_grupo,desc_grupo,n1.id_grupo,n1.id_n1,n1.n1_perfil as perfil from i3geoadmin_n1 as n1,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) { - echo "\n"; - echo " ".xmlmenu_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 from i3geoadmin_raiz as r,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 "; - if($perfil == "") - $q .= "and r.perfil = ''"; + if($row["perfil"] == "") + $mostra = true; else { - $perfis = explode(" ",$perfil); - foreach ($perfis as $p) - {$q .= "and r.perfil = '$p' ";} + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + echo "\n"; + echo " ".xmlmenu_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 i3geoadmin_raiz as r,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); + xmlmenu_notema($qtemasraiz); + if(isset($tipo) && ($tipo == "subgrupos") || ($tipo == "")) + xmlmenu_pegasubgrupos($row["id_n1"]); + echo " ".xmlmenu_prepara($row["desc_grupo"])."\n"; + echo " ".$row["perfil"]."\n"; + echo "\n"; } - $qtemasraiz = $dbh->query($q); - xmlmenu_notema($qtemasraiz); - if(isset($tipo) && ($tipo == "subgrupos") || ($tipo == "")) - xmlmenu_pegasubgrupos($row["id_n1"]); - echo " ".xmlmenu_prepara($row["desc_grupo"])."\n"; - echo "\n"; } echo "\n"; $dbh = null; function xmlmenu_pegasubgrupos($id_n1) { - global $dbh,$perfis,$tipo; - $q = "select subgrupos.id_subgrupo,nome_subgrupo,id_n2 from i3geoadmin_n2 as n2,i3geoadmin_subgrupos as subgrupos where n2.id_n2 = $id_n1 and n2.id_subgrupo = subgrupos.id_subgrupo "; - if(count($perfis) == 0) - $q .= "and n2_perfil = ''"; - else - { - foreach ($perfis as $p) - { - $q .= "and n2_perfil = '$p' "; - } - } + global $dbh,$tipo,$perfil; + $q = "select subgrupos.id_subgrupo,nome_subgrupo,id_n2,n2.n2_perfil as perfil from i3geoadmin_n2 as n2,i3geoadmin_subgrupos as subgrupos where n2.id_n2 = $id_n1 and n2.id_subgrupo = subgrupos.id_subgrupo "; $qsgrupos = $dbh->query($q); foreach($qsgrupos as $row) { - echo "\n"; - echo "".xmlmenu_prepara($row["nome_subgrupo"])."\n"; - if(isset($tipo) && ($tipo == "temas") || ($tipo == "")) - xmlmenu_pegatemas($row["id_n2"]); - echo "\n"; + if($row["perfil"] == "") + $mostra = true; + else + { + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + echo "\n"; + echo "".xmlmenu_prepara($row["nome_subgrupo"])."\n"; + echo "".xmlmenu_prepara($row["perfil"])."\n"; + if(isset($tipo) && ($tipo == "temas") || ($tipo == "")) + xmlmenu_pegatemas($row["id_n2"]); + echo "\n"; + } } } function xmlmenu_pegatemas($id_n2) { - global $dbh,$perfis; - $q = "select nome_tema,codigo_tema,desc_tema,link_tema,tipoa_tema,tags_tema,kml_tema,ogc_tema,download_tema from i3geoadmin_n3 as n3,i3geoadmin_temas as temas where n3.id_n2 = $id_n2 and n3.id_tema = temas.id_tema "; - if(count($perfis) == 0) - $q .= "and n3_perfil = ''"; - else - { - foreach ($perfis as $p) - { - $q .= "and n3_perfil = '$p' "; - } - } + global $dbh,$perfil; + $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 i3geoadmin_n3 as n3,i3geoadmin_temas as temas where n3.id_n2 = $id_n2 and n3.id_tema = temas.id_tema "; $qtemas = $dbh->query($q); xmlmenu_notema($qtemas); } function xmlmenu_notema($qtemas) { + global $perfil; foreach($qtemas as $row) { - echo "\n"; - echo "".$row["codigo_tema"]."\n"; - echo "".xmlmenu_prepara($row["nome_tema"])."\n"; - echo "".xmlmenu_prepara($row["desc_tema"])."\n"; - echo "".xmlmenu_prepara($row["link_tema"])."\n"; - echo "".$row["tipoa_tema"]."\n"; - echo "".xmlmenu_prepara($row["tags_tema"])."\n"; - echo "".$row["kml_tema"]."\n"; - if($row["tipoa_tema"] == "WMS") - echo "nao\n"; + if($row["perfil"] == "") + $mostra = true; else - echo "".$row["ogc_tema"]."\n"; - echo "".$row["download_tema"]."\n"; - echo "\n"; + { + $perfilatual = explode(" ",str_replace(","," ",$row["perfil"])); + $mostra = array_in_array($perfil,$perfilatual); + } + if($mostra) + { + echo "\n"; + echo "".$row["codigo_tema"]."\n"; + echo "".$row["perfil"]."\n"; + echo "".xmlmenu_prepara($row["nome_tema"])."\n"; + echo "".xmlmenu_prepara($row["desc_tema"])."\n"; + echo "".xmlmenu_prepara($row["link_tema"])."\n"; + echo "".$row["tipoa_tema"]."\n"; + echo "".xmlmenu_prepara($row["tags_tema"])."\n"; + echo "".$row["kml_tema"]."\n"; + if($row["tipoa_tema"] == "WMS") + echo "nao\n"; + else + echo "".$row["ogc_tema"]."\n"; + echo "".$row["download_tema"]."\n"; + echo "\n"; + } } } function xmlmenu_prepara($texto) diff --git a/classesphp/classe_menutemas.php b/classesphp/classe_menutemas.php index 355547b..943e399 100644 --- a/classesphp/classe_menutemas.php +++ b/classesphp/classe_menutemas.php @@ -56,10 +56,9 @@ $urli3geo - (opcional) url onde está o i3geo (p.ex. http://localhost/i3geo */ function __construct($map_file="",$perfil="",$locsistemas="",$locaplic="",$menutemas="",$urli3geo="") { - error_reporting(0); + error_reporting(E_ALL); + $perfil = str_replace(" ",",",$perfil); $this->perfil = explode(",",$perfil); - if(count($this->perfil) == 0) - $this->perfil = explode(" ",$perfil); $this->xmlsistemas = ""; $this->locaplic = $locaplic; $this->menutemas = $menutemas; @@ -141,13 +140,17 @@ array */ function pegaListaDeMapas($locmapas) { + $perfilgeral = implode(" ",$this->perfil); + if($locmapas == "") + {$locmapas = $this->urli3geo."/admin/xmlmapas.php?perfil=".$perfilgeral;} $this->xml = simplexml_load_file($locmapas); $mapas = array(); //pega os sistemas checando os perfis foreach($this->xml->MAPA as $s) { $ps = ixml($s,"PERFIL"); - $perfis = explode(",",$ps); + $perfis = str_replace(","," ",$ps); + $perfis = explode(" ",$perfis); if (($this->array_in_array($this->perfil,$perfis)) || ($ps == "")) { $n = ixml($s,"NOME"); @@ -240,7 +243,8 @@ array if ($temp != "") { $incluigrupo = FALSE; - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if ($this->array_in_array($this->perfil,$perfis)) {$incluigrupo = TRUE;} } @@ -276,7 +280,8 @@ array if ($temp != "") { $incluisgrupo = FALSE; - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if ($this->array_in_array($this->perfil,$perfis)) {$incluisgrupo = TRUE;} } @@ -312,7 +317,8 @@ array { $nomesis = ixml($s,"NOMESIS"); $ps = ixml($s,"PERFIL"); - $perfis = explode(",",$ps); + $perfis = str_replace(","," ",$ps); + $perfis = explode(" ",$perfis); if (($this->array_in_array($this->perfil,$perfis)) || ($ps == "")) { $funcoes = array(); @@ -376,7 +382,8 @@ array if ($temp != "") { $incluigrupo = FALSE; - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if ($this->array_in_array($this->perfil,$perfis)) {$incluigrupo = TRUE;} } @@ -391,7 +398,8 @@ array if ($temp != "") { $incluisgrupo = FALSE; - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if ($this->array_in_array($this->perfil,$perfis)) {$incluisgrupo = TRUE;} } @@ -462,7 +470,9 @@ array if (ixml($g,"PERFIL") != "") { $incluigrupo = FALSE; - $perfis = explode(",",ixml($g,"PERFIL")); + $temp = ixml($g,"PERFIL"); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if ($this->array_in_array($this->perfil,$perfis)) {$incluigrupo = TRUE;} } @@ -477,7 +487,9 @@ array if (ixml($s,"PERFIL") != "") { $incluisgrupo = FALSE; - $perfis = explode(",",ixml($s,"PERFIL")); + $temp = ixml($s,"PERFIL"); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if ($this->array_in_array($this->perfil,$perfis)) {$incluisgrupo = TRUE;} } @@ -492,7 +504,9 @@ array { $inclui = FALSE; - $perfis = explode(",",ixml($tema,"PERFIL")); + $temp = ixml($tema,"PERFIL"); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if ($this->array_in_array($this->perfil,$perfis)) {$inclui = TRUE;} } @@ -555,7 +569,8 @@ $procurar - String que será procurada. if ($temp != "") { $incluigrupo = FALSE; - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if ($this->array_in_array($this->perfil,$perfis)) {$incluigrupo = TRUE;} } @@ -567,7 +582,8 @@ $procurar - String que será procurada. if ($this->perfil != "") { $temp = ixml($sgrupo,"PERFIL"); - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if (!$this->array_in_array($this->perfil,$perfis)) {$incluisgrupo = FALSE;} } @@ -579,7 +595,8 @@ $procurar - String que será procurada. if ($this->perfil != "") { $temp = ixml($tema,"PERFIL"); - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if (!$this->array_in_array($this->perfil,$perfis)) {$inclui = FALSE;} } @@ -691,7 +708,8 @@ nrss - (opcional) número de registros no rss que serão considerados if ($this->perfil != "") { $temp = ixml($sgrupo,"PERFIL"); - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if (!$this->array_in_array($this->perfil,$perfis)) {$incluisgrupo = FALSE;} } @@ -702,8 +720,8 @@ nrss - (opcional) número de registros no rss que serão considerados $inclui = TRUE; if ($this->perfil != "") { - $temp = ixml($tema,"PERFIL"); - $perfis = explode(",",$temp); + $perfis = str_replace(","," ",$temp); + $perfis = explode(" ",$perfis); if (!$this->array_in_array($this->perfil,$perfis)) {$inclui = FALSE;} } diff --git a/classesphp/mapa_inicia.php b/classesphp/mapa_inicia.php index a39c01a..b23eba4 100644 --- a/classesphp/mapa_inicia.php +++ b/classesphp/mapa_inicia.php @@ -199,7 +199,7 @@ function iniciaMapa() $res .= ";var legimagem='';var legwidth=0;var legheight=0;var legpath='';var legurl='';g_locsistemas='".$locsistemas."';g_locidentifica='".$locidentifica."'"; $r = (isset($R_path)) ? "sim" : "nao"; $res .= ";g_r='".$r."'"; //identifica se o r esta instalado - $res .= ";g_locmapas='".$locmapas."'"; //identifica se o r esta instalado + $res .= ";g_locmapas='".$locmapas."'"; if ((isset($expoeMapfile)) && ($expoeMapfile == "nao")) {$res .= ";objmapa.mapfile=''";} else diff --git a/menutemas/admin.db b/menutemas/admin.db index 8498433..f7d86ab 100644 Binary files a/menutemas/admin.db and b/menutemas/admin.db differ diff --git a/ms_configura.php b/ms_configura.php index 29f6947..264d225 100644 --- a/ms_configura.php +++ b/ms_configura.php @@ -164,8 +164,10 @@ if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) A guia "Mapas" mostra uma lista de links que permitem abrir mapas específicos. Essa lista é utilizada também pela versão mobile do i3geo. Veja a documentação específica do arquivo mapas.xml para maiores detalhes. + + Para usar as funções default, utilize apenas $menutemas = ""; nesse caso, as funções serão obtidas do banco de dados de administração. */ - $locmapas = "../menutemas/mapas.xml"; + $locmapas = ""; /* Variable: $R_path -- libgit2 0.21.2