Commit b2da34b095c9ce710a896ee000de74ac5bed0447

Authored by Edmar Moretti
1 parent 3ec6ae4f

Nova barra lateral de botões com guias. Inclusão de jQuery e Bootstrap nos códig…

…os dos mapas interativos
Showing 221 changed files with 9851 additions and 7615 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 221 files displayed.

admin/admin (cópia).db
No preview for this file type
admin/admin.db 100644 → 100755
No preview for this file type
admin/php/admin.php
... ... @@ -41,7 +41,7 @@ if(!file_exists($dir_tmp)){
41 41 }
42 42 //TODO retirar daqui
43 43 //include_once($locaplic."/classesphp/pega_variaveis.php");
44   -error_reporting(0);
  44 +//error_reporting(0);
45 45  
46 46 //
47 47 //carrega o phpmapscript
... ... @@ -97,7 +97,7 @@ function retornaJSON($obj)
97 97 //else
98 98 //{
99 99 include_once($locaplic."/pacotes/cpaint/JSON/json2.php");
100   - error_reporting(0);
  100 + //error_reporting(0);
101 101 ob_end_clean();
102 102 $j = new Services_JSON();
103 103 $texto = $j->encode($obj);
... ... @@ -199,7 +199,7 @@ function pegaDados($sql,$dbh="",$close=true)
199 199 if($dbh == "" || is_string($dbh)){
200 200 include(dirname(__FILE__)."/conexao.php");
201 201 }
202   - error_reporting(0);
  202 + //error_reporting(0);
203 203 //$dbh deve ser definido com somente leitura, mas por prevencao:
204 204 $sql = str_ireplace(array("update","delete","insert","--","drop",";"),"",$sql);
205 205 $q = $dbh->query($sql,PDO::FETCH_ASSOC);
... ... @@ -624,8 +624,10 @@ senha {string}
624 624  
625 625 i3geomaster {array} - variável existente no ms_configura.php com o cadastro de usuários masters
626 626 */
627   -function verificaMaster($usuario,$senha,$i3geomaster){
628   - global $i3geomaster;
  627 +function verificaMaster($usuario,$senha,$i3geomaster=""){
  628 + if(empty($i3geomaster)){
  629 + include(dirname(__FILE__)."/../../ms_configura.php");
  630 + }
629 631 foreach($i3geomaster as $teste){
630 632 if(!empty($usuario) && !empty($senha) && $teste["usuario"] == $usuario && $teste["senha"] == $senha){
631 633 return true;
... ...
admin/php/arvore.php
... ... @@ -73,7 +73,6 @@ if($idioma == "")
73 73 $idioma = "pt";
74 74 }
75 75  
76   -error_reporting(0);
77 76 //faz a busca da função que deve ser executada
78 77 switch (strtoupper($funcao))
79 78 {
... ...
admin/php/classe_arvore.php
... ... @@ -73,7 +73,7 @@ class Arvore
73 73 $this->locaplic = $locaplic;
74 74 $this->filtro = $filtro;
75 75 $dbh = "";
76   - error_reporting(0);
  76 + //error_reporting(0);
77 77  
78 78 include($locaplic."/admin/php/conexao.php");
79 79  
... ... @@ -415,6 +415,7 @@ class Arvore
415 415 function procuraTemasEstrela($nivel,$fatorestrela,$perfil)
416 416 {
417 417 $menus = $this->pegaListaDeMenus($perfil);
  418 +
418 419 $resultado = array();
419 420 $subgrupo = array();
420 421 $final = array();
... ... @@ -621,7 +622,7 @@ class Arvore
621 622  
622 623 {array}
623 624 */
624   - function pegaTemasRaizGrupo($id_menu,$id_n1,$filtraOgc,$filtraDown)
  625 + function pegaTemasRaizGrupo($id_menu,$id_n1,$filtraOgc="nao",$filtraDown="nao")
625 626 {
626 627 $f = "";
627 628 if($filtraOgc == "sim" || $filtraDown == "sim"){
... ... @@ -1249,21 +1250,25 @@ class Arvore
1249 1250 }
1250 1251 }
1251 1252 function verificaOperacaoSessao($operacao){
1252   - session_write_close();
1253   - session_name("i3GeoLogin");
1254   - session_id($_COOKIE["i3geocodigologin"]);
1255   - session_start();
1256   - $resultado = false;
1257   - //verifica se e administrador
1258   - foreach($_SESSION["papeis"] as $p){
1259   - if($p["id_papel"] == 1){
1260   - return true;
  1253 + if($_COOKIE["i3geocodigologin"] != ""){
  1254 + session_write_close();
  1255 + session_name("i3GeoLogin");
  1256 + session_id($_COOKIE["i3geocodigologin"]);
  1257 + session_start();
  1258 + $resultado = false;
  1259 + //verifica se e administrador
  1260 + foreach($_SESSION["papeis"] as $p){
  1261 + if($p == 1){
  1262 + return true;
  1263 + }
1261 1264 }
  1265 + if(!empty($_SESSION["operacoes"][$operacao])){
  1266 + $resultado = true;
  1267 + }
  1268 + return $resultado;
  1269 + } else {
  1270 + return false;
1262 1271 }
1263   - if(!empty($_SESSION["operacoes"][$operacao])){
1264   - $resultado = true;
1265   - }
1266   - return $resultado;
1267 1272 }
1268 1273 }
1269 1274 ?>
1270 1275 \ No newline at end of file
... ...
admin/php/classe_metaestat.php
... ... @@ -72,7 +72,7 @@ class Metaestat{
72 72 * Faz o include de conexao.php que por sua vez faz o include de i3geo/ms_configura.php
73 73 */
74 74 function __construct(){
75   - error_reporting(0);
  75 + //error_reporting(0);
76 76 include(dirname(__FILE__)."/conexao.php");
77 77 //vem do include
78 78 $this->dir_tmp = $dir_tmp;
... ...
admin/php/conexao.php
... ... @@ -65,7 +65,7 @@ if(!isset($logTransacoes)){
65 65 $convUTF = true;
66 66 if($conexaoadmin == ""){
67 67 $arquivosqlite = $locaplic."/admin/admin.db";
68   - chmod($arquivosqlite,0774);
  68 + //chmod($arquivosqlite,0774);
69 69 //echo $arquivosqlite;exit;
70 70 if(!file_exists($arquivosqlite)){
71 71 echo "O arquivo admin.db não existe. Utilize i3geo/admin/criabanco.php para criar o banco de dados SQLITE.";
... ...
admin/php/criabanco.php
... ... @@ -59,7 +59,7 @@
59 59 if(isset($i3geoPermiteLoginIp)){
60 60 checaLoginIp($i3geoPermiteLoginIp);
61 61 }
62   - error_reporting(0);
  62 + //error_reporting(0);
63 63 $tabelas = array(
64 64 //tabelas gerais do sistema de administracao
65 65 "CREATE TABLE ".$esquemaadmin."i3geoadmin_grupos (desc_grupo TEXT, id_grupo INTEGER PRIMARY KEY, nome_grupo TEXT, it TEXT, es TEXT, en TEXT)",
... ...
admin/php/editormapfile.php
... ... @@ -98,7 +98,7 @@ if(in_array(strtoupper($funcao),$funcoesEdicao)){
98 98 }
99 99 unlink("$locaplic/temas/teste.txt");
100 100 }
101   -error_reporting(0);
  101 +//error_reporting(0);
102 102 //define o parametro de output do resultado da funcao
103 103 //algumas funcoes podem ser inseridas com include em outros programas
104 104 //nesse caso, defina output como "retorno"
... ... @@ -285,7 +285,7 @@ switch (strtoupper($funcao))
285 285 {JSON}
286 286 */
287 287 case "LIMPARCACHEMAPFILE":
288   - error_reporting(0);
  288 + //error_reporting(0);
289 289 $mapfile = $locaplic."/temas/".$codigoMap.".map";
290 290 $mapa = ms_newMapObj($mapfile);
291 291 $nomes = $mapa->getalllayernames();
... ... @@ -1146,7 +1146,7 @@ switch (strtoupper($funcao))
1146 1146 function clonarMapfile()
1147 1147 {
1148 1148 global $codigomap, $locaplic;
1149   - error_reporting(0);
  1149 + //error_reporting(0);
1150 1150 $arqtema = $locaplic."/temas/".$codigomap.".map";
1151 1151 $novotema = $locaplic."/temas/".$_GET["novomap"].".map";
1152 1152 copy($arqtema,$novotema);
... ... @@ -1163,7 +1163,7 @@ function refazerLayer()
1163 1163  
1164 1164 $maporigem = $_GET["maporigem"];
1165 1165  
1166   - error_reporting(0);
  1166 + //error_reporting(0);
1167 1167 $cache = $_GET["cache"];
1168 1168 if(empty($cache)){
1169 1169 $cache = "";
... ... @@ -1379,7 +1379,7 @@ function autoClassesLayer()
1379 1379 global $codigoMap,$codigoLayer,$locaplic,$dir_tmp,$postgis_mapa;
1380 1380 $mapfile = $locaplic."/temas/".$codigoMap.".map";
1381 1381 include_once("$locaplic/classesphp/classe_alteraclasse.php");
1382   - error_reporting(0);
  1382 + //error_reporting(0);
1383 1383 $nometemp = $dir_tmp."/".nomerandomico().".map";
1384 1384  
1385 1385 $versao = versao();
... ... @@ -2183,7 +2183,7 @@ function pegaClasseGeral()
2183 2183 {
2184 2184 global $codigoMap,$codigoLayer,$locaplic;
2185 2185  
2186   - error_reporting(0);
  2186 + //error_reporting(0);
2187 2187 $dados = array();
2188 2188 $mapfile = $locaplic."/temas/".$codigoMap.".map";
2189 2189 $mapa = ms_newMapObj($mapfile);
... ...
admin/php/editortexto.php
... ... @@ -102,7 +102,7 @@ body {
102 102 echo "Vc nao pode realizar essa operacao.";
103 103 exit ();
104 104 }
105   - error_reporting ( 0 );
  105 + //error_reporting ( 0 );
106 106 $mapfile = $locaplic . "/temas/" . $_GET ["mapfile"] . ".map";
107 107 if (! file_exists ( $mapfile )) {
108 108 echo "Arquivo $mapfile não existe.";
... ...
admin/php/estat_mapa_upload.php
... ... @@ -4,7 +4,7 @@ include_once("login.php");
4 4 if(verificaOperacaoSessao("admin/metaestat/geral") == false){
5 5 echo "Vc nao pode realizar essa operacao.";exit;
6 6 }
7   -error_reporting(0);
  7 +//error_reporting(0);
8 8 ?>
9 9 <html>
10 10 <head>
... ...
admin/php/estatisticas.php
... ... @@ -71,7 +71,7 @@ td {
71 71 $nacessosmaiorquedez = count(pegaDados("select soma from (select sum(nacessos) as soma from ".$esquemaadmin."i3geoadmin_acessostema where nacessos > 0 group by codigo_tema) as soma where soma > 10"));
72 72 $nacessosmaiorquecem = count(pegaDados("select soma from (select sum(nacessos) as soma from ".$esquemaadmin."i3geoadmin_acessostema where nacessos > 0 group by codigo_tema) as soma where soma > 100"));
73 73 $temasacessos = array();
74   - error_reporting(0);
  74 + //error_reporting(0);
75 75 foreach($temasvalidos as $tema){
76 76 $ncodigostemas[$tema["codigo_tema"]]++;
77 77 $nnomestemas[$tema["nome_tema"]]++;
... ...
admin/php/gruposusuarios.php
... ... @@ -58,7 +58,7 @@ cp.set_response_type(&quot;JSON&quot;)
58 58 cp.call(p,"lente",ajaxabrelente)
59 59  
60 60 */
61   -error_reporting(0);
  61 +//error_reporting(0);
62 62 //
63 63 //pega as variaveis passadas com get ou post
64 64 //
... ...
admin/php/identifica.php
... ... @@ -55,7 +55,7 @@ $id_i = $_GET[&quot;id_i&quot;];
55 55 $id = $_GET["id"];
56 56 testaSafeNumerico([$id_i,$id]);
57 57  
58   -error_reporting(0);
  58 +//error_reporting(0);
59 59 //faz a busca da fun&ccedil;&atilde;o que deve ser executada
60 60 switch (strtoupper($funcao))
61 61 {
... ...
admin/php/login.php
... ... @@ -58,7 +58,7 @@ cp.set_response_type(&quot;JSON&quot;)
58 58 cp.call(p,"lente",ajaxabrelente)
59 59  
60 60 */
61   -error_reporting(0);
  61 +//error_reporting(0);
62 62 //
63 63 //pega as variaveis passadas com get ou post
64 64 //
... ... @@ -76,7 +76,7 @@ if(isset($i3geoPermiteLoginIp)){
76 76 checaLoginIp($i3geoPermiteLoginIp);
77 77 }
78 78  
79   -error_reporting(0);
  79 +//error_reporting(0);
80 80 session_write_close();
81 81 session_name("i3GeoLogin");
82 82 //se o usuario estiver tentando fazer login
... ... @@ -315,7 +315,8 @@ function autenticaUsuario($usuario,$senha){
315 315 //echo "select * from ".$esquemaadmin."i3geousr_usuarios where login = '$usuario' and (senha = '$senhamd5' or senha = '$senha') and ativo = 1";exit;
316 316 //exit;
317 317 if(verificaMaster($usuario,$senha) == true){
318   - $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario ",$dbh,false);
  318 + //$pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papelusuario ",$dbh,false);
  319 + $pa = pegaDados("select * from ".$esquemaadmin."i3geousr_papeis ",$dbh,false);
319 320 $op = pegadados("SELECT O.codigo FROM ".$esquemaadmin."i3geousr_operacoes AS O",$dbh,false);
320 321 $gr = pegadados("SELECT * from ".$esquemaadmin."i3geousr_grupos ",$dbh,false);
321 322 //var_dump($gr);exit;
... ... @@ -399,6 +400,8 @@ function autenticaUsuario($usuario,$senha){
399 400 function logoutUsuario(){
400 401 $_COOKIE = array();
401 402 $_SESSION = array();
402   - session_destroy();
  403 + if(session_status() == PHP_SESSION_ACTIVE){
  404 + session_destroy();
  405 + }
403 406 }
404 407 ?>
... ...
admin/php/mapas.php
... ... @@ -55,7 +55,7 @@ $id_mapa = $_GET[&quot;id_mapa&quot;];
55 55 testaSafeNumerico([$id,$id_mapa]);
56 56  
57 57  
58   -error_reporting(0);
  58 +//error_reporting(0);
59 59 //faz a busca da fun&ccedil;&atilde;o que deve ser executada
60 60 switch (strtoupper($funcao))
61 61 {
... ...
admin/php/metaestat.php
... ... @@ -39,24 +39,22 @@ Cada opera&amp;ccedil;&amp;atilde;o possu&amp;iacute; seus proprios par&amp;acirc;metros, que de
39 39 include_once(dirname(__FILE__)."/login.php");
40 40  
41 41 $codigo_estat_conexao = $_GET["codigo_estat_conexao"];//pode ser string ou numerico
42   -$codigo_variavel = $_GET["codigo_variavel"];
43   -$codigo_tipo_periodo = $_GET["codigo_tipo_periodo"];
44   -$codigo_tipo_regiao = $_GET["codigo_tipo_regiao"];
45   -$codigo_unidade_medida = $_GET["codigo_unidade_medida"];
46   -$codigo_tipo_regiao_pai = $_GET["codigo_tipo_regiao_pai"];
47   -$id_medida_variavel = $_GET["id_medida_variavel"];
48   -$id_classificacao = $_GET["id_classificacao"];
49   -$id_link = $_GET["id_link"];
50   -$id_classe = $_GET["id_classe"];
51   -$id_parametro_medida = $_GET["id_parametro_medida"];
52   -$id_fonteinfo = $_GET["id_fonteinfo"];
53   -$id_agregaregiao = $_GET["id_agregaregiao"];
54   -$id_mapa = $_GET["id_mapa"];
55   -$id_mapa_grupo = $_GET["id_mapa_grupo"];
56   -$id_mapa_tema = $_GET["id_mapa_tema"];
57   -$id_pai = $_GET["id_pai"];
58   -
59   -testaSafeNumerico([$codigo_tipo_regiao_pai,$id_pai,$id_mapa_tema,$id_mapa_grupo,$id_mapa,$id_agregaregiao,$codigo_tipo_regiao,$codigo_tipo_periodo,$id_fonteinfo,$codigo_unidade_medida,$codigo_variavel,$id_medida_variavel,$id_classificacao,$id_link,$id_classe,$id_parametro_medida]);
  42 +$codigo_variavel = (int) $_GET["codigo_variavel"];
  43 +$codigo_tipo_periodo = (int) $_GET["codigo_tipo_periodo"];
  44 +$codigo_tipo_regiao = (int) $_GET["codigo_tipo_regiao"];
  45 +$codigo_unidade_medida = (int) $_GET["codigo_unidade_medida"];
  46 +$codigo_tipo_regiao_pai = (int) $_GET["codigo_tipo_regiao_pai"];
  47 +$id_medida_variavel = (int) $_GET["id_medida_variavel"];
  48 +$id_classificacao = (int) $_GET["id_classificacao"];
  49 +$id_link = (int) $_GET["id_link"];
  50 +$id_classe = (int) $_GET["id_classe"];
  51 +$id_parametro_medida = (int) $_GET["id_parametro_medida"];
  52 +$id_fonteinfo = (int) $_GET["id_fonteinfo"];
  53 +$id_agregaregiao = (int) $_GET["id_agregaregiao"];
  54 +$id_mapa = (int) $_GET["id_mapa"];
  55 +$id_mapa_grupo = (int) $_GET["id_mapa_grupo"];
  56 +$id_mapa_tema = (int) $_GET["id_mapa_tema"];
  57 +$id_pai = (int) $_GET["id_pai"];
60 58  
61 59 //lista de funcoes que passam pela validacao de login
62 60 $funcoesEdicao = array(
... ... @@ -140,11 +138,8 @@ if(in_array(strtoupper($funcao),$funcoesEdicao)){
140 138 }
141 139 }
142 140  
143   -
144   -
145   -
146 141 include(dirname(__FILE__)."/classe_metaestat.php");
147   -error_reporting(0);
  142 +//error_reporting(0);
148 143 //faz a busca da fun&ccedil;&atilde;o que deve ser executada
149 144 switch (strtoupper($funcao))
150 145 {
... ...
admin/php/metaestat_mapa_uploadimagem.php
... ... @@ -8,7 +8,7 @@ include_once(&quot;login.php&quot;);
8 8 if(verificaOperacaoSessao("admin/metaestat/geral") == false){
9 9 echo "Vc nao pode realizar essa operacao.";exit;
10 10 }
11   -error_reporting(0);
  11 +//error_reporting(0);
12 12 ?>
13 13 <html>
14 14 <head>
... ...
admin/php/metaestat_uploadcsv_submit.php
... ... @@ -6,7 +6,7 @@ include_once(&quot;login.php&quot;);
6 6 if(verificaOperacaoSessao("admin/metaestat/editorbanco") == false){
7 7 echo "Vc nao pode realizar essa operacao.";exit;
8 8 }
9   -error_reporting(0);
  9 +//error_reporting(0);
10 10 if (ob_get_level() == 0) ob_start();
11 11  
12 12 ?>
... ...
admin/php/metaestat_uploaddados_submit.php
1 1 <?php
2 2 $colunasarquivo = "";
3 3 $nomearquivoserv = "";
4   -error_reporting(0);
  4 +//error_reporting(0);
5 5 include_once(dirname(__FILE__)."/login.php");
6 6 if (isset($_FILES['i3GEOuploadArquivo']['name']))
7 7 {
... ...
admin/php/metaestat_uploadshp_submit.php
... ... @@ -7,7 +7,7 @@ set_time_limit(0);
7 7 if(verificaOperacaoSessao("admin/metaestat/editorbanco") == false){
8 8 echo "Vc nao pode realizar essa operacao.";exit;
9 9 }
10   -error_reporting(0);
  10 +//error_reporting(0);
11 11 if (ob_get_level() == 0) ob_start();
12 12 ?>
13 13 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
... ...
admin/php/operacoes.php
... ... @@ -58,7 +58,7 @@ cp.set_response_type(&quot;JSON&quot;)
58 58 cp.call(p,"lente",ajaxabrelente)
59 59  
60 60 */
61   -error_reporting(0);
  61 +//error_reporting(0);
62 62 //
63 63 //pega as variaveis passadas com get ou post
64 64 //
... ...
admin/php/parsemapfile.php
... ... @@ -51,7 +51,7 @@ include_once(dirname(__FILE__).&quot;/../../classesphp/carrega_ext.php&quot;);
51 51 $bloqueiaStringConexao = true;
52 52 //
53 53 $forcawms = $_GET["forcawms"];
54   -error_reporting(0);
  54 +//error_reporting(0);
55 55 if(!isset($forcawms)){$forcawms = "nao";}
56 56 $objcontype[0] = "MS_INLINE";
57 57 $objcontype[1] = "MS_SHAPEFILE";
... ...
admin/php/preview.php
... ... @@ -21,7 +21,7 @@ $urli3geo = str_replace(&quot;/ogc.php&quot;,&quot;&quot;,$protocolo.$_SERVER[&quot;PHP_SELF&quot;]);
21 21 //
22 22 //cria o web service
23 23 //
24   -error_reporting(0);
  24 +//error_reporting(0);
25 25 $versao = versao();
26 26 $versao = $versao["principal"];
27 27  
... ...
admin/php/sistemas.php
... ... @@ -57,7 +57,7 @@ if(in_array(strtoupper($funcao),$funcoesEdicao)){
57 57 retornaJSON("Vc nao pode realizar essa operacao.");exit;
58 58 }
59 59 }
60   -error_reporting(0);
  60 +//error_reporting(0);
61 61 //faz a busca da fun&ccedil;&atilde;o que deve ser executada
62 62 switch (strtoupper($funcao))
63 63 {
... ...
admin/php/subirshapefile.php
... ... @@ -13,7 +13,7 @@ if(isset($_GET[&quot;tipo&quot;])){
13 13 if(empty($locaplic)){
14 14 exit;
15 15 }
16   -error_reporting(0);
  16 +//error_reporting(0);
17 17 ?>
18 18 <html>
19 19 <head>
... ...
admin/php/upgradebanco44_45.php
... ... @@ -71,7 +71,7 @@ else{
71 71 exit;
72 72 }
73 73 }
74   -error_reporting(0);
  74 +//error_reporting(0);
75 75 $tabelas = array(
76 76 "CREATE TABLE i3geoadmin_comentarios (comentario TEXT, data TEXT, openidnome TEXT, openidimagem TEXT, openidservico TEXT, openidusuario TEXT, openidurl TEXT, id_tema NUMERIC)",
77 77 "CREATE TABLE i3geoadmin_acessostema (codigo_tema TEXT, nacessos NUMERIC,dia NUMERIC, mes NUMERIC, ano NUMERIC)"
... ...
admin/php/upgradebanco46_47.php
... ... @@ -75,7 +75,7 @@ else{
75 75 exit;
76 76 }
77 77 }
78   -error_reporting(0);
  78 +//error_reporting(0);
79 79 //tabelas do controle de usuarios e sistema metaestat
80 80 $tabelas = array(
81 81 "ALTER TABLE ".$esquemaadmin."i3geoadmin_mapas ADD mapfile TEXT",
... ...
admin/php/uploadgvp.php
... ... @@ -5,7 +5,7 @@ include_once(&quot;login.php&quot;);
5 5 if(verificaOperacaoSessao("admin/metaestat/geral") == false){
6 6 echo "Vc nao pode realizar essa operacao.";exit;
7 7 }
8   -error_reporting(0);
  8 +//error_reporting(0);
9 9 if (ob_get_level() == 0) ob_start();
10 10 ?>
11 11 <html>
... ...
admin/php/usuarios.php
... ... @@ -58,7 +58,7 @@ cp.set_response_type(&quot;JSON&quot;)
58 58 cp.call(p,"lente",ajaxabrelente)
59 59  
60 60 */
61   -error_reporting(0);
  61 +//error_reporting(0);
62 62 //
63 63 //pega as variaveis passadas com get ou post
64 64 //
... ...
admin/php/webservices.php
... ... @@ -39,7 +39,7 @@ O par&amp;acirc;metro principal &amp;eacute; &quot;funcao&quot;, que define qual opera&amp;ccedil;&amp;ati
39 39 Cada opera&ccedil;&atilde;o possu&iacute; seus próprios par&acirc;metros, que devem ser enviados tamb&eacute;m na requisi&ccedil;&atilde;o da opera&ccedil;&atilde;o.
40 40  
41 41 */
42   -error_reporting(0);
  42 +//error_reporting(0);
43 43  
44 44 //a funcao PEGAWS pode ser executada por outros programas
45 45  
... ...
admin/php/xml.php
... ... @@ -60,9 +60,12 @@ Retorno:
60 60  
61 61 String na estrutura XML
62 62 */
63   -function geraXmlSistemas($perfil,$locaplic,$editores)
  63 +function geraXmlSistemas($perfil="",$locaplic="",$editores="")
64 64 {
65 65 global $esquemaadmin;
  66 + if(empty($locaplic)){
  67 + return;
  68 + }
66 69 $editor = "nao";//verificaEditores($editores);
67 70 if (!isset($perfil)){$perfil = "";}
68 71 $perfil = str_replace(","," ",$perfil);
... ... @@ -554,7 +557,7 @@ function geraXmlRSS($locaplic,$sql,$descricao,$output=&quot;xml&quot;)
554 557 function geraXmlAtlas($locaplic,$editores)
555 558 {
556 559 global $esquemaadmin;
557   - error_reporting(0);
  560 + //error_reporting(0);
558 561 $dbh = "";
559 562 include($locaplic."/admin/php/conexao.php");
560 563  
... ... @@ -633,7 +636,7 @@ function geraXmlIdentifica($perfil,$locaplic,$editores)
633 636 if($target == ""){$target = "_self";}
634 637 $xml .= " <TARGET>".$target."</TARGET>\n";
635 638 $xml .= " </FUNCAO>\n";
636   - }error_reporting(0);
  639 + }//error_reporting(0);
637 640 }
638 641 $xml .= "</SISTEMAS>\n";
639 642 $dbh = null;
... ...
admin/rsscomentariostemas.php
... ... @@ -37,7 +37,7 @@ Arquivo:
37 37 i3geo/admin/rsscomentariostemas.php
38 38 */
39 39  
40   -error_reporting(0);
  40 +//error_reporting(0);
41 41 if(!isset($locaplic)){
42 42 include(dirname(__FILE__)."/../ms_configura.php");
43 43 }
... ...
admin/rssgrupos.php
... ... @@ -32,7 +32,7 @@ Arquivo:
32 32  
33 33 i3geo/admin/rssgrupos.php
34 34 */
35   -error_reporting(0);
  35 +//error_reporting(0);
36 36 if(!isset($locaplic)){
37 37 include(dirname(__FILE__)."/../ms_configura.php");
38 38 }
... ...
admin/rssmapas.php
... ... @@ -32,7 +32,7 @@ Arquivo:
32 32  
33 33 i3geo/admin/rssmapas.php
34 34 */
35   -error_reporting(0);
  35 +//error_reporting(0);
36 36 if(!isset($locaplic)){
37 37 include(dirname(__FILE__)."/../ms_configura.php");
38 38 }
... ...
admin/rsssubgrupos.php
... ... @@ -38,7 +38,7 @@ Arquivo:
38 38  
39 39 i3geo/admin/rsssubgrupos.php
40 40 */
41   -error_reporting(0);
  41 +//error_reporting(0);
42 42 if(!isset($locaplic)){
43 43 include(dirname(__FILE__)."/../ms_configura.php");
44 44 }
... ...
admin/rsstemas.php
... ... @@ -38,7 +38,7 @@ Arquivo:
38 38  
39 39 i3geo/admin/rsstemas.php
40 40 */
41   -error_reporting(0);
  41 +//error_reporting(0);
42 42 if(!isset($locaplic)){
43 43 include(dirname(__FILE__)."/../ms_configura.php");
44 44 }
... ...
admin/rsstemasdownload.php
... ... @@ -35,7 +35,7 @@ Arquivo:
35 35 i3geo/admin/rsstemasdownload.php
36 36 */
37 37  
38   -error_reporting(0);
  38 +//error_reporting(0);
39 39 if(!isset($locaplic)){
40 40 include(dirname(__FILE__)."/../ms_configura.php");
41 41 }
... ...
admin/rsstemaskml.php
... ... @@ -35,7 +35,7 @@ Arquivo:
35 35 i3geo/admin/rsstemaskml.php
36 36 */
37 37  
38   -error_reporting(0);
  38 +//error_reporting(0);
39 39 if(!isset($locaplic)){
40 40 include(dirname(__FILE__)."/../ms_configura.php");
41 41 }
... ...
admin/rsstemasogc.php
... ... @@ -34,7 +34,7 @@ Arquivo:
34 34  
35 35 i3geo/admin/rsstemasogc.php
36 36 */
37   -error_reporting(0);
  37 +//error_reporting(0);
38 38 if(!isset($locaplic)){
39 39 include(dirname(__FILE__)."/../ms_configura.php");
40 40 }
... ...
admin/rsstemasraiz.php
... ... @@ -40,7 +40,7 @@ Arquivo:
40 40  
41 41 i3geo/admin/rsstemasraiz.php
42 42 */
43   -error_reporting(0);
  43 +//error_reporting(0);
44 44 if(!isset($locaplic)){
45 45 include(dirname(__FILE__)."/../ms_configura.php");
46 46 }
... ...
admin/xmlatlas.php
1 1 <?php
2 2 /*DEPRECIADO*/
3   -error_reporting(0);
  3 +//error_reporting(0);
4 4 if(!isset($locaplic)){
5 5 include(dirname(__FILE__)."/../ms_configura.php");
6 6 }
... ...
admin/xmlgeorss.php
... ... @@ -35,7 +35,7 @@ Arquivo:
35 35 i3geo/admin/xmlgeorss.php
36 36 */
37 37  
38   -error_reporting(0);
  38 +//error_reporting(0);
39 39 if(!isset($locaplic)){
40 40 include(dirname(__FILE__)."/../ms_configura.php");
41 41 }
... ...
admin/xmlidentifica.php
... ... @@ -39,7 +39,7 @@ Arquivo:
39 39 i3geo/admin/xmlidentifica.php
40 40 */
41 41  
42   -error_reporting(0);
  42 +//error_reporting(0);
43 43 if(!isset($locaplic)){
44 44 include(dirname(__FILE__)."/../ms_configura.php");
45 45 }
... ...
admin/xmlkmlrss.php
... ... @@ -34,7 +34,7 @@ Arquivo:
34 34  
35 35 i3geo/admin/xmlkmlrss.php
36 36 */
37   -error_reporting(0);
  37 +//error_reporting(0);
38 38 if(!isset($locaplic)){
39 39 include(dirname(__FILE__)."/../ms_configura.php");
40 40 }
... ...
admin/xmllinksdownload.php
... ... @@ -35,7 +35,7 @@ Arquivo:
35 35 i3geo/admin/xmllinksdownload.php
36 36 */
37 37  
38   -error_reporting(0);
  38 +//error_reporting(0);
39 39 if(!isset($locaplic)){
40 40 include(dirname(__FILE__)."/../ms_configura.php");
41 41 }
... ...
admin/xmlmapas.php
... ... @@ -35,7 +35,7 @@ Arquivo:
35 35 i3geo/admin/xmlmapas.php
36 36 */
37 37  
38   -error_reporting(0);
  38 +//error_reporting(0);
39 39 if(!isset($locaplic)){
40 40 include(dirname(__FILE__)."/../ms_configura.php");
41 41 }
... ...
admin/xmlmenutemas.php
1 1 <?php
2   -error_reporting(0);
  2 +//error_reporting(0);
3 3 if(!isset($locaplic)){
4 4 include(dirname(__FILE__)."/../ms_configura.php");
5 5 }
... ...
admin/xmlmetaestatogc.php
... ... @@ -34,7 +34,7 @@ Arquivo:
34 34  
35 35 i3geo/admin/rssmetaestatogc.php
36 36 */
37   -error_reporting(0);
  37 +//error_reporting(0);
38 38 if(!isset($locaplic)){
39 39 include(dirname(__FILE__)."/../ms_configura.php");
40 40 }
... ...
admin/xmlservicoswms.php
... ... @@ -35,7 +35,7 @@ Arquivo:
35 35 i3geo/admin/xmlservicoswms.php
36 36 */
37 37  
38   -error_reporting(0);
  38 +//error_reporting(0);
39 39 if(!isset($locaplic)){
40 40 include(dirname(__FILE__)."/../ms_configura.php");
41 41 }
... ...
admin/xmlservicosws.php
... ... @@ -35,7 +35,7 @@ Arquivo:
35 35 i3geo/admin/xmlservicosws.php
36 36 */
37 37  
38   -error_reporting(0);
  38 +//error_reporting(0);
39 39 if(!isset($locaplic)){
40 40 include(dirname(__FILE__)."/../ms_configura.php");
41 41 }
... ...
admin/xmlsistemas.php
... ... @@ -35,7 +35,7 @@ Arquivo:
35 35 i3geo/admin/xmlsistemas.php
36 36 */
37 37  
38   -error_reporting(0);
  38 +//error_reporting(0);
39 39 if(!isset($locaplic)){
40 40 include(dirname(__FILE__)."/../ms_configura.php");
41 41 }
... ...
admin1/catalogo/mapfile/preview/index.php
... ... @@ -58,7 +58,7 @@ $urli3geo = str_replace(&quot;/ogc.php&quot;,&quot;&quot;,$protocolo.$_SERVER[&quot;PHP_SELF&quot;]);
58 58 //
59 59 //cria o web service
60 60 //
61   -error_reporting (E_ALL);
  61 +//error_reporting (E_ALL);
62 62 $versao = \admin\php\funcoesAdmin\versao();
63 63 $versao = $versao["principal"];
64 64  
... ...
admin1/catalogo/mapfile/teste/exec.php
... ... @@ -94,7 +94,7 @@ function testaTabela($tema) {
94 94  
95 95 $mapa = ms_newMapObj ( $base );
96 96 $nmapa = ms_newMapObj ( $tema );
97   - error_reporting ( E_ALL );
  97 + //error_reporting ( E_ALL );
98 98 ms_ResetErrorList ();
99 99  
100 100 $numlayers = $nmapa->numlayers;
... ... @@ -102,7 +102,7 @@ function testaTabela($tema) {
102 102 for($i = 0; $i < $numlayers; $i ++) {
103 103 $layern = $nmapa->getlayer ( $i );
104 104 $layern->set ( "status", MS_DEFAULT );
105   - error_reporting ( E_ALL );
  105 + //error_reporting ( E_ALL );
106 106 if ($layern->classitem != "" && $layern->connectiontype == 7 && $layern->numclasses > 0 && $layern->getmetadata ( "wms_sld_body" ) == "") {
107 107 $tipotemp = $layern->type;
108 108 $tiporep = $layern->getmetadata ( "tipooriginal" );
... ... @@ -179,7 +179,7 @@ function testaMapaImg($tema) {
179 179 $locaplic = $_SESSION ["locaplic"];
180 180 $base = mapaBase ( $_SESSION ["locaplic"], $versao, $base );
181 181 $mapa = ms_newMapObj ( $base );
182   - error_reporting ( E_ALL );
  182 + //error_reporting ( E_ALL );
183 183 ms_ResetErrorList ();
184 184 try {
185 185 ms_newMapObj ( $tema );
... ... @@ -219,7 +219,7 @@ function testaMapaImg($tema) {
219 219 $layern = $nmapa->getlayer ( $i );
220 220 $layern->set ( "status", MS_DEFAULT );
221 221 autoClasses ( $layern, $nmapa );
222   - error_reporting ( E_ALL );
  222 + //error_reporting ( E_ALL );
223 223 if ($layern->classitem != "" && $layern->connectiontype == 7 && $layern->numclasses > 0 && $layern->getmetadata ( "wms_sld_body" ) == "") {
224 224 $tipotemp = $layern->type;
225 225 $tiporep = $layern->getmetadata ( "tipooriginal" );
... ...
admin1/dicionario/core.js
... ... @@ -174,5 +174,10 @@ i3GEOadmin.core.dicionario = {
174 174 pt : "Hora",
175 175 en : "",
176 176 es : ""
  177 + } ],
  178 + 'confirma' : [ {
  179 + pt : "As altera&ccedil;&otilde;es n&atilde;o poder&atilde;o ser revertidas. Continua?",
  180 + en : "",
  181 + es : ""
177 182 } ]
178 183 };
... ...
admin1/ferramentas/miniaturas/exec.php
... ... @@ -13,7 +13,7 @@ if(empty($_GET[&quot;tipo&quot;])){
13 13 <div class="col-md-12">
14 14 <div class="well">
15 15 <?php
16   - error_reporting (E_ALL);
  16 + //error_reporting (E_ALL);
17 17 //
18 18 //carrega o phpmapscript
19 19 //
... ... @@ -26,7 +26,7 @@ if(empty($_GET[&quot;tipo&quot;])){
26 26 if (ob_get_level() == 0){
27 27 ob_start();
28 28 }
29   - error_reporting (E_ALL);
  29 + //error_reporting (E_ALL);
30 30 $arqs = listaArquivos("../../../temas",true,array("map"));
31 31 $arqs = $arqs["arquivos"];
32 32 sort($arqs);
... ...
admin1/ferramentas/miniaturas/index.php
... ... @@ -112,7 +112,7 @@ if(empty($_POST[&quot;tipo&quot;])){
112 112 <div class="col-md-12">
113 113 <div class="well">
114 114 <?php
115   - error_reporting (E_ALL);
  115 + //error_reporting (E_ALL);
116 116 $versao = \admin\php\funcoesAdmin\versao();
117 117 $versao = $versao["principal"];
118 118  
... ... @@ -122,7 +122,7 @@ if(empty($_POST[&quot;tipo&quot;])){
122 122 if (ob_get_level() == 0){
123 123 ob_start();
124 124 }
125   - error_reporting (E_ALL);
  125 + //error_reporting (E_ALL);
126 126 $arqs = listaArquivos("../../../temas",true,array("map"));
127 127 $arqs = $arqs["arquivos"];
128 128 sort($arqs);
... ...
admin1/php/checaLogin.php
1 1 <?php
2 2 namespace admin\php\login;
3   -error_reporting(E_ALL ^E_NOTICE);
  3 +//error_reporting(E_ALL ^E_NOTICE);
4 4 error_log("checaLogin OK",0);
5 5  
6 6 // junta get e post
... ...
admin1/php/funcoesAdmin.php
... ... @@ -82,7 +82,7 @@ function retornaJSON($obj)
82 82 {
83 83 $locaplic = $_SESSION["locaplic"];
84 84 include_once($locaplic."/pacotes/cpaint/JSON/json2.php");
85   - error_reporting (E_ALL);
  85 + //error_reporting (E_ALL);
86 86 ob_end_clean();
87 87 $j = new Services_JSON();
88 88 $texto = $j->encode($obj);
... ... @@ -185,7 +185,7 @@ function pegaDados($sql,$dbh=&quot;&quot;,$close=true)
185 185 if($dbh == "" || is_string($dbh)){
186 186 include(dirname(__FILE__)."/conexao.php");
187 187 }
188   - error_reporting (E_ALL);
  188 + //error_reporting (E_ALL);
189 189 //$dbh deve ser definido com somente leitura, mas por prevencao:
190 190 $sql = str_ireplace(array("update","delete","insert","--","drop",";"),"",$sql);
191 191 $q = $dbh->query($sql,PDO::FETCH_ASSOC);
... ... @@ -472,7 +472,7 @@ function nomeRandomico($n=10)
472 472 */
473 473 function substituiCon($map_file,$postgis_mapa)
474 474 {
475   - error_reporting (E_ALL);
  475 + //error_reporting (E_ALL);
476 476 if (!empty($postgis_mapa) && (file_exists($map_file)))
477 477 {
478 478 if(!@ms_newMapObj($map_file)){return false;}
... ... @@ -507,7 +507,7 @@ function substituiCon($map_file,$postgis_mapa)
507 507 return true;
508 508 }
509 509 function substituiConObj($objMap,$postgis_mapa){
510   - error_reporting (E_ALL);
  510 + //error_reporting (E_ALL);
511 511 if (!empty($postgis_mapa)){
512 512 $numlayers = $objMap->numlayers;
513 513 for ($i=0;$i < $numlayers;++$i){
... ...
aplicmap/dados/estados.shp.tl3x
No preview for this file type
classesjs/compactajs.php
... ... @@ -423,9 +423,9 @@ function salvatudojs($jsfiles,$buffer,$final,$tipo)
423 423 //gzip
424 424 $abre = fopen($final, "r");
425 425 if ($tipo == "js")
426   - $buffer = "<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/javascript\"); ?>";
  426 + $buffer = "<?php //error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/javascript\"); ?>";
427 427 else
428   - $buffer = "<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/css\"); ?>";
  428 + $buffer = "<?php //error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/css\"); ?>";
429 429 while (!feof($abre))
430 430 {$buffer .= fgets($abre);}
431 431 fclose($abre);
... ...
classesjs/compactajs_closurecompiler.php
... ... @@ -376,9 +376,9 @@ function salvatudojs($jsfiles,$buffer,$final,$tipo)
376 376 //gzip
377 377 $abre = fopen($final, "r");
378 378 if ($tipo == "js")
379   - $buffer = "<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/javascript\"); ?>";
  379 + $buffer = "<?php //error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/javascript\"); ?>";
380 380 else
381   - $buffer = "<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/css\"); ?>";
  381 + $buffer = "<?php //error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header(\"Content-type: text/css\"); ?>";
382 382 while (!feof($abre))
383 383 {$buffer .= fgets($abre);}
384 384 fclose($abre);
... ...
classesphp/atlas_controle.php
... ... @@ -63,7 +63,7 @@ mapdir - localiza&amp;ccedil;&amp;atilde;o, no servidor, do diretorio com o mapfile temp
63 63 imgdir - localiza&ccedil;&atilde;o, no servidor, das imagens tempor&aacute;rias do mapa atual.
64 64 debug - (pode ser definido como "sim" indica se o erro_reporting deve ser definido como E_ALL
65 65 */
66   -error_reporting(0);
  66 +//error_reporting(0);
67 67 $tempo = microtime(1);
68 68 //
69 69 // quando as fun&ccedil;&otilde;es abaixo forem utilizadas, &eacute; necess&aacute;rio definir $map_file para que o programa continue.
... ...
classesphp/classe_alteraclasse.php
... ... @@ -919,7 +919,7 @@ class Alteraclasse
919 919 */
920 920 function alteracor($idclasse,$cor)
921 921 {
922   - error_reporting(0);
  922 + //error_reporting(0);
923 923 if(!$this->layer){
924 924 return "erro";
925 925 }
... ... @@ -948,7 +948,7 @@ class Alteraclasse
948 948 */
949 949 function alterageometria($tipo)
950 950 {
951   - error_reporting(0);
  951 + //error_reporting(0);
952 952 if(!$this->layer){
953 953 return "erro";
954 954 }
... ...
classesphp/classe_analise.php
... ... @@ -250,7 +250,7 @@ class Analise {
250 250 break;
251 251 // delaunay e voronoi
252 252 case "deldir" :
253   - // error_reporting(0);
  253 + // //error_reporting(0);
254 254 $this->mapaDeldir ( $nomearq, $dir_tmp, $R_path, $locaplic );
255 255 $this->deldirDir2shp ( $nomearq . "dirsgs", $dir_tmp, $locaplic );
256 256 $this->deldirDel2shp ( $nomearq . "delsgs", $dir_tmp, $locaplic );
... ... @@ -1179,7 +1179,7 @@ class Analise {
1179 1179 $lineo = $spt->line ( 0 );
1180 1180 $pt = $lineo->point ( 0 );
1181 1181 // faz a pesquisa
1182   - // error_reporting(0);
  1182 + // //error_reporting(0);
1183 1183 foreach ( $layers as $layer ) {
1184 1184 $layer->set ( "template", "none.htm" );
1185 1185 $layer->set ( "toleranceunits", MS_PIXELS );
... ... @@ -1270,7 +1270,7 @@ class Analise {
1270 1270 *
1271 1271 */
1272 1272 function distanciaptpt($temaorigem, $temadestino, $temaoverlay, $locaplic, $itemorigem = "", $itemdestino = "") {
1273   - // error_reporting(0);
  1273 + // //error_reporting(0);
1274 1274 set_time_limit ( 180 );
1275 1275 // para manipular dbf
1276 1276 if ($this->dbaseExiste == false) {
... ... @@ -1438,7 +1438,7 @@ class Analise {
1438 1438 */
1439 1439 function criaBuffer($distancia, $locaplic, $unir = "nao", $wkt = "", $multiplicar = 1, $itemdistancia = "") {
1440 1440 set_time_limit ( 180 );
1441   - error_reporting ( 0 );
  1441 + //error_reporting ( 0 );
1442 1442 if ($this->nome != "") {
1443 1443 $items = pegaItens ( $this->layer );
1444 1444 } else {
... ... @@ -1580,7 +1580,7 @@ class Analise {
1580 1580 if ($this->dbaseExiste == false) {
1581 1581 include_once dirname ( __FILE__ ) . "/../pacotes/phpxbase/api_conversion.php";
1582 1582 }
1583   - // error_reporting(0);
  1583 + // //error_reporting(0);
1584 1584 $nomeCentro = nomeRandomico ();
1585 1585 $nomeshp = $this->diretorio . "/" . $nomeCentro;
1586 1586 // pega os shapes selecionados
... ... @@ -2206,7 +2206,7 @@ class Analise {
2206 2206 * $locaplic - Localiza&ccedil;&atilde;o do I3geo
2207 2207 */
2208 2208 function nptPol($temaPt, $temaPo, $locaplic, $somaritem = "") {
2209   - // error_reporting(0);
  2209 + // //error_reporting(0);
2210 2210 set_time_limit ( 180 );
2211 2211 // para manipular dbf
2212 2212 if ($this->dbaseExiste == false) {
... ... @@ -2704,7 +2704,7 @@ class Analise {
2704 2704 * $operacao - Tipo de an&aacute;lise.
2705 2705 */
2706 2706 function calculaGeometrias($dir_tmp, $imgdir, $lista, $operacao) {
2707   - // error_reporting(0);
  2707 + // //error_reporting(0);
2708 2708 $lista = explode ( ",", $lista );
2709 2709 $dir = $dir_tmp . "/" . $imgdir . "/";
2710 2710 foreach ( $lista as $l ) {
... ... @@ -3056,7 +3056,7 @@ class Analise {
3056 3056 * )
3057 3057 * (end)
3058 3058 */
3059   - // error_reporting(0);
  3059 + // //error_reporting(0);
3060 3060 function classesRasterI($minvalor, $maxvalor, $nclasses, $cores) {
3061 3061 $resultado = array ();
3062 3062 $intervalo = intval ( 250 / $nclasses );
... ...
classesphp/classe_atlas.php
... ... @@ -48,7 +48,7 @@ $atlasxml - Objeto xml com o atlas.
48 48 */
49 49 function __construct($xml)
50 50 {
51   - error_reporting(0);
  51 + //error_reporting(0);
52 52 $this->xml = $xml;
53 53 }
54 54 /*
... ...
classesphp/classe_atributos.php
... ... @@ -386,7 +386,7 @@ class Atributos
386 386 */
387 387 function listaRegistros($itemtema,$tipo,$unico,$inicio,$fim,$tipolista,$dadosDaClasse="nao")
388 388 {
389   - error_reporting(0);
  389 + //error_reporting(0);
390 390 if(!$this->layer){
391 391 return "erro";
392 392 }
... ... @@ -585,7 +585,7 @@ class Atributos
585 585 */
586 586 function listaUnicoRapida($item)
587 587 {
588   - error_reporting(0);
  588 + //error_reporting(0);
589 589 if(!$this->layer){
590 590 return "erro";
591 591 }
... ... @@ -645,7 +645,7 @@ class Atributos
645 645 */
646 646 function listaRegistrosXY($items,$tipo,$tipolista)
647 647 {
648   - error_reporting(0);
  648 + //error_reporting(0);
649 649 if(!$this->layer){
650 650 return "erro";
651 651 }
... ...
classesphp/classe_legenda.php
... ... @@ -297,6 +297,69 @@ class Legenda
297 297 $l = implode("<tr>",$pedacos);
298 298 return (array("legenda"=>$l,"desativar"=>$desligar));
299 299 }
  300 + function criaLegendaJson($w=25,$h=25)
  301 + {
  302 + $l = "";
  303 + $numlayers = $this->mapa->numlayers;
  304 + if($this->nome != ""){
  305 + //verifica se &eacute; wms ou se o metadata legendaimg est&aacute; definido
  306 + $c = $this->layer->connectiontype;
  307 + if ($c == 7 || $this->layer->getmetadata("legendaimg") != ""){
  308 + return($this->tabelaLegenda());
  309 + }
  310 + for ($i=0;$i < $numlayers;++$i){
  311 + $la = $this->mapa->getlayer($i);
  312 + if ($la->name != $this->nome)
  313 + {
  314 + $la->set("status",MS_OFF);
  315 + }
  316 + if ($la->group == $this->nome)
  317 + {
  318 + $la->set("status",MS_DEFAULT);
  319 + }
  320 + $la->set("minscaledenom",0);
  321 + $la->set("maxscaledenom",0);
  322 + }
  323 + $this->layer->set("status",MS_DEFAULT);
  324 + }
  325 + $desligar = array();
  326 + $legenda = array();
  327 + for ($i=0;$i < $numlayers;++$i){
  328 + $la = $this->mapa->getlayer($i);
  329 + if (strtoupper($la->getmetadata("ESCONDIDO")) == "SIM"){
  330 + $la->set("status",MS_OFF);
  331 + }
  332 + $desligarLayer = array();
  333 + if($la->status == MS_DEFAULT){
  334 + $la->set("minscaledenom",0);
  335 + $la->set("maxscaledenom",0);
  336 + $nc = $la->numclasses;
  337 + $classes = array();
  338 + for ($c = 0;$c < $nc;$c++){
  339 + $ck = "checked";
  340 + $classe = $la->getclass($c);
  341 + if($classe->status == MS_OFF){
  342 + $ck = "";
  343 + }
  344 + //remove o offset em simbolos do tipo imagem
  345 + if($classe->numstyles > 0){
  346 + $estilo = $classe->getstyle(0);
  347 + if($estilo->symbolname != "" && file_exists($estilo->symbolname)){
  348 + $estilo->set("offsetx",0);
  349 + $estilo->set("offsety",0);
  350 + }
  351 + }
  352 + $imagem = $classe->createLegendIcon($w,$h)->saveWebImage();
  353 +
  354 + $classes[] = array("nome"=>$this->converte($classe->name),"img"=>$imagem, "checked"=>$ck, "index" => $c, "layer"=> $la->name );
  355 + }
  356 + $legenda[] = array("layer"=>$la->name,"nome"=>$this->converte($la->getmetadata("tema")),"classes"=>$classes);
  357 + }
  358 + $desligar[$la->name] = $desligarLayer;
  359 + }
  360 + return (array("legenda"=>$legenda));
  361 + }
  362 +
300 363 /*
301 364 function: legendaGrafica
302 365  
... ... @@ -599,7 +662,7 @@ class Legenda
599 662 {
600 663 $versao = versao();
601 664 $versao = $versao["principal"];
602   - error_reporting(0);
  665 + //error_reporting(0);
603 666 if ($tipo == 3){
604 667 $tipo = 2;
605 668 } //tipo raster
... ... @@ -903,7 +966,7 @@ class Legenda
903 966 */
904 967 function pegaParametrosLegImg()
905 968 {
906   - error_reporting(0);
  969 + //error_reporting(0);
907 970 $legenda = $this->mapa->legend;
908 971 $height = $legenda->height;
909 972 $width = $legenda->width;
... ...
classesphp/classe_menutemas.php
... ... @@ -123,7 +123,6 @@ array
123 123 $r["temas"] = $temasR;
124 124 $final[] = $r;
125 125 }
126   -
127 126 unset($arvore);
128 127 return ($final);
129 128 }
... ... @@ -293,7 +292,7 @@ Array
293 292 */
294 293 function pegaSistemas()
295 294 {
296   - error_reporting(0);
  295 + //error_reporting(0);
297 296 include_once($this->locaplic."/admin/php/xml.php");
298 297 $xmlsistemas = simplexml_load_string(geraXmlSistemas(implode(" ",$this->perfil),$this->locaplic));
299 298 $sistemas = array();
... ... @@ -339,7 +338,7 @@ Array
339 338 */
340 339 function pegaSistemasI()
341 340 {
342   - error_reporting(0);
  341 + //error_reporting(0);
343 342 include_once($this->locaplic."/admin/php/xml.php");
344 343  
345 344 $xmlsistemas = simplexml_load_string(geraXmlIdentifica(implode(" ",$this->perfil),$this->locaplic));
... ... @@ -660,21 +659,22 @@ nrss - (opcional) n&amp;uacute;mero de registros no rss que ser&amp;atilde;o considerado
660 659 }
661 660 return ($final);
662 661 }
663   - function verificaPapelSessao($id_papel){
  662 + function verificaPapelSessao($id_papel=""){
664 663 if(!empty($_COOKIE["i3geocodigologin"])){
665 664 session_write_close();
666 665 session_name("i3GeoLogin");
667 666 session_id($_COOKIE["i3geocodigologin"]);
668 667 session_start();
669   - //var_dump($_SESSION);exit;
670 668 if($_SESSION["usuario"] != $_COOKIE["i3geousuariologin"]){
671 669 return false;
672 670 }
673 671 foreach($_SESSION["papeis"] as $p){
674   - if($p["id_papel"] == 1 || $p["id_papel"] == $id_papel){
  672 + if($p == 1 || $p == $id_papel){
  673 + //error_log("------------------true".json_encode($_SESSION["papeis"]));
675 674 return true;
676 675 }
677 676 }
  677 + return false;
678 678 }
679 679 else{//caso nao exista, retorna um erro
680 680 return false;
... ...
classesphp/classe_metaestat.php
... ... @@ -1,2017 +0,0 @@
1   -<?php
2   -namespace i3geo\classesphp\metaestat;
3   -use PDO;
4   -/**
5   - * Classe metaestat
6   - * O construtor da classe faz o include do programa conexao.php que por sua vez faz o include
7   - * de i3geo/ms_configura.php. Com base nesses programas sao definidas algumas das variaveis globais
8   -*/
9   -class Metaestat{
10   - /**
11   - * Nome do esquema no banco de dados utilizado para armazenar as tabelas
12   - * do sistema de admnistracao. Obtido de ms_configura.php
13   - */
14   - protected $esquemaadmin;
15   - /**
16   - * Objeto PDO obtido com new PDO com direito de leitura no banco de dados de administracao
17   - */
18   - public $dbh;
19   - /**
20   - * Indica se e necessario converter para UTF strings obtidas do banco de administracao
21   - */
22   - public $convUTF;
23   - /**
24   - * Pasta temporaria utilizada pelo mapserver
25   - */
26   - public $dir_tmp;
27   - /**
28   - * Pasta onde e feito o cache de imagens do i3Geo
29   - */
30   - public $nomecache;
31   - /**
32   - * Grava ou nao o log de transacoes
33   - */
34   - public $logTransacoes;
35   - /**
36   - * Construtor
37   - * Faz o include de conexao.php que por sua vez faz o include de i3geo/ms_configura.php
38   - */
39   - function __construct(){
40   - error_reporting(0);
41   - include(dirname(__FILE__)."/../admin/php/conexao.php");
42   - //vem do include
43   - $this->dir_tmp = $dir_tmp;
44   - $this->logTransacoes = $logTransacoes;
45   - $this->locaplic = $locaplic;
46   - $this->base = $base;
47   - if(!isset($convUTF)){
48   - $convUTF = true;
49   - }
50   - $this->convUTF = $convUTF;
51   - $this->dbh = $dbh;
52   - $this->esquemaadmin = "";
53   - if(!empty($esquemaadmin)){
54   - $this->esquemaadmin = str_replace(".","",$esquemaadmin).".";
55   - }
56   - $this->nomecache = $this->nomeCache();
57   - }
58   - function __destruct(){
59   - $this->fechaConexao();
60   - }
61   - /**
62   - * Cria um nome de arquivo concatenando $_request
63   - * @return string
64   - */
65   - function nomeCache(){
66   - return "AAAA".md5(implode("x",$_REQUEST));
67   - }
68   - /**
69   - * Cria um nome aleatorio
70   - * @param numero de caracteres
71   - * @return string
72   - */
73   - function nomeRandomico($n=10){
74   - $nomes = "";
75   - $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ';
76   - $max = 51;
77   - for($i=0; $i < $n; ++$i)
78   - {
79   - $nomes .= $a{mt_rand(0, $max)};
80   - }
81   - return $nomes;
82   - }
83   - /**
84   - * Fecha a conexao com o banco de dados de administracao
85   - */
86   - function fechaConexao(){
87   - $this->dbh = null;
88   - }
89   - /**
90   - * Aplica a conversao de caracteres em um array ou string conforme o padrao do banco de administracao
91   - * Verifica se o parametro e um array ou um texto e executa converteTexto()
92   - * @param string|array
93   - * @return string|array
94   - */
95   - function converteTextoArray($texto){
96   - try {
97   - if(empty($texto) || strtoupper($texto) == "NULL"){
98   - return "";
99   - }
100   - $chaves = array_keys($texto);
101   - if($chaves[0] != "0"){
102   - foreach($chaves as $chave){
103   - $texto[$chave] = $this->converteTexto($texto[$chave]);
104   - }
105   - }
106   - else{
107   - $n = count($texto);
108   - for($i=0;$i<$n;$i++){
109   - $chaves = array_keys($texto[$i]);
110   - foreach($chaves as $chave){
111   - if(is_string($texto[$i][$chave])){
112   - $t = $this->converteTexto($texto[$i][$chave]);
113   - $texto[$i][$chave] = $t;
114   - }
115   - }
116   - }
117   - }
118   - return $texto;
119   - }
120   - catch (Exception $e) {
121   - return $texto;
122   - }
123   - }
124   - /**
125   - * Converte a codificacao de caracteres de uma string conforme o padrao do banco de admnistracao
126   - * @param string
127   - * @return string
128   - */
129   - function converteTexto($texto){
130   - if($texto == "0"){
131   - return "0";
132   - }
133   - if(empty($texto)){
134   - return "";
135   - }
136   - if($this->convUTF == true){
137   - $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"UTF-8");
138   - }
139   - else{
140   - $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"ISO-8859-1");
141   - }
142   - return $texto;
143   - }
144   - /**
145   - * Executa um SQL no banco de administracao
146   - * Utiliza fetchAll() para obter os dados
147   - * O resultado e processado por converteTextoArray se for desejado
148   - * @param string sql
149   - * @param se for vazio retorna todos os registros, caso contrario, retorna apenas o primeiro
150   - * @param indica se deve ser feita a conversao de caracteres
151   - * @return Array
152   - */
153   - function execSQL($sql,$id="",$convTexto=true){
154   - $sql = str_ireplace(array("update","delete","insert","--","drop",";"),"",$sql);
155   - try {
156   - $q = $this->dbh->query($sql,PDO::FETCH_ASSOC);
157   - }
158   - catch (PDOException $e) {
159   - return "Error!: ";
160   - }
161   - if($q){
162   - $r = $q->fetchAll();
163   - if($convTexto == false){
164   - return $r;
165   - }
166   - if($r){
167   - if($id != ""){
168   - if(count($r) == 1){
169   - $r = $r[0];
170   - }
171   - else{
172   - $r = array();
173   - }
174   - }
175   - if($r != false && count($r) > 0){
176   - $r = $this->converteTextoArray($r);
177   - }
178   - return $r;
179   - }
180   - else{
181   - return array();
182   - }
183   - }
184   - else{
185   - return false;
186   - }
187   - }
188   - /**
189   - * Executa um SQL no banco de dados definido em uma conexao cadastrada no sistema de admnistracao
190   - * @param codigo da conexao
191   - * @param tring sql
192   - * @return resultado de execSQL
193   - */
194   - function execSQLDB($codigo_estat_conexao,$sql){
195   - $buscar = array("drop","update","insert","delete");
196   - $sql = str_ireplace($buscar,"",$sql);
197   - $c = $this->listaConexao($codigo_estat_conexao,true);
198   - $dbhold = $this->dbh;
199   - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
200   - $this->dbh = $dbh;
201   - $res = $this->execSQL($sql,"",false);
202   - $this->dbh = $dbhold;
203   - return $res;
204   - }
205   - /**
206   - * Monta o sql que permite acessar os dados de uma media de uma variavel
207   - * @param id da medida da variavel
208   - * @param inclui todas as colunas da tabela com os dados ou nao
209   - * @param coluna que sera usada para agrupar os dados
210   - * @param tipo de layer. Usado para escolher qual coluna com as geometrias sera incluida no sql
211   - * @param codigo do tipo de regiao. Se nao for definido, utiliza-se o default da variavel
212   - * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
213   - * @return array("sqlagrupamento"=>,"sql"=>,"sqlmapserver"=>,"filtro"=>,"colunas"=>,"alias"=>,"colunavalor"=>,"titulo"=>,"nomeregiao"=>)
214   - */
215   - function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor="",$tipolayer="polygon",$codigo_tipo_regiao = "",$suportaWMST = false,$filtro = "",$direto=false){
216   - //
217   - //o sql que faz acesso aos dados e marcado com /*SE*//*SE*/ na string que sera usada nos mapfiles
218   - //a parte que contem referencias a coluna com a geometria e marcada com /*SG*//*SG*/
219   - //
220   - //registros da medida da variavel
221   - $dados = $this->listaMedidaVariavel("",$id_medida_variavel);
222   -
223   - if(!empty($dados["filtro"])){
224   - if($filtro == ""){
225   - $filtro = $dados["filtro"];
226   - }
227   - else{
228   - $filtro = $filtro." AND (".$dados["filtro"].")";
229   - }
230   - }
231   -
232   - //parametros da medida da variavel
233   - $parametrosMedida = array();
234   - $pp = $this->listaParametro($id_medida_variavel,"",0);
235   - foreach($pp as $p){
236   - $parametrosMedida[] = $p["coluna"];
237   - }
238   -
239   - //titulo da medida de variavel
240   - $titulo = $dados["nomemedida"];
241   - //indica se os dados devem ser agregados a uma regiao de nivel superior
242   - $agregaregiao = false;
243   - //nome da coluna que contem os limites geograficos da regiao desejada pelo usuario
244   - $colunageo = "";
245   -
246   - //se a regiao definida para a medida da variavel for diferente da regiao indicada pelo usuario
247   - //significa que a regiao indicada pelo usuario e uma agragacao
248   - if($codigo_tipo_regiao != "" && $dados["codigo_tipo_regiao"] != $codigo_tipo_regiao){
249   - $agregaregiao = true;
250   - //guarda os dados da regiao que agrega a regiao original da medida variavel
251   - $dadosgeo = $this->listaTipoRegiao($codigo_tipo_regiao);
252   - }
253   - else{
254   - $dadosgeo = $this->listaTipoRegiao($dados["codigo_tipo_regiao"]);
255   - }
256   - if($tipolayer != "point"){
257   - $colunageo = $dadosgeo["colunageo"];
258   - $titulo .= " (pol) ";
259   - }
260   - else{
261   - $colunageo = $dadosgeo["colunacentroide"];
262   - $titulo .= " (pt) ";
263   - }
264   - $titulo .= $dadosgeo["nome_tipo_regiao"];
265   -
266   - $vis = $dadosgeo["colunasvisiveis"];
267   - if(!empty($vis) && $suportaWMST == false){
268   - $vis = $vis.",".$dadosgeo["identificador"];
269   - $vis = str_replace(" ",",",$vis);
270   - $vis = str_replace(",,",",",$vis);
271   - $vis = str_replace(";",",",$vis);
272   -
273   - $colunasSemGeo = explode(",",$vis);
274   - $colunasSemGeo = array_unique($colunasSemGeo);
275   -
276   - if($dadosgeo["apelidos"] != ""){
277   - $alias = "Valor,".$dadosgeo["apelidos"].",".$dadosgeo["identificador"];
278   - $alias = mb_convert_encoding($alias,"ISO-8859-1",mb_detect_encoding($alias));
279   - $alias = str_replace(";",",",$alias);
280   - $alias = str_replace(",,",",",$alias);
281   - $alias = explode(",",$alias);
282   - $alias = array_unique($alias);
283   - }
284   - else{
285   - $alias = $colunasSemGeo;
286   - }
287   - if(count($alias)-1 != count($colunasSemGeo)){
288   - $alias = array();
289   - }
290   - }
291   - else{
292   - //colunas da tabela geometria sem as colunas GEOMETRY
293   - $colunasSemGeo = $this->colunasTabela($dadosgeo["codigo_estat_conexao"], $dadosgeo["esquemadb"], $dadosgeo["tabela"],"geometry","!=");
294   - $alias = array();
295   - if($suportaWMST == true){
296   - $sqlWMST = $this->listaParametroTempo2CampoData($id_medida_variavel);
297   - $colunasSemGeo[] = "dimtempo";
298   - }
299   - }
300   - //verifica o tipo de calculo para agragacao de valores
301   - $tipoconta = "";
302   - if($dados["permitesoma"] == 1 && $direto == false){
303   - $tipoconta = "sum";
304   - if($agregaregiao == true){
305   - $titulo .= " - soma";
306   - }
307   - }
308   - elseif($dados["permitemedia"] == 1 && $direto == false){
309   - $tipoconta = "avg";
310   - if($agregaregiao == true){
311   - $titulo .= " - media";
312   - }
313   - }
314   -
315   - //obtem o SQL que faz o acesso aos dados da media da variavel
316   - if($dados["colunavalor"] == ""){
317   - $nomevalorcalculado = "'1'::numeric";
318   - }
319   - else{
320   - $nomevalorcalculado = $dados["colunavalor"];
321   - }
322   -
323   - $sqlDadosMedidaVariavel = "SELECT ".$dados["colunaidgeo"]." AS cod_regiao,$tipoconta(".$nomevalorcalculado.") AS valorcalculado FROM ".$dados["esquemadb"].".".$dados["tabela"];
324   - if($suportaWMST == true && $direto == false){
325   - $sqlDadosMedidaVariavel = "SELECT $sqlWMST as dimtempo,".$dados["colunaidgeo"]." AS cod_regiao,".$nomevalorcalculado." AS valorcalculado FROM ".$dados["esquemadb"].".".$dados["tabela"];
326   - }
327   - if(!empty ($filtro) && $direto == false){
328   - $sqlDadosMedidaVariavel .= " WHERE ".$filtro . " AND ".$nomevalorcalculado." IS NOT NULL ";
329   - }
330   - else{
331   - $sqlDadosMedidaVariavel .= " WHERE ".$nomevalorcalculado." IS NOT NULL ";
332   - }
333   - if($suportaWMST != true && $direto == false){
334   - $sqlDadosMedidaVariavel .= " /*FA*//*FA*/ /*FAT*//*FAT*/ GROUP BY cod_regiao ";
335   - }
336   - $sqlagrupamento = "";
337   - //sql que retorna a lista de ocorrencias agrupados de uma coluna especifica
338   - if(!empty($agruparpor) && $direto == false){
339   - $sqlagrupamento = " SELECT $agruparpor FROM ".$dados["esquemadb"].".".$dados["tabela"];
340   - if(!empty ($filtro)){
341   - $sqlagrupamento .= " WHERE ".$filtro;
342   - }
343   - $sqlagrupamento .= " /*FA*//*FA*/ /*FAT*//*FAT*/ GROUP BY ".$agruparpor." ORDER BY ".$agruparpor;
344   - }
345   - if($dados["colunavalor"] == ""){
346   - $nomeColunaValor = "contagem";
347   - }
348   - else{
349   - $nomeColunaValor = $dados["colunavalor"];
350   - }
351   - $sqlIntermediario = "SELECT (j.valorcalculado) AS ".$nomeColunaValor.", __COLUNASSEMGEO__".
352   - " FROM ".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." AS regiao ".
353   - " INNER JOIN ( __SQLDADOS__ ) ".
354   - " AS j ON j.cod_regiao::text = regiao.".$dadosgeo["identificador"]."::text";
355   - //inclui os sqls de regioes de niveis inferiores
356   - if($agregaregiao == true && $direto == false){
357   - $hierarquia = $this->regiaoFilhaAoPai($dados["codigo_tipo_regiao"],$codigo_tipo_regiao);
358   - $caminho = $hierarquia["caminho"];
359   - $dadosColunas = $hierarquia["colunas"];
360   - //var_dump($hierarquia);exit;
361   - if(count($caminho) > 0){
362   - $caminho = array_reverse($caminho);
363   - foreach($caminho as $idregiao){
364   - if($idregiao != $codigo_tipo_regiao){//a regiao pai ja esta no sql
365   - $tempDadosRegiao = $this->listaTipoRegiao($idregiao);
366   - //para contador forcado
367   - if($dados["colunavalor"] == ""){
368   - $nomevalorcalculado = "'1'::numeric";
369   - }
370   - else{
371   - $nomevalorcalculado = "j.valorcalculado";
372   - }
373   - $temp = "SELECT regiao.".$dadosColunas[$idregiao]["colunaligacao_regiaopai"]." AS cod_regiao,sum(".$nomevalorcalculado.") AS valorcalculado ".
374   - "FROM ".$tempDadosRegiao["esquemadb"].".".$tempDadosRegiao["tabela"]." AS regiao ".
375   - "INNER JOIN ".
376   - "( __SQLDADOS__ )".
377   - " AS j ON j.cod_regiao::text = regiao.".$tempDadosRegiao["identificador"]."::text GROUP BY regiao.".$dadosColunas[$idregiao]["colunaligacao_regiaopai"];
378   - $sqlIntermediario = str_replace("__SQLDADOS__",$temp,$sqlIntermediario);
379   - }
380   - }
381   - }
382   - }
383   - //sql final que retorna os dados
384   - //contem todas as colunas da tabela regiao, menos as que contem geometria
385   - $sql = str_replace("__SQLDADOS__",$sqlDadosMedidaVariavel,$sqlIntermediario);
386   - $sql = str_replace("__COLUNASSEMGEO__",implode(",",$colunasSemGeo),$sql);
387   -
388   - //sql para o mapserver
389   - $sqlgeo = str_replace("__SQLDADOS__",$sqlDadosMedidaVariavel,$sqlIntermediario);
390   - $colunasComGeo = $colunasSemGeo;
391   - //$colunasComGeo[] = "/*SG*/st_setsrid(".$colunageo.",".$dadosgeo["srid"].") as ".$colunageo." /*SG*/";
392   - $colunasComGeo[] = "/*SG*/".$colunageo." as ".$colunageo." /*SG*/";
393   - $sqlgeo = str_replace("__COLUNASSEMGEO__",implode(",",$colunasComGeo),$sqlgeo);
394   - $sqlgeo = $colunageo." from /*SE*/(".$sqlgeo." /*FR*//*FR*/ )/*SE*/ as foo using unique ".$dadosgeo["identificador"]." using srid=".$dadosgeo["srid"];
395   -
396   - //o SQL com os dados contem um filtro ou nao?
397   - $contemfiltro = false;
398   - if(!empty($filtro) && $direto == false){
399   - $contemfiltro = true;
400   - $titulo .= " ".$filtro;
401   - }
402   - //adiciona a coluna com os valores no inicio do array()
403   - $colunasSemGeo = array_merge(array($dados["colunavalor"]),$colunasSemGeo);
404   - $buscar = array("drop","update","insert","create","alter","delete");
405   - $sql = str_ireplace($buscar,"",$sql);
406   - $sqlagrupamento = str_ireplace($buscar,"",$sqlagrupamento);
407   - $sqlgeo = str_ireplace($buscar,"",$sqlgeo);
408   - return array(
409   - "nomeregiao"=>$dadosgeo["colunanomeregiao"],
410   - "titulo"=>$titulo,
411   - "colunavalor"=>$dados["colunavalor"],
412   - "sqlagrupamento"=>$sqlagrupamento,
413   - "sql"=>$sql,
414   - "sqlmapserver"=>$sqlgeo,
415   - "filtro"=>$contemfiltro,
416   - "colunas"=>$colunasSemGeo,
417   - "alias"=>$alias,
418   - "srid"=>$dadosgeo["srid"]
419   - );
420   - }
421   - /**
422   - * Retorna os ids das regioes que permitem partir de uma regiao filha chegar a uma regiao pai
423   - * Usado para descobrir que regioes devem ser sequencialmente agregadas
424   - * @param partir da regiao
425   - * @param chegar na regiao
426   - * @return array lista de ids de regioes sequenciais do filho ate chegar ao pai indicado
427   - */
428   - function regiaoFilhaAoPai($codigo_tipo_regiao,$codigo_tipo_regiao_pai=""){
429   - $pais = $this->listaAgregaRegiao($codigo_tipo_regiao);
430   - $caminho = array($codigo_tipo_regiao);
431   - $colunas = array();
432   - if(count($pais) == 0){
433   - return $caminho;
434   - }
435   - foreach($pais as $pai){
436   - $caminho[] = $pai["codigo_tipo_regiao_pai"];
437   - $colunas[$pai["codigo_tipo_regiao"]] = $pai;
438   - if($pai["codigo_tipo_regiao_pai"] == $codigo_tipo_regiao_pai){
439   - return array("caminho"=>$caminho,"colunas"=>$colunas);
440   - }
441   - }
442   - return array("caminho"=>$caminho,"colunas"=>$colunas);
443   - }
444   - function hierarquiaPath($node){
445   - $query="select codigo_tipo_regiao_pai as parent from ".$this->esquemaadmin."i3geoestat_agregaregiao WHERE codigo_tipo_regiao = $node";
446   - $result=$this->execSQL($query,"",false);
447   - $row = $result[0];
448   - // save the path in this array
449   - $path = array();
450   - // only continue if this $node isn't the root node
451   - // (that's the node with no parent)
452   - if ($row['parent']!='') {
453   - // the last part of the path to $node, is the name
454   - // of the parent of $node
455   - $path[] = $row['parent'];
456   - // we should add the path to the parent of this node
457   - // to the path
458   - $path = array_merge($this->hierarquiaPath($row['parent']), $path);
459   - }
460   - // return the path
461   - sort($path);
462   - return $path;
463   - }
464   - /**
465   - * Cria um arquivo mapfile para uma medida de variavel
466   - * Inclui no arquivo o layer de acesso aos dados
467   - * O mapfile contem apenas o layer
468   - * O arquivo e armazenado em uma pasta temporaria
469   - * O sql e obtido com o metodo sqlMedidaVariavel
470   - * @param id da medida da variavel
471   - * @param filtro que sera concatenado ao sql padrao da medida
472   - * @param 0|1 indica se todas as colunas da tabela original dos dados sera incluida no sql
473   - * @param tipo de layer
474   - * @param titulo do layer
475   - * @param id da classificacao cadastrada,se for vazio usa o primeiro
476   - * @param coluna que sera usada como agrupamento no sql
477   - * @param codigo do tipo de regiao cadastrada
478   - * @param valor de opacidade do layer
479   - * @param o layer deve suportar WMS-T ou nao
480   - * @param faz o cache do mapfile
481   - * @return array("mapfile"=>,"layer"=>,"titulolayer"=>)
482   - */
483   - function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor="",$codigo_tipo_regiao="",$opacidade="",$suportaWMST=false,$cachemapfile=true){
484   - //para permitir a inclusao de filtros, o fim do sql e marcado com /*FW*//*FW*/
485   - //indicando onde deve comecar e terminar uma possivel clausula where
486   - //ou com /*FA*//*FA*/
487   - //para marcar que deve ser utilizado AND ao adicionar o filtro
488   - //utiliza-se da mesma forma /*FAT*//*FAT*/ e /*FWT*//*FWT*/ para os filtros de tempo
489   - //Layers adicionados aqui sao marcados com o metadata METAESTAT "SIM"
490   - //O codigo_tipo_regiao e marcado com o metadata METAESTAT_CODIGO_TIPO_REGIAO
491   - //O id da medida da variavel e marcado com o metadata METAESTAT_ID_MEDIDA_VARIAVEL
492   - //outros metadados tambem sao utilizados, veja em admin/php/editormapfile.php
493   - $arq = $this->dir_tmp."/".$this->nomecache.".map";
494   - if(!file_exists($arq)){
495   - $meta = $this->listaMedidaVariavel("",$id_medida_variavel);
496   - //evita agregar regioes qd nao e necessario
497   - if($meta["codigo_tipo_regiao"] == $codigo_tipo_regiao || empty($codigo_tipo_regiao) ){
498   - $agruparpor = "";
499   - }
500   - $dconexao = $this->listaConexao($meta["codigo_estat_conexao"],true);
501   - $conexao = "user=".$dconexao["usuario"]." password=".$dconexao["senha"]." dbname=".$dconexao["bancodedados"]." host=".$dconexao["host"]." port=".$dconexao["porta"]."";
502   - $sql = $this->sqlMedidaVariavel(
503   - $id_medida_variavel,
504   - $todasascolunas,
505   - $agruparpor,
506   - $tipolayer,
507   - $codigo_tipo_regiao,
508   - $suportaWMST,
509   - $filtro
510   - );
511   - if(empty($codigo_tipo_regiao)){
512   - $d = $this->listaMedidaVariavel("",$id_medida_variavel);
513   - $codigo_tipo_regiao = $d["codigo_tipo_regiao"];
514   - }
515   - //define o tipo correto de layer
516   - $dg = $this->listaDadosGeometriaRegiao($codigo_tipo_regiao);
517   - if(empty($tipolayer)){
518   - $tipolayer = "polygon";
519   - }
520   - if($dg["dimension"] == 0){
521   - $tipolayer = "point";
522   - }
523   - if($dg["dimension"] == 1){
524   - $tipolayer = "line";
525   - }
526   - $sqlf = $sql["sqlmapserver"];
527   -
528   - $classes = "";
529   - if(!empty($id_classificacao)){
530   - $classes = $this->listaClasseClassificacao($id_classificacao);
531   - }
532   - else{
533   - $classificacoes = $this->listaClassificacaoMedida($id_medida_variavel);
534   - $classes = $this->listaClasseClassificacao($classificacoes[0]["id_classificacao"]);
535   - }
536   - if(!empty($titulolayer)){
537   - $titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer));
538   - }
539   - else{
540   - $titulolayer = mb_convert_encoding($sql["titulo"],"ISO-8859-1",mb_detect_encoding($sql["titulo"]));
541   - }
542   - //necessario para evitar problemas com ITENSDESC
543   - $titulolayer = str_replace(","," ",$titulolayer);
544   - $titulolayer = str_replace("=",": ",$titulolayer);
545   - //pega os parametros caso seja um mapfile para WMS-time
546   - if($suportaWMST == true){
547   - $sqlMinMax = "select min(dimtempo) as min,max(dimtempo) as max from(".$sql["sql"].") as x";
548   - $minmaxdata = $this->execSQLDB($meta["codigo_estat_conexao"],$sqlMinMax );
549   - $fontemeta = $this->listaFonteinfoMedida($id_medida_variavel);
550   - if(count($fontemeta) > 0){
551   - $fontemeta = $fontemeta[0]["link"];
552   - }
553   - else{
554   - $fontemeta = "";
555   - }
556   - }
557   - $dados[] = "MAP";
558   - $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"';
559   - $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"';
560   - //inclui os simbolos que podem ser definidos como imagens
561   - foreach($classes as $classe){
562   - if(file_exists($classe["simbolo"])){
563   - $dados[] = "SYMBOL";
564   - $dados[] = ' NAME "'.$classe["simbolo"].'"';
565   - $dados[] = ' TYPE pixmap';
566   - $dados[] = ' IMAGE "'.$classe["simbolo"].'"';
567   - $dados[] = "END";
568   - }
569   - }
570   - $dados[] = "LAYER";
571   - $dados[] = ' NAME "'.$this->nomecache.'"';
572   - $dados[] = " TYPE $tipolayer";
573   - $dados[] = ' DATA "'.$sqlf.'"';
574   - $dados[] = ' CONNECTION "'.$conexao.'"';
575   - $dados[] = ' CONNECTIONTYPE POSTGIS';
576   - $dados[] = ' STATUS OFF';
577   - $dados[] = ' TEMPLATE "none.htm"';
578   - if($opacidade != ""){
579   - $dados[] = ' OPACITY '.$opacidade;
580   - }
581   - $dados[] = ' METADATA';
582   - $dados[] = ' TEMA "'.$titulolayer.'"';
583   - $dados[] = ' tme "{\"titulo\":\"'.$titulolayer.'\",\"colnome\":\"'.$sql["nomeregiao"].'\",\"colsdata\":[\"'.$sql["colunavalor"].'\"],\"lmax\":\"8000\",\"amax\":\"500000\",\"outlinecolor\":\"-1,-1,-1\",\"numvertices\":\"4\",\"auto\":\"nao\",\"exec\":\"nao\"}"';
584   -
585   - $dados[] = ' TIP "'.$sql["colunavalor"].','.$sql["nomeregiao"].'"';
586   - $dados[] = ' CLASSE "SIM"';
587   - $dados[] = ' permitedownload "SIM"';
588   - $dados[] = ' METAESTAT "SIM"';
589   - $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
590   - $dados[] = ' METAESTAT_ID_MEDIDA_VARIAVEL "'.$id_medida_variavel.'"';
591   - //marca se a tabela e editavel, verificando se esta no esquema padrao
592   - if($meta["esquemadb"] == "i3geo_metaestat"){
593   - $dados[] = ' EDITAVEL "SIM"';
594   - $dados[] = ' COLUNAIDUNICO "'.$meta["colunaidunico"].'"';
595   - $dados[] = ' TABELAEDITAVEL "'.$meta["tabela"].'"';
596   - $dados[] = ' ESQUEMATABELAEDITAVEL "'.$meta["esquemadb"].'"';
597   - }
598   - if(count($sql["alias"]) > 0){
599   - $dados[] = ' ITENS "'.implode(",",$sql["colunas"]).'"';
600   - $dados[] = ' ITENSDESC "'.implode(",",$sql["alias"]).'"';
601   - }
602   - if($suportaWMST == true){
603   - $dados[] = ' "wms_timeitem" "dimtempo"';
604   - $dados[] = ' "wms_timeextent" "'.$minmaxdata[0]["min"]."/".$minmaxdata[0]["max"].'"';
605   - $dados[] = ' "wms_timedefault" "'.$minmaxdata[0]["max"].'"';
606   - $dados[] = ' "ows_metadataurl_href" "'.$fontemeta.'"';
607   - $dados[] = ' "ows_metadataurl_type" "TC211" ';
608   - $dados[] = ' "ows_metadataurl_format" "text/html" ';
609   - }
610   - $dados[] = ' END';
611   - if($classes == ""){
612   - $dados[] = ' CLASS';
613   - $dados[] = ' NAME ""';
614   - $dados[] = ' STYLE';
615   - $dados[] = ' COLOR 200 0 0';
616   - if(strtolower($tipolayer) == "point"){
617   - $dados[] = ' SYMBOL "ponto"';
618   - $dados[] = ' SIZE 5';
619   - }
620   - $dados[] = ' END';
621   - $dados[] = ' END';
622   - }
623   - else{
624   - foreach($classes as $classe){
625   - //var_dump($classe);exit;
626   - $dados[] = ' CLASS';
627   - $dados[] = ' NAME "'.mb_convert_encoding($classe["titulo"],"ISO-8859-1",mb_detect_encoding($classe["titulo"])).'"';
628   - if($classe["expressao"] != ""){
629   - $expressao = str_replace('"',"'",$classe["expressao"]);
630   - $dados[] = " EXPRESSION ".$expressao;
631   - }
632   - $dados[] = ' STYLE';
633   - $dados[] = ' COLOR '.$classe["vermelho"].' '.$classe["verde"].' '.$classe["azul"];
634   - if(!empty($classe["tamanho"])){
635   - $dados[] = ' SIZE '.$classe["tamanho"];
636   - }
637   - elseif(strtolower($tipolayer) == "point"){
638   - $dados[] = ' SIZE 5';
639   - }
640   - if(!empty($classe["simbolo"])){
641   - $dados[] = ' SYMBOL '.$classe["simbolo"];
642   - }
643   - elseif(strtolower($tipolayer) == "point"){
644   - $dados[] = ' SYMBOL ponto';
645   - }
646   - if(!empty($classe["otamanho"])){
647   - $dados[] = ' OUTLINEWIDTH '.$classe["otamanho"];
648   - }
649   - if(!empty($classe["overmelho"]) || $classe["overmelho"] == "0"){
650   - $dados[] = ' OUTLINECOLOR '.$classe["overmelho"].' '.$classe["overde"].' '.$classe["oazul"];
651   - }
652   - $dados[] = ' END';
653   - $dados[] = ' END';
654   - }
655   - }
656   - $dados[] = "END";
657   - $dados[] = "END";
658   - $fp = fopen($arq,"w");
659   - foreach ($dados as $dado){
660   - fwrite($fp,$dado."\n");
661   - }
662   - }
663   - return array("mapfile"=>$arq,"layer"=>$this->nomecache,"titulolayer"=>$titulolayer);
664   - }
665   - /**
666   - * Cria um mapfile para visualizacao de regioes
667   - * Inclui no arquivo o layer de acesso aos dados
668   - * O mapfile contem apenas o layer
669   - * O arquivo e armazenado em uma pasta temporaria
670   - * Se o arquivo para a mesma regiao ja existir, tenta usa-lo ao inves de criar um novo
671   - * @param codigo da regiao
672   - * @param cor do outline do simbolo de desenho
673   - * @param largura do simbolo
674   - * @param sim|nao inclui ou nao os labels
675   - * @param boolean remove o arquivo em cache e cria um novo
676   - * @return array("mapfile"=>,"layer"=>,"titulolayer"=>,"codigo_tipo_regiao"=>)
677   - */
678   - function mapfileTipoRegiao($codigo_tipo_regiao,$outlinecolor="255,0,0",$width=1,$nomes="nao",$forcaArquivo=false){
679   - //para permitir a inclusao de filtros, o fim do sql e marcado com /*FW*//*FW*/
680   - //indicando onde deve comecar e terminar uma possivel clausula where
681   - //Layers adicionados aqui sao marcados com o metadata METAESTAT "SIM"
682   - //O codigo_tipo_regiao e marcado com o metadata METAESTAT_CODIGO_TIPO_REGIAO
683   - if($forcaArquivo == false){
684   - $arq = $this->dir_tmp."/".$this->nomecache.".map";
685   - }
686   - else{
687   - $arq = $this->dir_tmp."/".$this->nomecache.nomeRandomico(3).".map";
688   - }
689   - if(!file_exists($arq)){
690   - $tipolayer = "polygon";
691   - //define o tipo correto de layer
692   - $dg = $this->listaDadosGeometriaRegiao($codigo_tipo_regiao);
693   - if(empty($tipolayer)){
694   - $tipolayer = "polygon";
695   - }
696   - if($dg["dimension"] == 0){
697   - $tipolayer = "point";
698   - }
699   - if($dg["dimension"] == 1){
700   - $tipolayer = "line";
701   - }
702   - $meta = $this->listaTipoRegiao($codigo_tipo_regiao);
703   - $titulolayer = $meta["nome_tipo_regiao"];
704   - $titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer));
705   - $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true);
706   - $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"]."";
707   - $colunageo = $meta["colunageo"];
708   - $srid = $meta["srid"];
709   - //pega as colunas menos as do tipo geometry
710   - $colunastabela = $this->colunasTabela($meta["codigo_estat_conexao"],$meta["esquemadb"],$meta["tabela"],"geometry","!=");
711   - //define as colunas que serao mostradas no sql
712   - $vis = $meta["colunasvisiveis"];
713   - $colunaSerial = $this->listaTipoRegiaoSerial($codigo_tipo_regiao);
714   - if($vis != ""){
715   - $vis = str_replace(";",",",$vis);
716   - $vis = str_replace(",,",",",$vis);
717   - $vis = explode(",",$vis);
718   - $itens = $vis;//array
719   - $vis[] = $meta["identificador"];
720   - if(!empty($colunaSerial)){
721   - $vis[] = $colunaSerial;
722   - }
723   - $vis = array_unique($vis);
724   - $visiveis = array();
725   - //verifica se as colunas existem mesmo
726   - foreach($vis as $v){
727   - if(in_array($v,$colunastabela)){
728   - $visiveis[] = $v;
729   - }
730   - }
731   - $vis = implode(",",$visiveis);
732   - //apelidos
733   - $apelidos = $meta["apelidos"];
734   - if($apelidos == ""){
735   - $apelidos = "Nome";
736   - }
737   - $apelidos = str_replace(";",",",$apelidos);
738   - $apelidos = str_replace(",,",",",$apelidos);
739   - $apelidos = mb_convert_encoding($apelidos,"ISO-8859-1",mb_detect_encoding($apelidos));
740   - $apelidos = explode(",",$apelidos);
741   - if(!empty($colunaSerial)){
742   - $apelidos[] = $colunaSerial." (serial)";
743   - }
744   - $apelidos = array_unique($apelidos);
745   - }
746   - else{
747   - $itens = array();
748   - $apelidos = array();
749   - if(!empty($colunaSerial)){
750   - $colunastabela[] = $colunaSerial;
751   - $colunastabela = array_unique($colunastabela);
752   - }
753   - $vis = implode(",",$colunastabela);
754   - }
755   - $sqlf = $colunageo." from (select st_setsrid(".$colunageo.",".$srid.") as $colunageo,$vis from ".$meta["esquemadb"].".".$meta["tabela"]." /*FW*//*FW*/) as foo using unique ".$meta["identificador"]." using srid=".$srid;
756   - $sqlf = str_replace(",,",",",$sqlf);
757   - $outlinecolor = str_replace(","," ",$outlinecolor);
758   - $dados[] = "MAP";
759   - $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"';
760   - $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"';
761   - $dados[] = "LAYER";
762   - $dados[] = ' NAME "'.$this->nomecache.'"';
763   - $dados[] = " TYPE $tipolayer";
764   - $dados[] = ' DATA "'.$sqlf.'"';
765   - $dados[] = ' CONNECTION "'.$conexao.'"';
766   - $dados[] = ' CONNECTIONTYPE POSTGIS';
767   - $dados[] = ' TEMPLATE "none.htm"';
768   - $dados[] = ' STATUS OFF';
769   - $dados[] = ' METADATA';
770   - $dados[] = ' TEMA "'.$titulolayer.'"';
771   - $dados[] = ' CLASSE "SIM"';
772   - $dados[] = ' METAESTAT "SIM"';
773   - $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
774   - if(!empty($colunaSerial)){
775   - $dados[] = ' EDITAVEL "SIM"';
776   - $dados[] = ' COLUNAIDUNICO "'.$colunaSerial.'"';
777   - $dados[] = ' TABELAEDITAVEL "'.$meta["tabela"].'"';
778   - $dados[] = ' ESQUEMATABELAEDITAVEL "'.$meta["esquemadb"].'"';
779   - $dados[] = ' COLUNAGEOMETRIA "'.$colunageo.'"';
780   - }
781   - $dados[] = ' TIP "'.$meta["colunanomeregiao"].'"';
782   - if(count($itens) == count($apelidos)){
783   - $dados[] = ' ITENS "'.implode(",",$itens).'"';
784   - $dados[] = ' ITENSDESC "'.implode(",",$apelidos).'"';
785   - }
786   -
787   - $dados[] = ' END';
788   - $dados[] = ' CLASS';
789   - $dados[] = ' NAME ""';
790   - $dados[] = ' STYLE';
791   - $dados[] = ' OUTLINECOLOR '.$outlinecolor;
792   -
793   - $dados[] = ' WIDTH '.$width;
794   - if(strtolower($tipolayer) == "point"){
795   - $dados[] = ' SYMBOL "ponto"';
796   - $dados[] = ' SIZE 5';
797   - $dados[] = ' COLOR 0 0 0 ';
798   - }
799   - else{
800   - $dados[] = ' COLOR -1 -1 -1';
801   - }
802   - $dados[] = ' END';
803   - //$dados[] = ' STYLE';
804   - //$dados[] = ' OUTLINECOLOR -1 -1 -1';
805   - //$dados[] = ' COLOR 255 255 255';
806   - //$dados[] = ' OPACITY 20';
807   - //$dados[] = ' END';
808   - $dados[] = ' END';
809   - $dados[] = "END";
810   - //toponimia
811   - if($nomes == "sim"){
812   - $dados[] = "LAYER";
813   - $dados[] = ' NAME "'.$this->nomecache.'_anno"';
814   - $dados[] = " TYPE ANNOTATION";
815   - $dados[] = ' DATA "'.$sqlf.'"';
816   - $dados[] = ' CONNECTION "'.$conexao.'"';
817   - $dados[] = ' CONNECTIONTYPE POSTGIS';
818   - $dados[] = ' TEMPLATE "none.htm"';
819   - $dados[] = ' STATUS OFF';
820   - $dados[] = ' LABELITEM "'.$meta["colunanomeregiao"].'"';
821   - $dados[] = ' METADATA';
822   - $dados[] = ' TEMA "'.$titulolayer.' (nomes)"';
823   - $dados[] = ' CLASSE "SIM"';
824   - $dados[] = ' METAESTAT "SIM"';
825   - $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
826   - $dados[] = ' END';
827   - $dados[] = ' CLASS';
828   - $dados[] = ' NAME ""';
829   - $dados[] = ' LABEL';
830   - $dados[] = ' FONT "arial"';
831   - $dados[] = ' SIZE 10';
832   - $dados[] = ' COLOR 0 0 0';
833   - $dados[] = ' MINDISTANCE 0';
834   - $dados[] = ' MINFEATURESIZE 0';
835   - $dados[] = ' OFFSET 0 0';
836   - $dados[] = ' OUTLINECOLOR 255 255 255';
837   - $dados[] = ' PARTIALS FALSE';
838   - $dados[] = ' POSITION AUTO';
839   - $dados[] = ' SHADOWSIZE 1 1';
840   - $dados[] = ' TYPE TRUETYPE';
841   - $dados[] = ' END';
842   - $dados[] = ' END';
843   - $dados[] = "END";
844   - }
845   - $dados[] = "END";
846   - $fp = fopen($arq,"w");
847   - foreach ($dados as $dado){
848   - fwrite($fp,$dado."\n");
849   - }
850   - }
851   - return array("mapfile"=>$arq,"layer"=>$this->nomecache,"titulolayer"=>$titulolayer,"codigo_tipo_regiao"=>$codigo_tipo_regiao);
852   - }
853   - /**
854   - * Complementa um mapfile resumido inserindo seus layers em um mapfile completo, contendo todos os elementos necessarios para uso
855   - * Usado na geracao de WMS e outros servicos
856   - * @param mapfile resumido
857   - * @return nome do arquivo com o mapfile completo
858   - */
859   - function mapfileCompleto($mapfile){
860   - $f = $this->base;
861   - if($f == ""){
862   - include_once($this->locaplic."/classesphp/funcoes_gerais.php");
863   - $versao = versao();
864   - $versao = $versao["principal"];
865   - $f = "";
866   - if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){
867   - $f = $this->locaplic."/aplicmap/geral1windowsv".$versao.".map";
868   - }
869   - else{
870   - if($f == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){
871   - $f = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map";
872   - }
873   - if($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){
874   - $f = "/var/www/html/i3geo/aplicmap/geral1fedorav".$versao.".map";
875   - }
876   - if($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){
877   - $f = "/opt/www/html/i3geo/aplicmap/geral1v".$versao.".map";
878   - }
879   - if($f == "") {
880   - $f = $this->locaplic."/aplicmap/geral1v".$versao.".map";
881   - }
882   - }
883   - }
884   - $mapa = ms_newMapObj($f);
885   - $n = $mapa->numlayers;
886   - for($i=0;$i<$n;$i++){
887   - $l = $mapa->getlayer($i);
888   - $l->set("status",MS_DELETE);
889   - }
890   - $mapatemp = ms_newMapObj($mapfile);
891   - $l = $mapatemp->getlayer(0);
892   -
893   - $l->set("status",MS_DEFAULT);
894   - $novonome = str_replace(".map","completo.map",$mapfile);
895   - //necessario para o kml
896   - $mapa->setmetadata("ows_enable_request","*");
897   - $listaepsg = "EPSG:4618 EPSG:4291 EPSG:4326 EPSG:22521 EPSG:22522 EPSG:22523 EPSG:22524 EPSG:22525 EPSG:29101 EPSG:29119 EPSG:29120 EPSG:29121 EPSG:29122 EPSG:29177 EPSG:29178 EPSG:29179 EPSG:29180 EPSG:29181 EPSG:29182 EPSG:29183 EPSG:29184 EPSG:29185";
898   - $l->setmetadata("ows_srs",$listaepsg);
899   - $temp = ms_newLayerObj($mapa,$l);
900   - $mapa->save($novonome);
901   - return $novonome;
902   - }
903   - /**
904   - * Obtem os dados de uma medida de variavel
905   - * @param id da medida
906   - * @param filtro que sera concatenado ao sql
907   - * @param 0|1 mostra ou nao todas as colunas da tabela com os dados
908   - * @param coluna de agrupamento
909   - * @param limite do numero de registros
910   - * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
911   - * @return execSQL
912   - */
913   - function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$agruparpor = "",$limite="",$direto=false){
914   - set_time_limit(0);
915   - $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,"polygon","",false,$filtro,$direto);
916   - $sqlf = $sql["sqlmapserver"];
917   - //remove marcadores geo
918   - $sqlf = explode("/*SE*/",$sqlf);
919   - $sqlf = explode("/*SG*/",$sqlf[1]);
920   - $sqlf = $sqlf[0]." ".$sqlf[2];
921   - if($limite != ""){
922   - $sqlf .= " limit ".$limite;
923   - }
924   - $sqlf = str_replace(", FROM"," FROM",$sqlf);
925   - $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
926   - //echo $sqlf;exit;
927   - if(!empty($metaVariavel["codigo_estat_conexao"])){
928   - $c = $this->listaConexao($metaVariavel["codigo_estat_conexao"],true);
929   - $dbhold = $this->dbh;
930   - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
931   - $this->dbh = $dbh;
932   - $res = $this->execSQL($sqlf);
933   - $this->dbh = $dbhold;
934   - return $res;
935   - }
936   - return false;
937   - }
938   - /**
939   - * Lista as ocorrencias de valores em uma coluna de uma medida de variavel
940   - * @param id da medida de variavel
941   - * @param coluna
942   - * @return execSQL
943   - */
944   - function valorUnicoMedidaVariavel($id_medida_variavel,$coluna){
945   - $sqlf = $this->sqlMedidaVariavel($id_medida_variavel,0,$coluna);
946   - $sqlf = $sqlf["sqlagrupamento"];
947   - $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
948   - if(!empty($metaVariavel["codigo_estat_conexao"])){
949   - $c = $this->listaConexao($metaVariavel["codigo_estat_conexao"],true);
950   - $dbhold = $this->dbh;
951   - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
952   - $this->dbh = $dbh;
953   - $res = $this->execSQL($sqlf);
954   - $this->dbh = $dbhold;
955   - return $res;
956   - }
957   - return false;
958   - }
959   - /**
960   - * Sumario estatistico de uma medida de variavel
961   - * @param id da medida
962   - * @param filtro a ser concatenado ao sql
963   - * @param coluna de agrupamento
964   - * @param limite numero maximo de registros que serao lidos do banco
965   - * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
966   - * @return array("colunavalor"=>,"soma"=>,"media"=>,"menor"=>,"maior"=>,"quantidade"=>,"histograma"=>,"grupos"=>,"unidademedida"=>,"quartis"=>)
967   - */
968   - function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor="",$limite="",$direto=false){
969   - if(!empty($agruparpor)){
970   - $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1,"",$limite,$direto);
971   - }
972   - else{
973   - $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,0,"",$limite,$direto);
974   - }
975   - if($dados){
976   - $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
977   - $un = $this->listaUnidadeMedida($metaVariavel["codigo_unidade_medida"]);
978   - $agrupamento = "";
979   - $colunavalor = $metaVariavel["colunavalor"];
980   - foreach($dados as $d){
981   - if($d[$colunavalor]){
982   - $valores[] = $d[$colunavalor];
983   - }
984   - }
985   - if(!empty($agruparpor)){
986   - $agrupamento = array();
987   - foreach($dados as $d){
988   - $g = $d[$agruparpor];
989   - //var_dump($d);exit;
990   - if(!empty($agrupamento[$g])){
991   - $agrupamento[$g] += $d[$colunavalor];
992   - }
993   - else{
994   - $agrupamento[$g] = $d[$colunavalor];
995   - }
996   - }
997   - natsort($agrupamento);
998   - }
999   - $soma = "";
1000   - $media = "";
1001   - $min = "";
1002   - $max = "";
1003   - $quantidade = count($valores);
1004   - $sturges = 1 + (3.322 * (log10($quantidade)));
1005   - $quartis = array();
1006   - if($un["permitesoma"] == "1"){
1007   - $soma = array_sum($valores);
1008   - }
1009   - if($un["permitemedia"] == "1"){
1010   - $media = $soma / $quantidade;
1011   - }
1012   - if($un["permitesoma"] == "1" || $un["permitemedia"] == "1"){
1013   - sort($valores);
1014   - //var_dump($valores);exit;
1015   - $min = $valores[0];
1016   - $max = $valores[$quantidade - 1];
1017   - include_once(dirname(__FILE__)."/../../classesphp/classe_estatistica.php");
1018   - $calc = new estatistica();
1019   - $calc->calcula($valores);
1020   - $v = $calc->resultado;
1021   - //expressao para o mapfile
1022   - $expressao[] = "([".$colunavalor."]<=".($v["quartil1"]).")";
1023   - $expressao[] = "(([".$colunavalor."]>".($v["quartil1"]).")and([".$colunavalor."]<=".($v["quartil2"])."))";
1024   - if($v["quartil3"] != 0){
1025   - $expressao[] = "(([".$colunavalor."]>".($v["quartil2"]).")and([".$colunavalor."]<=".($v["quartil3"])."))";
1026   - $expressao[] = "([".$colunavalor."]>".($v["quartil3"]).")";
1027   - }
1028   - $nomes[] = "<= ".($v["quartil1"]);
1029   - $nomes[] = "> ".($v["quartil1"])." e <= ".($v["quartil2"]);
1030   - if($v["quartil3"] != 0){
1031   - $nomes[] = "> ".($v["quartil2"])." e <= ".($v["quartil3"]);
1032   - $nomes[] = "> ".($v["quartil3"]);
1033   - }
1034   - $quartis = array(
1035   - "cortes"=>array(
1036   - "q1"=>$v['quartil1'],
1037   - "q2"=>$v['quartil2'],
1038   - "q3"=>$v['quartil3']
1039   - ),
1040   - "expressoes"=>$expressao,
1041   - "nomes"=>$nomes
1042   - );
1043   - }
1044   - $histograma = array_count_values($valores);
1045   - //echo "<pre>".var_dump($quartis);exit;
1046   - return array(
1047   - "colunavalor"=>$colunavalor,
1048   - "soma"=>$soma,
1049   - "media"=>$media,
1050   - "menor"=>$min,
1051   - "maior"=>$max,
1052   - "quantidade"=>$quantidade,
1053   - "histograma"=>$histograma,
1054   - "grupos"=>$agrupamento,
1055   - "unidademedida"=>$un,
1056   - "quartis"=>$quartis,
1057   - "sturges"=>$sturges
1058   - );
1059   - }
1060   - return false;
1061   - }
1062   -
1063   -
1064   - /**
1065   - * Lista os dados de um ou de todos os mapas cadastrados
1066   - * @param id do mapa
1067   - */
1068   - function listaMapas($id_mapa=""){
1069   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_mapa ";
1070   - if($id_mapa != ""){
1071   - $sql .= "WHERE id_mapa = $id_mapa ";
1072   - }
1073   - $sql .= "ORDER BY titulo";
1074   - return $this->execSQL($sql,$id_mapa);
1075   - }
1076   - /**
1077   - * Lista os dados de um ou de todos os mapas grupos de um mapa
1078   - * @param id do mapa
1079   - * @param id do grupo
1080   - */
1081   - function listaGruposMapa($id_mapa,$id_mapa_grupo){
1082   - if(!empty($id_mapa)){
1083   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_mapa_grupo WHERE id_mapa = $id_mapa";
1084   - }
1085   - if(!empty($id_mapa_grupo)){
1086   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_mapa_grupo WHERE id_mapa_grupo = $id_mapa_grupo";
1087   - }
1088   - $sql .= " ORDER BY titulo";
1089   - return $this->execSQL($sql,$id_mapa_grupo);
1090   - }
1091   - /**
1092   - * Lista os dados de um ou de todos os temas de um grupo de um mapa
1093   - * @param id do mapa
1094   - * @param id do grupo
1095   - * @param id do tema
1096   - */
1097   - function listaTemasMapa($id_mapa_grupo,$id_mapa_tema){
1098   - if(!empty($id_mapa_grupo)){
1099   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_mapa_tema WHERE id_mapa_grupo = $id_mapa_grupo";
1100   - }
1101   - if(!empty($id_mapa_tema)){
1102   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_mapa_tema WHERE id_mapa_tema = $id_mapa_tema";
1103   - }
1104   - $sql .= " ORDER BY titulo";
1105   - return $this->execSQL($sql,$id_mapa_tema);
1106   - }
1107   - /**
1108   - * Lista os dados de uma ou todas as unidades de medida cadastradas
1109   - * @param codigo da unidade
1110   - */
1111   - function listaUnidadeMedida($codigo_unidade_medida=""){
1112   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_unidade_medida ";
1113   - if($codigo_unidade_medida != ""){
1114   - $sql .= "WHERE codigo_unidade_medida = $codigo_unidade_medida ";
1115   - }
1116   - $sql .= "ORDER BY nome";
1117   - return $this->execSQL($sql,$codigo_unidade_medida);
1118   - }
1119   - /**
1120   - * Lista os dados de uma ou todas as fontes cadastradas
1121   - * @param id da fonte
1122   - */
1123   - function listaFonteinfo($id_fonteinfo=""){
1124   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_fonteinfo ";
1125   - if($id_fonteinfo != ""){
1126   - $sql .= "WHERE id_fonteinfo = $id_fonteinfo ";
1127   - }
1128   - $sql .= "ORDER BY titulo";
1129   - return $this->execSQL($sql,$id_fonteinfo);
1130   - }
1131   - /**
1132   - * Lista as fontes vinculadas a uma medida de variavel
1133   - * @param id da medida de variavel
1134   - */
1135   - function listaFonteinfoMedida($id_medida_variavel){
1136   - $sql = "SELECT i3geoestat_fonteinfo.* ";
1137   - $sql .= "FROM ".$this->esquemaadmin."i3geoestat_fonteinfo ";
1138   - $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_fonteinfo_medida ";
1139   - $sql .= "ON i3geoestat_fonteinfo.id_fonteinfo = i3geoestat_fonteinfo_medida.id_fonteinfo ";
1140   - $sql .= "WHERE i3geoestat_fonteinfo_medida.id_medida_variavel = $id_medida_variavel ";
1141   - $sql .= "ORDER BY titulo";
1142   - //echo $sql;exit;
1143   - return $this->execSQL($sql,$id_fonteinfo);
1144   - }
1145   - /**
1146   - * Lista os dados de uma ou todas as variaveis cadastradas
1147   - * @param codigo da variavel
1148   - * @param mostra apenas as variaveis cujas tabelas ficam nesse esquema
1149   - */
1150   - function listaVariavel($codigo_variavel="",$filtro_esquema=""){
1151   - $sql = "select DISTINCT a.* from ".$this->esquemaadmin."i3geoestat_variavel as a ";
1152   - if($codigo_variavel != ""){
1153   - $sql .= "WHERE a.codigo_variavel = $codigo_variavel ";
1154   - }
1155   - if($filtro_esquema != ""){
1156   - $sql .= ", ".$this->esquemaadmin."i3geoestat_medida_variavel as b WHERE a.codigo_variavel = b.codigo_variavel and b.esquemadb = '$filtro_esquema' ";
1157   - }
1158   - $sql .= "ORDER BY a.nome";
1159   - //echo $sql;exit;
1160   - return $this->execSQL($sql,$codigo_variavel);
1161   - }
1162   - /**
1163   - * Lista os dados de uma ou todas as classificacoes de uma medida de variavel
1164   - * @param id da medida de variavel
1165   - * @param id da classificacao
1166   - */
1167   - function listaClassificacaoMedida($id_medida_variavel,$id_classificacao=""){
1168   - if(!empty($id_medida_variavel)){
1169   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classificacao WHERE id_medida_variavel = $id_medida_variavel";
1170   - }
1171   - if(!empty($id_classificacao)){
1172   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classificacao WHERE id_classificacao = $id_classificacao";
1173   - }
1174   - return $this->execSQL($sql,$id_classificacao);
1175   - }
1176   - /**
1177   - * Lista os dados de um ou todos os links de uma medida
1178   - * @param id da medida
1179   - * @param id do link
1180   - */
1181   - function listaLinkMedida($id_medida_variavel,$id_link=""){
1182   - if(!empty($id_medida_variavel)){
1183   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_medida_variavel_link WHERE id_medida_variavel = $id_medida_variavel";
1184   - }
1185   - if(!empty($id_link)){
1186   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_medida_variavel_link WHERE id_link = $id_link";
1187   - }
1188   - return $this->execSQL($sql,$id_link);
1189   - }
1190   - /**
1191   - * Lista os dados de uma ou todas as classes de uma classificacao
1192   - * @param id da classificacao
1193   - * @param id da classe
1194   - */
1195   - function listaClasseClassificacao($id_classificacao,$id_classe=""){
1196   - if(!empty($id_classificacao)){
1197   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classes WHERE id_classificacao = $id_classificacao";
1198   - }
1199   - if(!empty($id_classe)){
1200   - $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classes WHERE id_classe = $id_classe";
1201   - }
1202   - return $this->execSQL($sql,$id_classe);
1203   - }
1204   - /**
1205   - * Lista os dados de uma ou todas as medidas de variavel de uma variavel
1206   - * @param codigo da variavel
1207   - * @param id da medida de variavel
1208   - */
1209   - function listaMedidaVariavel($codigo_variavel,$id_medida_variavel=""){
1210   - $sql = "SELECT i3geoestat_medida_variavel.*,i3geoestat_variavel.nome as nome_variavel,i3geoestat_unidade_medida.permitemedia,i3geoestat_unidade_medida.permitesoma,i3geoestat_unidade_medida.nome as unidade_medida ";
1211   - $sql .= "FROM ".$this->esquemaadmin."i3geoestat_variavel ";
1212   - $sql .= "JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel ";
1213   - $sql .= "ON i3geoestat_variavel.codigo_variavel = i3geoestat_medida_variavel.codigo_variavel ";
1214   - $sql .= "LEFT JOIN ".$this->esquemaadmin."i3geoestat_unidade_medida ";
1215   - $sql .= "ON i3geoestat_unidade_medida.codigo_unidade_medida = i3geoestat_medida_variavel.codigo_unidade_medida ";
1216   - if($codigo_variavel != ""){
1217   - $sql .= "WHERE i3geoestat_variavel.codigo_variavel = $codigo_variavel ";
1218   - if($id_medida_variavel != ""){
1219   - $sql .= "AND i3geoestat_medida_variavel.id_medida_variavel = $id_medida_variavel ";
1220   - }
1221   - }
1222   - elseif($id_medida_variavel != "") {
1223   - $sql .= "WHERE i3geoestat_medida_variavel.id_medida_variavel = $id_medida_variavel ";
1224   - }
1225   - $sql .= "ORDER BY i3geoestat_medida_variavel.nomemedida";
1226   - $res = $this->execSQL($sql,$id_medida_variavel);
1227   - $res = str_replace('"',"'",$res);
1228   - return $res;
1229   - }
1230   - /**
1231   - * Lista as regioes vinculadas a uma medida de variavel
1232   - * @param id da medida de vriavel
1233   - */
1234   - function listaRegioesMedida($id_medida_variavel){
1235   - $variavel = $this->listaMedidaVariavel("",$id_medida_variavel);
1236   - $codigo_tipo_regiao = $variavel["codigo_tipo_regiao"];
1237   - $regioes[] = $this->listaTipoRegiao($codigo_tipo_regiao);
1238   - //var_dump($regioes);exit;
1239   - $agregacoes = $this->listaAgregaRegiao($codigo_tipo_regiao);
1240   - foreach($agregacoes as $a){
1241   - $regioes[] = $this->listaTipoRegiao($a["codigo_tipo_regiao_pai"]);
1242   - }
1243   - return $regioes;
1244   - }
1245   - /**
1246   - * Lista os dados de uma conexao ou de todas
1247   - * @param id da conexao
1248   - * @param boolean inclui na lista a senha ou nao
1249   - * @param boolean inclui as conexoes definidas em postgis_mapa (ms_configura.php)
1250   - */
1251   - function listaConexao($codigo_estat_conexao="",$senha=false,$incluiPostgisMapa=true){
1252   - if($senha == true){
1253   - $colunas = "codigo_estat_conexao, bancodedados, host, porta, usuario, senha";
1254   - }
1255   - else{
1256   - $colunas = "codigo_estat_conexao, bancodedados, host, porta, usuario";
1257   - }
1258   - $sql = "select $colunas from ".$this->esquemaadmin."i3geoestat_conexao ";
1259   - if($codigo_estat_conexao != ""){
1260   - $sql .= "WHERE codigo_estat_conexao = $codigo_estat_conexao ";
1261   - }
1262   - $sql .= "ORDER BY bancodedados,host,usuario";
1263   - $res = $this->execSQL($sql,$codigo_estat_conexao);
1264   - //se achou e a requisico e para listar uma conexao, retorna o que for encontrado
1265   - $cres = count($res);
1266   - if($cres > 0 && $codigo_estat_conexao != "" && !empty($cres[0]["dbname"])){
1267   - return $res;
1268   - }
1269   - //caso contrario, e deve retornar todas as conexoes, inclui a fonte
1270   - if($codigo_estat_conexao == ""){
1271   - for($i=0; $i<$cres;$i++){
1272   - $res[$i]["fonte"] = "metaestat";
1273   - }
1274   - }
1275   - //obtem as conexoes definidas em ms_configgura.php
1276   - if($incluiPostgisMapa == true){
1277   - if(!isset($postgis_mapa)){
1278   - require(dirname(__FILE__)."/../../ms_configura.php");
1279   - }
1280   - if(!empty($postgis_mapa)){
1281   - foreach(array_keys($postgis_mapa) as $key){
1282   - $lista = explode(" ",$postgis_mapa[$key]);
1283   - $con = array();
1284   - foreach($lista as $l){
1285   - $teste = explode("=",$l);
1286   - $con[trim($teste[0])] = trim($teste[1]);
1287   - }
1288   - $c = array(
1289   - "codigo_estat_conexao" => $key,
1290   - "bancodedados" => $con["dbname"],
1291   - "host" => $con["host"],
1292   - "porta" => $con["port"],
1293   - "usuario" => $con["user"],
1294   - "fonte" => "ms_configura"
1295   - );
1296   - if($senha == true){
1297   - $c["senha"] = $con["password"];
1298   - }
1299   - $res[] = $c;
1300   - if($codigo_estat_conexao != "" && $codigo_estat_conexao == $key){
1301   - return $c;
1302   - }
1303   - }
1304   - }
1305   - }
1306   - //echo "<pre>";
1307   - //var_dump($res);exit;
1308   - return $res;
1309   - }
1310   - function listaParametroTempo2CampoData($id_medida_variavel,$prefixoAlias = ""){
1311   - //lista os parametros temporais
1312   - $parametros = $this->listaParametro($id_medida_variavel,"","",true,true);
1313   - echo "<pre>";
1314   - //var_dump($parametros);exit;
1315   - //faz o sql para pegar os valores e definir a resolucao
1316   - //o tempo deve comecar sempre pelo ano
1317   - $data = array();
1318   - if($parametros[0]["tipo"] == 1){
1319   - //ano
1320   - $data[] = $prefixoAlias.$parametros[0]["coluna"];
1321   - $tipodata = "YYYY";
1322   - //mes
1323   - if(!empty($parametros[1])){
1324   - $data[] = "'-'".$prefixoAlias.$parametros[1]["coluna"];
1325   - $tipodata = "YYYYMM";
1326   - }
1327   - else{
1328   - $data[] = "'-01'";
1329   - }
1330   - //dia
1331   - if(!empty($parametros[2])){
1332   - $data[] = "'-'".$prefixoAlias.$parametros[2]["coluna"];
1333   - $tipodata = "YYYYMMDD";
1334   - }
1335   - else{
1336   - $data[] = "'-01'";
1337   - }
1338   - $data = implode("||",$data);
1339   - return "to_date($data,'$tipodata')";
1340   - }
1341   - }
1342   - /**
1343   - * Lista os dados de um ou de todos os parametros relacionados a uma medida de variavel
1344   - * @param id da medida de variavel
1345   - * @param id do parametro
1346   - * @param id do pai (se definido, lista apenas os filhos deste)
1347   - * @param bool indica se apenas parametros do tipo temporal serao retornados
1348   - */
1349   - function listaParametro($id_medida_variavel,$id_parametro_medida="",$id_pai="",$apenasTempo=false,$ordenaPeloPai=false){
1350   - $sql = "SELECT i3geoestat_parametro_medida.*,i3geoestat_medida_variavel.* ";
1351   - $sql .= "FROM ".$this->esquemaadmin."i3geoestat_parametro_medida ";
1352   - $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel ";
1353   - $sql .= "ON i3geoestat_parametro_medida.id_medida_variavel = i3geoestat_medida_variavel.id_medida_variavel ";
1354   - if($id_medida_variavel != ""){
1355   - $sql .= "WHERE i3geoestat_parametro_medida.id_medida_variavel = $id_medida_variavel ";
1356   - if($id_parametro_medida != ""){
1357   - $sql .= "AND i3geoestat_parametro_medida.id_parametro_medida = $id_parametro_medida ";
1358   - }
1359   - }
1360   - elseif ($id_parametro_medida != ""){
1361   - $sql .= "WHERE i3geoestat_parametro_medida.id_parametro_medida = $id_parametro_medida ";
1362   - }
1363   - if($id_pai != ""){
1364   - $sql .= " AND id_pai = $id_pai";
1365   - }
1366   - if($apenasTempo == true){
1367   - $tempo = " AND i3geoestat_parametro_medida.tipo > 0 AND i3geoestat_parametro_medida.tipo < 5 ";
1368   - $sql .= $tempo;
1369   - }
1370   - if($ordenaPeloPai == true){
1371   - $sql .= " ORDER BY id_pai";
1372   - }
1373   - //echo $sql;exit;
1374   - return $this->execSQL($sql,$id_parametro_medida);
1375   - }
1376   - /**
1377   - * Lista todos os parametros cadastrados
1378   - */
1379   - function listaTodosParametros(){
1380   - $sql = "SELECT i3geoestat_parametro_medida.*,i3geoestat_medida_variavel.* ";
1381   - $sql .= "FROM ".$this->esquemaadmin."i3geoestat_parametro_medida ";
1382   - $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel ";
1383   - $sql .= "ON i3geoestat_parametro_medida.id_medida_variavel = i3geoestat_medida_variavel.id_medida_variavel ";
1384   - $sql .= " ORDER BY nome";
1385   - return $this->execSQL($sql);
1386   - }
1387   - /**
1388   - * Lista os valores (unicos) que ocorrem em um parametro de uma medida de variavel
1389   - * @param id do parametro
1390   - * @return array com os valores
1391   - */
1392   - function listaValoresParametro($id_parametro_medida){
1393   - $parametro = $this->listaParametro("",$id_parametro_medida);
1394   - //$medida = $this->listaMedidaVariavel("",$parametro["id_medida_variavel"]);
1395   - $sm = $this->valorUnicoMedidaVariavel($parametro["id_medida_variavel"],$parametro["coluna"]);
1396   - $nsm = array();
1397   - foreach($sm as $s){
1398   - $nsm[] = $s[$parametro["coluna"]];
1399   - }
1400   - return $nsm;
1401   - }
1402   - /**
1403   - * Lista os dados de um ou todos os tipos de periodo cadastrados
1404   - * @param id
1405   - */
1406   - function listaTipoPeriodo($codigo_tipo_periodo=""){
1407   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_tipo_periodo ";
1408   - if($codigo_tipo_periodo != ""){
1409   - $sql .= "WHERE codigo_tipo_periodo = $codigo_tipo_periodo ";
1410   - }
1411   - $sql .= "ORDER BY nome";
1412   - return $this->execSQL($sql,$codigo_tipo_periodo);
1413   - }
1414   - /**
1415   - * Lista as propriedades da coluna com as geometrias de uma regiao geografica
1416   - * @param codigo do tipo de regiao
1417   - * @return array com os parametros, inclusive a dimensao (st_dimension)
1418   - */
1419   - function listaPropGeoRegiao($codigo_tipo_regiao){
1420   - //st_dimension returns 0 for POINT, 1 for LINESTRING, 2 for POLYGON
1421   - $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
1422   - $c = $this->listaConexao($regiao["codigo_estat_conexao"],true);
1423   - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
1424   - $c = $regiao["colunageo"];
1425   - $sql = "select st_dimension(".$regiao["colunageo"].") as st_dimension from ".$regiao["esquemadb"].".".$regiao["tabela"]." limit 1";
1426   - $q = $dbh->query($sql,PDO::FETCH_ASSOC);
1427   - $r = array();
1428   - if($q){
1429   - $r = $q->fetchAll();
1430   - $r = $r[0];
1431   - }
1432   - return $r;
1433   - }
1434   - /**
1435   - * Lista os dados de uma ou todas as regioes cadastradas
1436   - * @param codigo do tipo de regiao
1437   - */
1438   - function listaTipoRegiao($codigo_tipo_regiao=""){
1439   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_tipo_regiao ";
1440   - if($codigo_tipo_regiao != ""){
1441   - $sql .= "WHERE codigo_tipo_regiao = $codigo_tipo_regiao ";
1442   - }
1443   - $sql .= "ORDER BY nome_tipo_regiao";
1444   - return $this->execSQL($sql,$codigo_tipo_regiao);
1445   - }
1446   - /**
1447   - * Obtem de um tipo de regiao a coluna do tipo serial
1448   - * @param codigo do tipo de regiao
1449   - */
1450   - function listaTipoRegiaoSerial($codigo_tipo_regiao){
1451   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_tipo_regiao WHERE codigo_tipo_regiao = $codigo_tipo_regiao ";
1452   - $regiao = $this->execSQL($sql,$codigo_tipo_regiao);
1453   - $nome_esquema = $regiao["esquemadb"];
1454   - $nome_tabela = $regiao["tabela"];
1455   - $sql = "SELECT a.attname as coluna FROM pg_class s JOIN pg_depend d ON d.objid = s.oid JOIN pg_class t ON d.objid = s.oid AND d.refobjid = t.oid JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum) JOIN pg_namespace n ON n.oid = s.relnamespace WHERE s.relkind = 'S' AND n.nspname = '$nome_esquema' AND t.relname = '$nome_tabela'";
1456   - $colunas = $this->execSQLDB($regiao["codigo_estat_conexao"],$sql);
1457   - $colunas = $colunas[0];
1458   - return $colunas["coluna"];
1459   - }
1460   - /**
1461   - * Obtem de uma tabela a coluna do tipo serial
1462   - * @param codigo do tipo de regiao
1463   - */
1464   - function listaTabelaSerial($codigo_estat_conexao,$nome_esquema,$nome_tabela){
1465   - $sql = "SELECT a.attname as coluna FROM pg_class s JOIN pg_depend d ON d.objid = s.oid JOIN pg_class t ON d.objid = s.oid AND d.refobjid = t.oid JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum) JOIN pg_namespace n ON n.oid = s.relnamespace WHERE s.relkind = 'S' AND n.nspname = '$nome_esquema' AND t.relname = '$nome_tabela'";
1466   - $colunas = $this->execSQLDB($codigo_estat_conexao,$sql);
1467   - $colunas = $colunas[0];
1468   - return $colunas["coluna"];
1469   - }
1470   - /**
1471   - * Lista os dados de agregacao de uma regiao pai
1472   - * @param codigo da regiao
1473   - */
1474   - function listaHierarquiaRegioes($codigoregiaopai=""){
1475   - $sql = "select i3geoestat_agregaregiao.id_agregaregiao,i3geoestat_agregaregiao.colunaligacao_regiaopai,i3geoestat_tipo_regiao.codigo_tipo_regiao,i3geoestat_tipo_regiao.nome_tipo_regiao from ".$this->esquemaadmin."i3geoestat_tipo_regiao ";
1476   - $sql .= "LEFT JOIN ".$this->esquemaadmin."i3geoestat_agregaregiao ";
1477   - $sql .= "ON i3geoestat_tipo_regiao.codigo_tipo_regiao = i3geoestat_agregaregiao.codigo_tipo_regiao ";
1478   - if($codigoregiaopai != ""){
1479   - $sql .= " WHERE ".$this->esquemaadmin."i3geoestat_agregaregiao.codigo_tipo_regiao_pai = $codigoregiaopai";
1480   - }
1481   - else{
1482   - $sql .= "WHERE ".$this->esquemaadmin."i3geoestat_agregaregiao.codigo_tipo_regiao IS NULL";
1483   - }
1484   - return $this->execSQL($sql,"");
1485   - }
1486   - function listaHierarquia($codigoregiaopai=""){
1487   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao order by codigo_tipo_regiao";
1488   - return $this->execSQL($sql,"");
1489   - }
1490   - /**
1491   - * Lista os registros de um tipo de regiao
1492   - * Se for definido o pai, lista os valores da regiao que e filha
1493   - * Nesse caso e necessario definir o identificador da regiao pai para obter os registros na regiao filha
1494   - * @param codigo do tipo de regiao
1495   - * @param codigo do tipo de regiao pai
1496   - * @param identificador da regiao (registro) pai
1497   - */
1498   - function listaDadosRegiao($codigo_tipo_regiao,$codigo_tipo_regiaopai="",$valorregiaopai=""){
1499   - //pega a tabela, esquema e conexao para acessar os dados da regiao
1500   - $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
1501   - $c = $this->listaConexao($regiao["codigo_estat_conexao"],true);
1502   - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
1503   - $c = $regiao["colunageo"];
1504   - $bbox = "ST_XMin($c)||' '||ST_YMin($c)||' '||ST_XMax($c)||' '||ST_YMax($c) as ext ";
1505   - $sql = "select $bbox,".$regiao["colunanomeregiao"]." as nome_regiao,".$regiao["identificador"]." as identificador_regiao from ".$regiao["esquemadb"].".".$regiao["tabela"];
1506   - if($valorregiaopai != ""){
1507   - $r = $this->listaAgregaRegiaoFilho($codigo_tipo_regiao,$codigo_tipo_regiaopai);
1508   - $sql .= " WHERE ".$r["colunaligacao_regiaopai"]."::text = '$valorregiaopai'";
1509   - }
1510   - $sql .= " order by ".$regiao["colunanomeregiao"];
1511   -
1512   - $q = $dbh->query($sql,PDO::FETCH_ASSOC);
1513   - $r = array();
1514   - if($q){
1515   - $r = $q->fetchAll();
1516   - }
1517   - return $r;
1518   - }
1519   - /**
1520   - * Lista os registros de uma tabela que e uma regiao
1521   - * @param codigo do tipo de regiao
1522   - */
1523   - function listaDadosGeometriaRegiao($codigo_tipo_regiao){
1524   - //pega a tabela, esquema e conexao para acessar os dados da regiao
1525   - $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
1526   - $c = $this->listaConexao($regiao["codigo_estat_conexao"],true);
1527   - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
1528   - $c = $regiao["colunageo"];
1529   - $s = "ST_dimension($c) as dimension ";
1530   - $sql = "select $s,".$regiao["colunanomeregiao"]." as nome_regiao,".$regiao["identificador"]." as identificador_regiao from ".$regiao["esquemadb"].".".$regiao["tabela"];
1531   - $sql .= " limit 1";
1532   - $q = $dbh->query($sql,PDO::FETCH_ASSOC);
1533   - $r = array();
1534   - if($q){
1535   - $r = $q->fetchAll();
1536   - }
1537   - return $r[0];
1538   - }
1539   - /**
1540   - * Lista uma ou todas as agregacoes de regioes existentes para um tipo de regiao
1541   - * @param codigo do tipo de regiao
1542   - * @param id da agregacao
1543   - */
1544   - function listaAgregaRegiao($codigo_tipo_regiao="",$id_agregaregiao=""){
1545   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao ";
1546   - if($id_agregaregiao != ""){
1547   - $sql .= "WHERE id_agregaregiao = $id_agregaregiao ";
1548   - }
1549   - else{
1550   - if($codigo_tipo_regiao != ""){
1551   - $sql .= "WHERE codigo_tipo_regiao = $codigo_tipo_regiao";
1552   - }
1553   - }
1554   - $sql .= " ORDER BY colunaligacao_regiaopai";
1555   - //echo $sql;exit;
1556   - return $this->execSQL($sql,$id_agregaregiao);
1557   - }
1558   - /**
1559   - * Lista uma ou todas as agregacoes de regioes filhas de um tipo de regiao
1560   - * @param codigo do tipo de regiao
1561   - * @param codigo do tipo de regiao que e pai
1562   - */
1563   - function listaAgregaRegiaoFilho($codigo_tipo_regiao,$codigo_tipo_regiao_pai){
1564   - $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao ";
1565   - $sql .= "WHERE codigo_tipo_regiao_pai = $codigo_tipo_regiao_pai ";
1566   - if($codigo_tipo_regiao != ""){
1567   - $sql .= "AND codigo_tipo_regiao = $codigo_tipo_regiao";
1568   - }
1569   - return $this->execSQL($sql,$codigo_tipo_regiao_pai);
1570   - }
1571   - /**
1572   - * Lista os esquemas em um banco de dados
1573   - * @param codigo da conexao
1574   - * @return execSQLDB
1575   - */
1576   - function esquemasConexao($codigo_estat_conexao){
1577   - return $this->execSQLDB($codigo_estat_conexao,"SELECT oid,nspname as esquema FROM pg_namespace WHERE nspname NOT LIKE 'pg_%' AND nspname NOT LIKE '%_schema%' group by nspname,oid order by nspname");
1578   - }
1579   - /**
1580   - * Lista as tabelas de um esquema
1581   - * @param codigo da conexao
1582   - * @param nome do esquema
1583   - * @param sim|nao exclui da lista as tabelas que contem geometria
1584   - * @return execSQLDB
1585   - */
1586   - function tabelasEsquema($codigo_estat_conexao,$nome_esquema,$excluigeom=""){
1587   - $sql = "SELECT table_name as tabela FROM information_schema.tables where table_schema = '$nome_esquema' AND table_schema NOT LIKE 'i3geo%' AND table_schema NOT LIKE 'pg_%' AND table_schema NOT LIKE '%_schema%'";
1588   - if(strtolower($excluigeom) == "sim"){
1589   - $sql = "SELECT c.table_name as tabela FROM information_schema.tables as c left join (SELECT distinct a.table_name FROM information_schema.tables as a left join information_schema.columns as b on a.table_name = b.table_name where a.table_schema = '$nome_esquema' and udt_name = 'geometry' ) as d on c.table_name = d.table_name where c.table_schema = '$nome_esquema' AND c.table_schema NOT LIKE 'i3geo%' AND c.table_schema NOT LIKE 'pg_%' AND c.table_schema NOT LIKE '%_schema%' and d.table_name is null";
1590   - }
1591   - return $this->execSQLDB($codigo_estat_conexao,$sql);
1592   - }
1593   - /**
1594   - * Lista as colunas de uma tabela
1595   - * @param codigo da conexao
1596   - * @param nome do esquema
1597   - * @param nome da tabela
1598   - * @param tipo de coluna (opcional)
1599   - * @param tipo de tratamento do parametro tipo, pode ser =|!=
1600   - * @return execSQLDB
1601   - */
1602   - function colunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela,$tipo="",$tipotratamento="="){
1603   - $colunas = array();
1604   - $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name FROM information_schema.columns where table_schema = '$nome_esquema' and table_name = '$nome_tabela'");
1605   - if($tipo != ""){
1606   - $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name FROM information_schema.columns where table_schema = '$nome_esquema' and udt_name $tipotratamento '$tipo' and table_name = '$nome_tabela'");
1607   - }
1608   - foreach($res as $c){
1609   - $colunas[] = $c["coluna"];
1610   - }
1611   - return $colunas;
1612   - }
1613   - /**
1614   - * Lista o comentario de uma tabela
1615   - * @param codigo da conexao
1616   - * @param nome do esquema
1617   - * @param nome da tabela
1618   - * @return execSQLDB
1619   - */
1620   - function comentarioTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){
1621   - $colunas = array();
1622   - $sql = "SELECT pg_catalog.obj_description(c.oid, 'pg_class') AS comments FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace) WHERE n.nspname = '".$nome_esquema."' AND c.relname = '".$nome_tabela."'";
1623   - $res = $this->execSQLDB($codigo_estat_conexao,$sql);
1624   - if(count($res) > 0){
1625   - $res = $res[0];
1626   - $res = $res["comments"];
1627   - }
1628   - else{
1629   - $res = "";
1630   - }
1631   - if($res == null){
1632   - $res = "";
1633   - }
1634   - return $res;
1635   - }
1636   - /**
1637   - * Lista os metadados de uma coluna
1638   - * Os metadados sao obtidos do proprio PostgreSQL
1639   - * @param codigo da conexao
1640   - * @param nome do esquema
1641   - * @param nome da tabela
1642   - * @param nome da coluna (opcional)
1643   - * @return execSQLDB
1644   - */
1645   - function descreveColunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela,$nome_coluna=""){
1646   - if($nome_coluna == ""){
1647   - return $this->execSQLDB($codigo_estat_conexao,"SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a.atttypmod AS lengthvar,a.attnotnull AS notnull,p.nspname as esquema FROM pg_class c,pg_attribute a,pg_type t,pg_namespace p WHERE c.relname = '$nome_tabela' and p.nspname = '$nome_esquema' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relnamespace = p.oid ORDER BY a.attname");
1648   - }
1649   - else{
1650   - $res = $this->execSQLDB($codigo_estat_conexao,"SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a.atttypmod AS lengthvar,a.attnotnull AS notnull,p.nspname as esquema FROM pg_class c,pg_attribute a,pg_type t,pg_namespace p WHERE a.attname = '$nome_coluna' AND c.relname = '$nome_tabela' and p.nspname = '$nome_esquema' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relnamespace = p.oid ORDER BY a.attname");
1651   - return $res[0];
1652   - }
1653   - }
1654   - /**
1655   - * Lista os dados de uma tabela
1656   - * @param codigo da conexao
1657   - * @param nome do esquema
1658   - * @param nome da tabela
1659   - * @param sim|nao inclui o WKT da geometria de colunas geo
1660   - * @param (opcional) numero de registros que serao listados
1661   - * @return execSQLDB
1662   - */
1663   - function obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo="nao",$nreg=""){
1664   - $desccolunas = $this->descreveColunasTabela($codigo_estat_conexao, $nome_esquema, $nome_tabela);
1665   - $colunas = array();
1666   - $colsql = array();
1667   - foreach($desccolunas as $d){
1668   - if($d["type"] != "geometry" && $d["type"] != "geography"){
1669   - $colunas[] = $d["field"];
1670   - $colsql[] = $d["field"];
1671   - }
1672   - elseif($geo == "sim"){
1673   - $colunas[] = $d["field"];
1674   - $colsql[] = "ST_AsText(".$d["field"].") as ".$d["field"];
1675   - }
1676   - }
1677   - $sql = "SELECT ".implode(",",$colsql)." from ".$nome_esquema.".".$nome_tabela;
1678   - if($nreg != ""){
1679   - $sql = "SELECT ".implode(",",$colsql)." from ".$nome_esquema.".".$nome_tabela." limit $nreg";
1680   - }
1681   - $dados = $this->execSQLDB($codigo_estat_conexao,$sql );
1682   - $linhas = array();
1683   - foreach($dados as $d){
1684   - $l = array();
1685   - foreach($colunas as $c){
1686   - $l[] = $d[$c];
1687   - }
1688   - $linhas[] = $l;
1689   - }
1690   - return array("nomescolunas"=>$colunas,"colunas"=>$desccolunas,"linhas"=>$linhas);
1691   - }
1692   - /**
1693   - * Relatorio completo com a lista de variaveis e medidas
1694   - * @param codigo da variavel
1695   - * @param sim|nao inclui dados detalhados
1696   - * @return Array
1697   - */
1698   - function relatorioCompleto($codigo_variavel="",$dadosGerenciais="nao"){
1699   - $dados = array();
1700   - if($codigo_variavel != "" || !empty($codigo_variavel)){
1701   - $vs[] = $this->listaVariavel($codigo_variavel);
1702   - }
1703   - else{
1704   - $vs = $this->listaVariavel();
1705   - }
1706   - foreach($vs as $v){
1707   - $nivel1["id"] = $v["codigo_variavel"];
1708   - $nivel1["titulo"] = $v["nome"];
1709   - $nivel1["descricao"] = $v["descricao"];
1710   - $ms = $this->listaMedidaVariavel($v["codigo_variavel"]);
1711   - $nivel1["filhos"] = array();
1712   - foreach($ms as $m){
1713   - $nivel2["id"] = $m["id_medida_variavel"];
1714   - $nivel2["titulo"] = $m["nomemedida"];
1715   - $unidade = $this->listaUnidadeMedida($m["codigo_unidade_medida"]);
1716   - $unidade = "Unidade de medida: ".$unidade["nome"];
1717   - $periodo = $this->listaTipoPeriodo($m["codigo_tipo_periodo"]);
1718   - $periodo = "Per&iacute;odo de tempo: ".$periodo["nome"];
1719   - $regiao = $this->listaTipoRegiao($m["codigo_tipo_regiao"]);
1720   - $regiao = "Regi&atilde;o: ".$regiao["nome_tipo_regiao"];
1721   - $nivel2["descricao"] = $unidade.", ".$periodo.", ".$regiao;
1722   - $nivel2["fontes"] = $this->listaFonteinfoMedida($m["id_medida_variavel"]);
1723   - $nivel2["links"] = $this->listaLinkMedida($m["id_medida_variavel"]);
1724   - $nivel2["dadosgerenciais"] = "";
1725   - if($dadosGerenciais == "sim"){
1726   - $nivel2["dadosgerenciais"] = $m;
1727   - }
1728   - $nivel1["filhos"][] = $nivel2;
1729   - }
1730   - $dados[] = $nivel1;
1731   - }
1732   - return $dados;
1733   - }
1734   - /**
1735   - * Cria um raltorio formatado em HTML
1736   - * @param dados obtidos com relatorioCompleto
1737   - * @param sim|nao inclui os dados detalhados
1738   - * @return string
1739   - */
1740   - function formataRelatorioHtml($dados,$detalhes="sim"){
1741   - $html[] = "<div class='var_div_relatorio'>";
1742   - $var_cor = "var_cor1";
1743   - foreach($dados as $variavel){
1744   - $html[] = "<div class='".$var_cor."'>";
1745   - $html[] = "<h1 style=padding:3px; ><b>".$variavel["titulo"];
1746   - $html[] = "</b><br><span style='color:rgb(100,100,100)'>".$variavel["descricao"]."</span></h1>";
1747   - $filhos = $variavel["filhos"];
1748   - foreach($filhos as $f){
1749   - $html[] = "<h2 style='position:relative;left:10px;'>ID: <u>".$f["id"]."</u> - ".$f["titulo"]."</h2>";
1750   - $html[] = "<div style='position:relative;padding-left:20px;'>";
1751   - $html[] = "<p>".$f["descricao"]."</p>";
1752   - if($detalhes == "sim"){
1753   - $html[] = "<p><b>Fontes:</b></p>";
1754   - foreach($f["fontes"] as $fonte){
1755   - $html[] = "<p><a href='".$fonte["link"]."' >".$fonte["titulo"]."</a></p>";
1756   - }
1757   - $html[] = "<p><b>Links:</b></p>";
1758   - foreach($f["links"] as $link){
1759   - $html[] = "<p><a href='".$link["link"]."' >".$link["nome"]."</a></p>";
1760   - }
1761   - if($f["dadosgerenciais"] != ""){
1762   - $html[] = "<span style='color:gray'>";
1763   - $html[] = "esquemadb = ".$f["dadosgerenciais"][esquemadb].", ";
1764   - $html[] = "tabela = ".$f["dadosgerenciais"][tabela].", ";
1765   - $html[] = "colunavalor = ".$f["dadosgerenciais"][colunavalor].", ";
1766   - $html[] = "colunaidgeo = ".$f["dadosgerenciais"][colunaidgeo].", ";
1767   - $html[] = "filtro = ".$f["dadosgerenciais"][filtro].", ";
1768   - $html[] = "colunaidunico = ".$f["dadosgerenciais"][colunaidunico];
1769   - $html[] = "</span>";
1770   - }
1771   - }
1772   - $html[] = "</div>";
1773   - }
1774   - $html[] = "</div>";
1775   - if($var_cor == "var_cor1"){
1776   - $var_cor = "var_cor2";
1777   - }
1778   - else{
1779   - $var_cor = "var_cor1";
1780   - }
1781   - }
1782   - $html[] = "</div><br><br>";
1783   - return implode("",$html);
1784   - }
1785   - /**
1786   - * Cria um relatorio no formato XML
1787   - * @param dados obtidos com relatorioCompleto
1788   - * @return string
1789   - */
1790   - function formataXML($dados){
1791   - $chaves = array_keys($dados[0]);
1792   - if(count($chaves) == 0){
1793   - $chaves = false;
1794   - }
1795   - $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">" . PHP_EOL;
1796   - $xml .= '<result-set>' . PHP_EOL;
1797   - //tenta descobrir o tipo de coluna
1798   - //$xml .= '<!--java.lang.String,java.lang.Integer-->' . PHP_EOL;
1799   - $xmldados = "";
1800   - if($chaves){
1801   - foreach($dados as $d){
1802   - $xmldados .= "<row>" . PHP_EOL;
1803   - foreach($chaves as $c){
1804   - $xmldados .= "<".$c.">".$d[$c]."</".$c.">" . PHP_EOL;
1805   - }
1806   - $xmldados .= "</row>" . PHP_EOL;
1807   - }
1808   - $tipos = array();
1809   - $d = $dados[0];
1810   - foreach($chaves as $c){
1811   - if(is_numeric($d[$c])){
1812   - $tipos[] = "java.lang.Integer";
1813   - }
1814   - else{
1815   - $tipos[] = "java.lang.String";
1816   - }
1817   - }
1818   - $xml .= '<!--'.implode($tipos,",").'-->' . PHP_EOL;
1819   - }
1820   - else{
1821   - while (list($key, $val) = each($dados)) {
1822   - $xmldados .= "<row>" . PHP_EOL;
1823   - $xmldados .= "<nome>".$key."</nome>" . PHP_EOL;
1824   - $xmldados .= "<valor>".$val."</valor>" . PHP_EOL;
1825   - $xmldados .= "</row>" . PHP_EOL;
1826   - }
1827   - reset($dados);
1828   - $tipos = array();
1829   - while (list($key, $val) = each($dados)) {
1830   - if(is_numeric($val)){
1831   - $tipos[] = "java.lang.Integer";
1832   - }
1833   - else{
1834   - $tipos[] = "java.lang.String";
1835   - }
1836   - if(is_numeric($key)){
1837   - $tipos[] = "java.lang.Integer";
1838   - }
1839   - else{
1840   - $tipos[] = "java.lang.String";
1841   - }
1842   - break;
1843   - }
1844   - $xml .= '<!--'.implode($tipos,",").'-->' . PHP_EOL;
1845   - }
1846   - $xml .= $xmldados;
1847   - $xml .= '</result-set>' . PHP_EOL;
1848   - return $xml;
1849   - }
1850   - /**
1851   - * Verifica se em um array existe uma chave com determinado valor
1852   - * @param Array
1853   - * @param nome da chave
1854   - * @param valor a ser buscado
1855   - * @return boolean
1856   - */
1857   - function buscaNoArray($lista,$chave,$valor){
1858   - foreach($lista as $l){
1859   - if($l[$chave] == $valor){
1860   - return true;
1861   - }
1862   - }
1863   - return false;
1864   - }
1865   - /**
1866   - * Obtem o valor de um registro de uma tabela de regiao com base na coordenada de longitude e latitude
1867   - * @param codigo do tipo de regiao
1868   - * @param longitude
1869   - * @param latitude
1870   - * @return array
1871   - */
1872   - function xy2regiao($codigo_tipo_regiao,$x,$y){
1873   - //pega a tabela, esquema e conexao para acessar os dados da regiao
1874   - $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
1875   - $c = $this->listaConexao($regiao["codigo_estat_conexao"],true);
1876   - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
1877   - $sql = "select ".$regiao["identificador"]." as identificador_regiao,".$regiao["colunanomeregiao"]." as nomeregiao from i3geo_metaestat.".$regiao["tabela"]." WHERE ST_within(ST_GeomFromText('POINT($x $y)',".$regiao["srid"]."),".$regiao["colunageo"].")";
1878   - $q = $dbh->query($sql,PDO::FETCH_ASSOC);
1879   - $r = $q->fetchAll();
1880   - if(count($r) > 0){
1881   - return $r[0];
1882   - }
1883   - else{
1884   - return "";
1885   - }
1886   - }
1887   - /**
1888   - * Busca os dados de uma medida de variavel para uma regiao
1889   - * Identificador da regiao e o valor a ser encontrado na coluna de
1890   - * ligacao da tabela da medida da variavel com a tabela com as localidades (tipo de regiao)
1891   - * @param identificador da regiao
1892   - * @param id da medida da variavel
1893   - * @return multitype:unknown multitype: string
1894   - */
1895   - function listaAtributosMedidaVariavelRegiao ($identificador_regiao,$id_medida_variavel){
1896   - $medida = $this->listaMedidaVariavel("",$id_medida_variavel);
1897   - $c = $this->listaConexao($medida["codigo_estat_conexao"],true);
1898   - if($medida["colunavalor"] == ""){
1899   - return "";
1900   - }
1901   - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
1902   - $colunassql[] = $medida["colunavalor"].",".$medida["colunaidunico"];
1903   -
1904   - $alias[] = $medida["nomemedida"];
1905   - $colunas[] = $medida["colunavalor"];
1906   - $alias[] = "idunico";
1907   - $colunas[] = $medida["colunaidunico"];
1908   - $descricao[] = $medida["unidade_medida"];
1909   - $parametros = $this->listaParametro($id_medida_variavel);
1910   - foreach($parametros as $p){
1911   - $colunassql[] = $p["coluna"];
1912   - $alias[] = $p["nome"];
1913   - $descricao[] = $p["descricao"];
1914   - $colunas[] = $p["coluna"];
1915   - }
1916   -
1917   - $sql = "select ".implode(",",$colunassql)." from ".$medida["esquemadb"].".".$medida["tabela"]." WHERE ".$medida["colunaidgeo"]."::text = ".$identificador_regiao."::text ";
1918   - if($medida["filtro"] != ""){
1919   - $sql .= " and ".$medida["filtro"];
1920   - }
1921   - $q = $dbh->query($sql,PDO::FETCH_ASSOC);
1922   - $r = $q->fetchAll();
1923   - return array("dados"=>$r,"aliascolunas"=>$alias,"colunas"=>$colunas,"descricao"=>$descricao);
1924   - }
1925   - /**
1926   - * Converte um tipo de regiao em shapefile
1927   - * @param codigo do tipo de regiao
1928   - * @return nome do arquivo criado
1929   - */
1930   - function regiao2shp($codigo_tipo_regiao){
1931   - $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
1932   - $dados = $this->obtemDadosTabelaDB($regiao["codigo_estat_conexao"],$regiao["esquemadb"],$regiao["tabela"],"sim");
1933   - $tipol = $this->listaPropGeoRegiao($codigo_tipo_regiao);
1934   - include_once(dirname(__FILE__)."/../../classesphp/classe_shp.php");
1935   - $s = new SHP();
1936   - //st_dimension returns 0 for POINT, 1 for LINESTRING, 2 for POLYGON
1937   - //echo MS_SHP_POINT.", ".MS_SHP_ARC.", ".MS_SHP_POLYGON.", ".MS_SHP_MULTIPOINT;
1938   - //1, 3, 5, 8
1939   - $conv[0] = 1;
1940   - $conv[1] = 3;
1941   - $conv[2] = 5;
1942   - //cria as colunas
1943   - $cni = 0;
1944   - foreach($dados["colunas"] as $t){
1945   - $temp = strtoupper($t["field"]);
1946   - if(strlen($temp) > 10){
1947   - $temp = substr($temp,0,8).($cni++);
1948   - }
1949   - if($t["type"] == "varchar" || $t["type"] == "char" || $t["type"] == "character varying" || $t["type"] == "character" || $t["type"] == "text"){
1950   - $def[] = array($temp,"C","254");
1951   - }
1952   - else{
1953   - if($t["lengthvar"] < 0){
1954   - $t["lengthvar"] = 0;
1955   - }
1956   - $def[] = array($temp,"N", $t["length"],$t["lengthvar"]);
1957   - }
1958   - }
1959   - $nomeshp = $this->dir_tmp."/regiao$codigo_tipo_regiao"."_".$this->nomeRandomico();
1960   - $dbaseExiste = false;
1961   - if(function_exists("dbase_create")){
1962   - $dbaseExiste = true;
1963   - }
1964   - //para manipular dbf
1965   - if($dbaseExiste == false){
1966   - include_once (dirname(__FILE__)."/../pacotes/phpxbase/api_conversion.php");
1967   - $db = xbase_create($nomeshp.".dbf", $def);
1968   - }
1969   - else
1970   - {$db = dbase_create($nomeshp.".dbf", $def);}
1971   - $dbname = $nomeshp.".dbf";
1972   - $reg = array();
1973   - $novoshpf = ms_newShapefileObj($nomeshp.".shp", $conv[$tipol["st_dimension"]]);
1974   - $cols = $dados["colunas"];
1975   - $nc = count($dados["colunas"]);
1976   - foreach($dados["linhas"] as $l){
1977   - $reg = array();
1978   - for($i=0;$i<$nc;$i++){
1979   - if($cols[$i]["type"] != "geometry" && $cols[$i]["type"] != "geography"){
1980   - $reg[] = $l[$i];
1981   - }
1982   - else{
1983   - $reg[] = 0;
1984   - if($cols[$i]["field"] == $regiao["colunageo"]){
1985   - $shape = ms_shapeObjFromWkt($l[$i]);
1986   - }
1987   - }
1988   - }
1989   - $novoshpf->addShape($shape);
1990   - if($dbaseExiste == false){
1991   - xbase_add_record($db,$reg);
1992   - }
1993   - else{
1994   - dbase_add_record($db,$reg);
1995   - }
1996   - }
1997   - if($this->dbaseExiste == false){
1998   - xbase_close($db);
1999   - }
2000   - else{
2001   - dbase_close($db);
2002   - }
2003   - return $nomeshp;
2004   - }
2005   - /*
2006   - * Testa se os elementos de um array sao numericos
2007   - */
2008   - function testaNumerico($valores){
2009   - foreach ($valores as $valor) {
2010   - if(!empty($valor) && !is_numeric($valor)) {
2011   - echo "valor nao numerico";
2012   - exit;
2013   - }
2014   - }
2015   - }
2016   -}
2017   -?>
classesphp/classe_metaestatinfo.php 0 → 100755
... ... @@ -0,0 +1,2023 @@
  1 +<?php
  2 +/**
  3 + * Classe metaestatInfo
  4 + * O construtor da classe faz o include do programa conexao.php que por sua vez faz o include
  5 + * de i3geo/ms_configura.php. Com base nesses programas sao definidas algumas das variaveis globais
  6 +*/
  7 +class MetaestatInfo{
  8 + /**
  9 + * Nome do esquema no banco de dados utilizado para armazenar as tabelas
  10 + * do sistema de admnistracao. Obtido de ms_configura.php
  11 + */
  12 + protected $esquemaadmin;
  13 + /**
  14 + * Objeto PDO obtido com new PDO com direito de leitura no banco de dados de administracao
  15 + */
  16 + public $dbh;
  17 + /**
  18 + * Indica se e necessario converter para UTF strings obtidas do banco de administracao
  19 + */
  20 + public $convUTF;
  21 + /**
  22 + * Pasta temporaria utilizada pelo mapserver
  23 + */
  24 + public $dir_tmp;
  25 + /**
  26 + * Pasta onde e feito o cache de imagens do i3Geo
  27 + */
  28 + public $nomecache;
  29 + /**
  30 + * Grava ou nao o log de transacoes
  31 + */
  32 + public $logTransacoes;
  33 + /**
  34 + * Construtor
  35 + * Faz o include de conexao.php que por sua vez faz o include de i3geo/ms_configura.php
  36 + */
  37 + function __construct(){
  38 + include(dirname(__FILE__)."/../admin/php/conexao.php");
  39 + //vem do include
  40 + $this->dir_tmp = $dir_tmp;
  41 + $this->logTransacoes = $logTransacoes;
  42 + $this->locaplic = $locaplic;
  43 + $this->base = $base;
  44 + if(!isset($convUTF)){
  45 + $convUTF = true;
  46 + }
  47 + $this->convUTF = $convUTF;
  48 + $this->dbh = $dbh;
  49 + $this->esquemaadmin = "";
  50 + if(!empty($esquemaadmin)){
  51 + $this->esquemaadmin = str_replace(".","",$esquemaadmin).".";
  52 + }
  53 + $this->nomecache = $this->nomeCache();
  54 + }
  55 + function __destruct(){
  56 + $this->fechaConexao();
  57 + }
  58 + /**
  59 + * Cria um nome de arquivo concatenando $_request
  60 + * @return string
  61 + */
  62 + function nomeCache(){
  63 + return "AAAA".md5(implode("x",$_REQUEST));
  64 + }
  65 + /**
  66 + * Cria um nome aleatorio
  67 + * @param numero de caracteres
  68 + * @return string
  69 + */
  70 + function nomeRandomico($n=10){
  71 + $nomes = "";
  72 + $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ';
  73 + $max = 51;
  74 + for($i=0; $i < $n; ++$i)
  75 + {
  76 + $nomes .= $a{mt_rand(0, $max)};
  77 + }
  78 + return $nomes;
  79 + }
  80 + /**
  81 + * Fecha a conexao com o banco de dados de administracao
  82 + */
  83 + function fechaConexao(){
  84 + $this->dbh = null;
  85 + }
  86 + /**
  87 + * Aplica a conversao de caracteres em um array ou string conforme o padrao do banco de administracao
  88 + * Verifica se o parametro e um array ou um texto e executa converteTexto()
  89 + * @param string|array
  90 + * @return string|array
  91 + */
  92 + function converteTextoArray($texto){
  93 + try {
  94 + if(empty($texto) || strtoupper($texto) == "NULL"){
  95 + return "";
  96 + }
  97 + $chaves = array_keys($texto);
  98 + if($chaves[0] != "0"){
  99 + foreach($chaves as $chave){
  100 + $texto[$chave] = $this->converteTexto($texto[$chave]);
  101 + }
  102 + }
  103 + else{
  104 + $n = count($texto);
  105 + for($i=0;$i<$n;$i++){
  106 + $chaves = array_keys($texto[$i]);
  107 + foreach($chaves as $chave){
  108 + if(is_string($texto[$i][$chave])){
  109 + $t = $this->converteTexto($texto[$i][$chave]);
  110 + $texto[$i][$chave] = $t;
  111 + }
  112 + }
  113 + }
  114 + }
  115 + return $texto;
  116 + }
  117 + catch (Exception $e) {
  118 + return $texto;
  119 + }
  120 + }
  121 + /**
  122 + * Converte a codificacao de caracteres de uma string conforme o padrao do banco de admnistracao
  123 + * @param string
  124 + * @return string
  125 + */
  126 + function converteTexto($texto){
  127 + if($texto == "0"){
  128 + return "0";
  129 + }
  130 + if(empty($texto)){
  131 + return "";
  132 + }
  133 + if($this->convUTF == true){
  134 + $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"UTF-8");
  135 + }
  136 + else{
  137 + $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"ISO-8859-1");
  138 + }
  139 + return $texto;
  140 + }
  141 + /**
  142 + * Executa um SQL no banco de administracao
  143 + * Utiliza fetchAll() para obter os dados
  144 + * O resultado e processado por converteTextoArray se for desejado
  145 + * @param string sql
  146 + * @param se for vazio retorna todos os registros, caso contrario, retorna apenas o primeiro
  147 + * @param indica se deve ser feita a conversao de caracteres
  148 + * @return Array
  149 + */
  150 + function execSQL($sql,$id="",$convTexto=true){
  151 + $sql = str_ireplace(array("update","delete","insert","--","drop",";"),"",$sql);
  152 + try {
  153 + $q = $this->dbh->query($sql,PDO::FETCH_ASSOC);
  154 + }
  155 + catch (PDOException $e) {
  156 + return "Error!: ";
  157 + }
  158 + if($q){
  159 + $r = $q->fetchAll();
  160 + if($convTexto == false){
  161 + return $r;
  162 + }
  163 + if($r){
  164 + if($id != ""){
  165 + if(count($r) == 1){
  166 + $r = $r[0];
  167 + }
  168 + else{
  169 + $r = array();
  170 + }
  171 + }
  172 + if($r != false && count($r) > 0){
  173 + $r = $this->converteTextoArray($r);
  174 + }
  175 + return $r;
  176 + }
  177 + else{
  178 + return array();
  179 + }
  180 + }
  181 + else{
  182 + return false;
  183 + }
  184 + }
  185 + /**
  186 + * Executa um SQL no banco de dados definido em uma conexao cadastrada no sistema de admnistracao
  187 + * @param codigo da conexao
  188 + * @param tring sql
  189 + * @return resultado de execSQL
  190 + */
  191 + function execSQLDB($codigo_estat_conexao,$sql){
  192 + $buscar = array("drop","update","insert","delete");
  193 + $sql = str_ireplace($buscar,"",$sql);
  194 + $c = $this->listaConexao($codigo_estat_conexao,true);
  195 + $dbhold = $this->dbh;
  196 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  197 + $this->dbh = $dbh;
  198 + $res = $this->execSQL($sql,"",false);
  199 + $this->dbh = $dbhold;
  200 + return $res;
  201 + }
  202 + /**
  203 + * Monta o sql que permite acessar os dados de uma media de uma variavel
  204 + * @param id da medida da variavel
  205 + * @param inclui todas as colunas da tabela com os dados ou nao
  206 + * @param coluna que sera usada para agrupar os dados
  207 + * @param tipo de layer. Usado para escolher qual coluna com as geometrias sera incluida no sql
  208 + * @param codigo do tipo de regiao. Se nao for definido, utiliza-se o default da variavel
  209 + * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
  210 + * @return array("sqlagrupamento"=>,"sql"=>,"sqlmapserver"=>,"filtro"=>,"colunas"=>,"alias"=>,"colunavalor"=>,"titulo"=>,"nomeregiao"=>)
  211 + */
  212 + function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor="",$tipolayer="polygon",$codigo_tipo_regiao = "",$suportaWMST = false,$filtro = "",$direto=false){
  213 + //
  214 + //o sql que faz acesso aos dados e marcado com /*SE*//*SE*/ na string que sera usada nos mapfiles
  215 + //a parte que contem referencias a coluna com a geometria e marcada com /*SG*//*SG*/
  216 + //
  217 + //registros da medida da variavel
  218 + $dados = $this->listaMedidaVariavel("",$id_medida_variavel);
  219 +
  220 + if(!empty($dados["filtro"])){
  221 + if($filtro == ""){
  222 + $filtro = $dados["filtro"];
  223 + }
  224 + else{
  225 + $filtro = $filtro." AND (".$dados["filtro"].")";
  226 + }
  227 + }
  228 +
  229 + //parametros da medida da variavel
  230 + $parametrosMedida = array();
  231 + $pp = $this->listaParametro($id_medida_variavel,"",0);
  232 + foreach($pp as $p){
  233 + $parametrosMedida[] = $p["coluna"];
  234 + }
  235 +
  236 + //titulo da medida de variavel
  237 + $titulo = $dados["nomemedida"];
  238 + //indica se os dados devem ser agregados a uma regiao de nivel superior
  239 + $agregaregiao = false;
  240 + //nome da coluna que contem os limites geograficos da regiao desejada pelo usuario
  241 + $colunageo = "";
  242 +
  243 + //se a regiao definida para a medida da variavel for diferente da regiao indicada pelo usuario
  244 + //significa que a regiao indicada pelo usuario e uma agragacao
  245 + if($codigo_tipo_regiao != "" && $dados["codigo_tipo_regiao"] != $codigo_tipo_regiao){
  246 + $agregaregiao = true;
  247 + //guarda os dados da regiao que agrega a regiao original da medida variavel
  248 + $dadosgeo = $this->listaTipoRegiao($codigo_tipo_regiao);
  249 + }
  250 + else{
  251 + $dadosgeo = $this->listaTipoRegiao($dados["codigo_tipo_regiao"]);
  252 + }
  253 + if($tipolayer != "point"){
  254 + $colunageo = $dadosgeo["colunageo"];
  255 + $titulo .= " (pol) ";
  256 + }
  257 + else{
  258 + $colunageo = $dadosgeo["colunacentroide"];
  259 + $titulo .= " (pt) ";
  260 + }
  261 + $titulo .= $dadosgeo["nome_tipo_regiao"];
  262 +
  263 + $vis = $dadosgeo["colunasvisiveis"];
  264 + if(!empty($vis) && $suportaWMST == false){
  265 + $vis = $vis.",".$dadosgeo["identificador"];
  266 + $vis = str_replace(" ",",",$vis);
  267 + $vis = str_replace(",,",",",$vis);
  268 + $vis = str_replace(";",",",$vis);
  269 +
  270 + $colunasSemGeo = explode(",",$vis);
  271 + $colunasSemGeo = array_unique($colunasSemGeo);
  272 +
  273 + if($dadosgeo["apelidos"] != ""){
  274 + $alias = "Valor,".$dadosgeo["apelidos"].",".$dadosgeo["identificador"];
  275 + $alias = mb_convert_encoding($alias,"ISO-8859-1",mb_detect_encoding($alias));
  276 + $alias = str_replace(";",",",$alias);
  277 + $alias = str_replace(",,",",",$alias);
  278 + $alias = explode(",",$alias);
  279 + $alias = array_unique($alias);
  280 + }
  281 + else{
  282 + $alias = $colunasSemGeo;
  283 + }
  284 + if(count($alias)-1 != count($colunasSemGeo)){
  285 + $alias = array();
  286 + }
  287 + }
  288 + else{
  289 + //colunas da tabela geometria sem as colunas GEOMETRY
  290 + $colunasSemGeo = $this->colunasTabela($dadosgeo["codigo_estat_conexao"], $dadosgeo["esquemadb"], $dadosgeo["tabela"],"geometry","!=");
  291 + $alias = array();
  292 + if($suportaWMST == true){
  293 + $sqlWMST = $this->listaParametroTempo2CampoData($id_medida_variavel);
  294 + $colunasSemGeo[] = "dimtempo";
  295 + }
  296 + }
  297 + //verifica o tipo de calculo para agragacao de valores
  298 + $tipoconta = "";
  299 + if($dados["permitesoma"] == 1 && $direto == false){
  300 + $tipoconta = "sum";
  301 + if($agregaregiao == true){
  302 + $titulo .= " - soma";
  303 + }
  304 + }
  305 + elseif($dados["permitemedia"] == 1 && $direto == false){
  306 + $tipoconta = "avg";
  307 + if($agregaregiao == true){
  308 + $titulo .= " - media";
  309 + }
  310 + }
  311 +
  312 + //obtem o SQL que faz o acesso aos dados da media da variavel
  313 + if($dados["colunavalor"] == ""){
  314 + $nomevalorcalculado = "'1'::numeric";
  315 + }
  316 + else{
  317 + $nomevalorcalculado = $dados["colunavalor"];
  318 + }
  319 +
  320 + $sqlDadosMedidaVariavel = "SELECT ".$dados["colunaidgeo"]." AS cod_regiao,$tipoconta(".$nomevalorcalculado.") AS valorcalculado FROM ".$dados["esquemadb"].".".$dados["tabela"];
  321 + if($suportaWMST == true && $direto == false){
  322 + $sqlDadosMedidaVariavel = "SELECT $sqlWMST as dimtempo,".$dados["colunaidgeo"]." AS cod_regiao,".$nomevalorcalculado." AS valorcalculado FROM ".$dados["esquemadb"].".".$dados["tabela"];
  323 + }
  324 + if(!empty ($filtro) && $direto == false){
  325 + $sqlDadosMedidaVariavel .= " WHERE ".$filtro . " AND ".$nomevalorcalculado." IS NOT NULL ";
  326 + }
  327 + else{
  328 + $sqlDadosMedidaVariavel .= " WHERE ".$nomevalorcalculado." IS NOT NULL ";
  329 + }
  330 + if($suportaWMST != true && $direto == false){
  331 + $sqlDadosMedidaVariavel .= " /*FA*//*FA*/ /*FAT*//*FAT*/ GROUP BY cod_regiao ";
  332 + }
  333 + $sqlagrupamento = "";
  334 + //sql que retorna a lista de ocorrencias agrupados de uma coluna especifica
  335 + if(!empty($agruparpor) && $direto == false){
  336 + $sqlagrupamento = " SELECT $agruparpor FROM ".$dados["esquemadb"].".".$dados["tabela"];
  337 + if(!empty ($filtro)){
  338 + $sqlagrupamento .= " WHERE ".$filtro;
  339 + }
  340 + $sqlagrupamento .= " /*FA*//*FA*/ /*FAT*//*FAT*/ GROUP BY ".$agruparpor." ORDER BY ".$agruparpor;
  341 + }
  342 + if($dados["colunavalor"] == ""){
  343 + $nomeColunaValor = "contagem";
  344 + }
  345 + else{
  346 + $nomeColunaValor = $dados["colunavalor"];
  347 + }
  348 + $sqlIntermediario = "SELECT (j.valorcalculado) AS ".$nomeColunaValor.", __COLUNASSEMGEO__".
  349 + " FROM ".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." AS regiao ".
  350 + " INNER JOIN ( __SQLDADOS__ ) ".
  351 + " AS j ON j.cod_regiao::text = regiao.".$dadosgeo["identificador"]."::text";
  352 + //inclui os sqls de regioes de niveis inferiores
  353 + if($agregaregiao == true && $direto == false){
  354 + $hierarquia = $this->regiaoFilhaAoPai($dados["codigo_tipo_regiao"],$codigo_tipo_regiao);
  355 + $caminho = $hierarquia["caminho"];
  356 + $dadosColunas = $hierarquia["colunas"];
  357 + //var_dump($hierarquia);exit;
  358 + if(count($caminho) > 0){
  359 + $caminho = array_reverse($caminho);
  360 + foreach($caminho as $idregiao){
  361 + if($idregiao != $codigo_tipo_regiao){//a regiao pai ja esta no sql
  362 + $tempDadosRegiao = $this->listaTipoRegiao($idregiao);
  363 + //para contador forcado
  364 + if($dados["colunavalor"] == ""){
  365 + $nomevalorcalculado = "'1'::numeric";
  366 + }
  367 + else{
  368 + $nomevalorcalculado = "j.valorcalculado";
  369 + }
  370 + $temp = "SELECT regiao.".$dadosColunas[$idregiao]["colunaligacao_regiaopai"]." AS cod_regiao,sum(".$nomevalorcalculado.") AS valorcalculado ".
  371 + "FROM ".$tempDadosRegiao["esquemadb"].".".$tempDadosRegiao["tabela"]." AS regiao ".
  372 + "INNER JOIN ".
  373 + "( __SQLDADOS__ )".
  374 + " AS j ON j.cod_regiao::text = regiao.".$tempDadosRegiao["identificador"]."::text GROUP BY regiao.".$dadosColunas[$idregiao]["colunaligacao_regiaopai"];
  375 + $sqlIntermediario = str_replace("__SQLDADOS__",$temp,$sqlIntermediario);
  376 + }
  377 + }
  378 + }
  379 + }
  380 + //sql final que retorna os dados
  381 + //contem todas as colunas da tabela regiao, menos as que contem geometria
  382 + $sql = str_replace("__SQLDADOS__",$sqlDadosMedidaVariavel,$sqlIntermediario);
  383 + $sql = str_replace("__COLUNASSEMGEO__",implode(",",$colunasSemGeo),$sql);
  384 +
  385 + //sql para o mapserver
  386 + $sqlgeo = str_replace("__SQLDADOS__",$sqlDadosMedidaVariavel,$sqlIntermediario);
  387 + $colunasComGeo = $colunasSemGeo;
  388 + //$colunasComGeo[] = "/*SG*/st_setsrid(".$colunageo.",".$dadosgeo["srid"].") as ".$colunageo." /*SG*/";
  389 + $colunasComGeo[] = "/*SG*/".$colunageo." as ".$colunageo." /*SG*/";
  390 + $sqlgeo = str_replace("__COLUNASSEMGEO__",implode(",",$colunasComGeo),$sqlgeo);
  391 + $sqlgeo = $colunageo." from /*SE*/(".$sqlgeo." /*FR*//*FR*/ )/*SE*/ as foo using unique ".$dadosgeo["identificador"]." using srid=".$dadosgeo["srid"];
  392 +
  393 + //o SQL com os dados contem um filtro ou nao?
  394 + $contemfiltro = false;
  395 + if(!empty($filtro) && $direto == false){
  396 + $contemfiltro = true;
  397 + $titulo .= " ".$filtro;
  398 + }
  399 + //adiciona a coluna com os valores no inicio do array()
  400 + $colunasSemGeo = array_merge(array($dados["colunavalor"]),$colunasSemGeo);
  401 + $buscar = array("drop","update","insert","create","alter","delete");
  402 + $sql = str_ireplace($buscar,"",$sql);
  403 + $sqlagrupamento = str_ireplace($buscar,"",$sqlagrupamento);
  404 + $sqlgeo = str_ireplace($buscar,"",$sqlgeo);
  405 + return array(
  406 + "nomeregiao"=>$dadosgeo["colunanomeregiao"],
  407 + "titulo"=>$titulo,
  408 + "colunavalor"=>$dados["colunavalor"],
  409 + "sqlagrupamento"=>$sqlagrupamento,
  410 + "sql"=>$sql,
  411 + "sqlmapserver"=>$sqlgeo,
  412 + "filtro"=>$contemfiltro,
  413 + "colunas"=>$colunasSemGeo,
  414 + "alias"=>$alias,
  415 + "srid"=>$dadosgeo["srid"]
  416 + );
  417 + }
  418 + /**
  419 + * Retorna os ids das regioes que permitem partir de uma regiao filha chegar a uma regiao pai
  420 + * Usado para descobrir que regioes devem ser sequencialmente agregadas
  421 + * @param partir da regiao
  422 + * @param chegar na regiao
  423 + * @return array lista de ids de regioes sequenciais do filho ate chegar ao pai indicado
  424 + */
  425 + function regiaoFilhaAoPai($codigo_tipo_regiao,$codigo_tipo_regiao_pai=""){
  426 + $pais = $this->listaAgregaRegiao($codigo_tipo_regiao);
  427 + $caminho = array($codigo_tipo_regiao);
  428 + $colunas = array();
  429 + if(count($pais) == 0){
  430 + return $caminho;
  431 + }
  432 + foreach($pais as $pai){
  433 + $caminho[] = $pai["codigo_tipo_regiao_pai"];
  434 + $colunas[$pai["codigo_tipo_regiao"]] = $pai;
  435 + if($pai["codigo_tipo_regiao_pai"] == $codigo_tipo_regiao_pai){
  436 + return array("caminho"=>$caminho,"colunas"=>$colunas);
  437 + }
  438 + }
  439 + return array("caminho"=>$caminho,"colunas"=>$colunas);
  440 + }
  441 + function hierarquiaPath($node){
  442 + $query="select codigo_tipo_regiao_pai as parent from ".$this->esquemaadmin."i3geoestat_agregaregiao WHERE codigo_tipo_regiao = $node";
  443 + $result=$this->execSQL($query,"",false);
  444 + $row = $result[0];
  445 + // save the path in this array
  446 + $path = array();
  447 + // only continue if this $node isn't the root node
  448 + // (that's the node with no parent)
  449 + if ($row['parent']!='') {
  450 + // the last part of the path to $node, is the name
  451 + // of the parent of $node
  452 + $path[] = $row['parent'];
  453 + // we should add the path to the parent of this node
  454 + // to the path
  455 + $path = array_merge($this->hierarquiaPath($row['parent']), $path);
  456 + }
  457 + // return the path
  458 + sort($path);
  459 + return $path;
  460 + }
  461 + /**
  462 + * Cria um arquivo mapfile para uma medida de variavel
  463 + * Inclui no arquivo o layer de acesso aos dados
  464 + * O mapfile contem apenas o layer
  465 + * O arquivo e armazenado em uma pasta temporaria
  466 + * O sql e obtido com o metodo sqlMedidaVariavel
  467 + * @param id da medida da variavel
  468 + * @param filtro que sera concatenado ao sql padrao da medida
  469 + * @param 0|1 indica se todas as colunas da tabela original dos dados sera incluida no sql
  470 + * @param tipo de layer
  471 + * @param titulo do layer
  472 + * @param id da classificacao cadastrada,se for vazio usa o primeiro
  473 + * @param coluna que sera usada como agrupamento no sql
  474 + * @param codigo do tipo de regiao cadastrada
  475 + * @param valor de opacidade do layer
  476 + * @param o layer deve suportar WMS-T ou nao
  477 + * @param faz o cache do mapfile
  478 + * @return array("mapfile"=>,"layer"=>,"titulolayer"=>)
  479 + */
  480 + function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor="",$codigo_tipo_regiao="",$opacidade="",$suportaWMST=false,$cachemapfile=true){
  481 + //para permitir a inclusao de filtros, o fim do sql e marcado com /*FW*//*FW*/
  482 + //indicando onde deve comecar e terminar uma possivel clausula where
  483 + //ou com /*FA*//*FA*/
  484 + //para marcar que deve ser utilizado AND ao adicionar o filtro
  485 + //utiliza-se da mesma forma /*FAT*//*FAT*/ e /*FWT*//*FWT*/ para os filtros de tempo
  486 + //Layers adicionados aqui sao marcados com o metadata METAESTAT "SIM"
  487 + //O codigo_tipo_regiao e marcado com o metadata METAESTAT_CODIGO_TIPO_REGIAO
  488 + //O id da medida da variavel e marcado com o metadata METAESTAT_ID_MEDIDA_VARIAVEL
  489 + //outros metadados tambem sao utilizados, veja em admin/php/editormapfile.php
  490 + $arq = $this->dir_tmp."/".$this->nomecache.".map";
  491 + if(!file_exists($arq)){
  492 + $meta = $this->listaMedidaVariavel("",$id_medida_variavel);
  493 + //evita agregar regioes qd nao e necessario
  494 + if($meta["codigo_tipo_regiao"] == $codigo_tipo_regiao || empty($codigo_tipo_regiao) ){
  495 + $agruparpor = "";
  496 + }
  497 + $dconexao = $this->listaConexao($meta["codigo_estat_conexao"],true);
  498 + $conexao = "user=".$dconexao["usuario"]." password=".$dconexao["senha"]." dbname=".$dconexao["bancodedados"]." host=".$dconexao["host"]." port=".$dconexao["porta"]."";
  499 + $sql = $this->sqlMedidaVariavel(
  500 + $id_medida_variavel,
  501 + $todasascolunas,
  502 + $agruparpor,
  503 + $tipolayer,
  504 + $codigo_tipo_regiao,
  505 + $suportaWMST,
  506 + $filtro
  507 + );
  508 + if(empty($codigo_tipo_regiao)){
  509 + $d = $this->listaMedidaVariavel("",$id_medida_variavel);
  510 + $codigo_tipo_regiao = $d["codigo_tipo_regiao"];
  511 + }
  512 + //define o tipo correto de layer
  513 + $dg = $this->listaDadosGeometriaRegiao($codigo_tipo_regiao);
  514 + if(empty($tipolayer)){
  515 + $tipolayer = "polygon";
  516 + }
  517 + if($dg["dimension"] == 0){
  518 + $tipolayer = "point";
  519 + }
  520 + if($dg["dimension"] == 1){
  521 + $tipolayer = "line";
  522 + }
  523 + $sqlf = $sql["sqlmapserver"];
  524 +
  525 + $classes = "";
  526 + if(!empty($id_classificacao)){
  527 + $classes = $this->listaClasseClassificacao($id_classificacao);
  528 + }
  529 + else{
  530 + $classificacoes = $this->listaClassificacaoMedida($id_medida_variavel);
  531 + $classes = $this->listaClasseClassificacao($classificacoes[0]["id_classificacao"]);
  532 + }
  533 + if(!empty($titulolayer)){
  534 + $titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer));
  535 + }
  536 + else{
  537 + $titulolayer = mb_convert_encoding($sql["titulo"],"ISO-8859-1",mb_detect_encoding($sql["titulo"]));
  538 + }
  539 + //necessario para evitar problemas com ITENSDESC
  540 + $titulolayer = str_replace(","," ",$titulolayer);
  541 + $titulolayer = str_replace("=",": ",$titulolayer);
  542 + //pega os parametros caso seja um mapfile para WMS-time
  543 + if($suportaWMST == true){
  544 + $sqlMinMax = "select min(dimtempo) as min,max(dimtempo) as max from(".$sql["sql"].") as x";
  545 + $minmaxdata = $this->execSQLDB($meta["codigo_estat_conexao"],$sqlMinMax );
  546 + $fontemeta = $this->listaFonteinfoMedida($id_medida_variavel);
  547 + if(count($fontemeta) > 0){
  548 + $fontemeta = $fontemeta[0]["link"];
  549 + }
  550 + else{
  551 + $fontemeta = "";
  552 + }
  553 + }
  554 + $dados[] = "MAP";
  555 + $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"';
  556 + $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"';
  557 + //inclui os simbolos que podem ser definidos como imagens
  558 + foreach($classes as $classe){
  559 + if(file_exists($classe["simbolo"])){
  560 + $dados[] = "SYMBOL";
  561 + $dados[] = ' NAME "'.$classe["simbolo"].'"';
  562 + $dados[] = ' TYPE pixmap';
  563 + $dados[] = ' IMAGE "'.$classe["simbolo"].'"';
  564 + $dados[] = "END";
  565 + }
  566 + }
  567 + $dados[] = "LAYER";
  568 + $dados[] = ' NAME "'.$this->nomecache.'"';
  569 + $dados[] = " TYPE $tipolayer";
  570 + $dados[] = ' DATA "'.$sqlf.'"';
  571 + $dados[] = ' CONNECTION "'.$conexao.'"';
  572 + $dados[] = ' CONNECTIONTYPE POSTGIS';
  573 + $dados[] = ' STATUS OFF';
  574 + $dados[] = ' TEMPLATE "none.htm"';
  575 + if($opacidade != ""){
  576 + $dados[] = ' OPACITY '.$opacidade;
  577 + }
  578 + $dados[] = ' METADATA';
  579 + $dados[] = ' TEMA "'.$titulolayer.'"';
  580 + $dados[] = ' tme "{\"titulo\":\"'.$titulolayer.'\",\"colnome\":\"'.$sql["nomeregiao"].'\",\"colsdata\":[\"'.$sql["colunavalor"].'\"],\"lmax\":\"8000\",\"amax\":\"500000\",\"outlinecolor\":\"-1,-1,-1\",\"numvertices\":\"4\",\"auto\":\"nao\",\"exec\":\"nao\"}"';
  581 +
  582 + $dados[] = ' TIP "'.$sql["colunavalor"].','.$sql["nomeregiao"].'"';
  583 + $dados[] = ' CLASSE "SIM"';
  584 + $dados[] = ' permitedownload "SIM"';
  585 + $dados[] = ' METAESTAT "SIM"';
  586 + $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
  587 + $dados[] = ' METAESTAT_ID_MEDIDA_VARIAVEL "'.$id_medida_variavel.'"';
  588 + //marca se a tabela e editavel, verificando se esta no esquema padrao
  589 + if($meta["esquemadb"] == "i3geo_metaestat"){
  590 + $dados[] = ' EDITAVEL "SIM"';
  591 + $dados[] = ' COLUNAIDUNICO "'.$meta["colunaidunico"].'"';
  592 + $dados[] = ' TABELAEDITAVEL "'.$meta["tabela"].'"';
  593 + $dados[] = ' ESQUEMATABELAEDITAVEL "'.$meta["esquemadb"].'"';
  594 + }
  595 + if(count($sql["alias"]) > 0){
  596 + $dados[] = ' ITENS "'.implode(",",$sql["colunas"]).'"';
  597 + $dados[] = ' ITENSDESC "'.implode(",",$sql["alias"]).'"';
  598 + }
  599 + if($suportaWMST == true){
  600 + $dados[] = ' "wms_timeitem" "dimtempo"';
  601 + $dados[] = ' "wms_timeextent" "'.$minmaxdata[0]["min"]."/".$minmaxdata[0]["max"].'"';
  602 + $dados[] = ' "wms_timedefault" "'.$minmaxdata[0]["max"].'"';
  603 + $dados[] = ' "ows_metadataurl_href" "'.$fontemeta.'"';
  604 + $dados[] = ' "ows_metadataurl_type" "TC211" ';
  605 + $dados[] = ' "ows_metadataurl_format" "text/html" ';
  606 + }
  607 + $dados[] = ' END';
  608 + if($classes == ""){
  609 + $dados[] = ' CLASS';
  610 + $dados[] = ' NAME ""';
  611 + $dados[] = ' STYLE';
  612 + $dados[] = ' COLOR 200 0 0';
  613 + if(strtolower($tipolayer) == "point"){
  614 + $dados[] = ' SYMBOL "ponto"';
  615 + $dados[] = ' SIZE 5';
  616 + }
  617 + $dados[] = ' END';
  618 + $dados[] = ' END';
  619 + }
  620 + else{
  621 + foreach($classes as $classe){
  622 + //var_dump($classe);exit;
  623 + $dados[] = ' CLASS';
  624 + $dados[] = ' NAME "'.mb_convert_encoding($classe["titulo"],"ISO-8859-1",mb_detect_encoding($classe["titulo"])).'"';
  625 + if($classe["expressao"] != ""){
  626 + $expressao = str_replace('"',"'",$classe["expressao"]);
  627 + $dados[] = " EXPRESSION ".$expressao;
  628 + }
  629 + $dados[] = ' STYLE';
  630 + $dados[] = ' COLOR '.$classe["vermelho"].' '.$classe["verde"].' '.$classe["azul"];
  631 + if(!empty($classe["tamanho"])){
  632 + $dados[] = ' SIZE '.$classe["tamanho"];
  633 + }
  634 + elseif(strtolower($tipolayer) == "point"){
  635 + $dados[] = ' SIZE 5';
  636 + }
  637 + if(!empty($classe["simbolo"])){
  638 + $dados[] = ' SYMBOL '.$classe["simbolo"];
  639 + }
  640 + elseif(strtolower($tipolayer) == "point"){
  641 + $dados[] = ' SYMBOL ponto';
  642 + }
  643 + if(!empty($classe["otamanho"])){
  644 + $dados[] = ' OUTLINEWIDTH '.$classe["otamanho"];
  645 + }
  646 + if(!empty($classe["overmelho"]) || $classe["overmelho"] == "0"){
  647 + $dados[] = ' OUTLINECOLOR '.$classe["overmelho"].' '.$classe["overde"].' '.$classe["oazul"];
  648 + }
  649 + $dados[] = ' END';
  650 + $dados[] = ' END';
  651 + }
  652 + }
  653 + $dados[] = "END";
  654 + $dados[] = "END";
  655 + $fp = fopen($arq,"w");
  656 + foreach ($dados as $dado){
  657 + fwrite($fp,$dado."\n");
  658 + }
  659 + }
  660 + return array("mapfile"=>$arq,"layer"=>$this->nomecache,"titulolayer"=>$titulolayer);
  661 + }
  662 + /**
  663 + * Cria um mapfile para visualizacao de regioes
  664 + * Inclui no arquivo o layer de acesso aos dados
  665 + * O mapfile contem apenas o layer
  666 + * O arquivo e armazenado em uma pasta temporaria
  667 + * Se o arquivo para a mesma regiao ja existir, tenta usa-lo ao inves de criar um novo
  668 + * @param codigo da regiao
  669 + * @param cor do outline do simbolo de desenho
  670 + * @param largura do simbolo
  671 + * @param sim|nao inclui ou nao os labels
  672 + * @param boolean remove o arquivo em cache e cria um novo
  673 + * @return array("mapfile"=>,"layer"=>,"titulolayer"=>,"codigo_tipo_regiao"=>)
  674 + */
  675 + function mapfileTipoRegiao($codigo_tipo_regiao,$outlinecolor="255,0,0",$width=1,$nomes="nao",$forcaArquivo=false){
  676 + //para permitir a inclusao de filtros, o fim do sql e marcado com /*FW*//*FW*/
  677 + //indicando onde deve comecar e terminar uma possivel clausula where
  678 + //Layers adicionados aqui sao marcados com o metadata METAESTAT "SIM"
  679 + //O codigo_tipo_regiao e marcado com o metadata METAESTAT_CODIGO_TIPO_REGIAO
  680 + if($forcaArquivo == false){
  681 + $arq = $this->dir_tmp."/".$this->nomecache.".map";
  682 + }
  683 + else{
  684 + $arq = $this->dir_tmp."/".$this->nomecache . $this->nomeRandomico(3) . ".map";
  685 + }
  686 +
  687 + if(!file_exists($arq)){
  688 +
  689 + $tipolayer = "polygon";
  690 + //define o tipo correto de layer
  691 + $dg = $this->listaDadosGeometriaRegiao($codigo_tipo_regiao);
  692 +
  693 + if(empty($tipolayer)){
  694 + $tipolayer = "polygon";
  695 + }
  696 + if($dg["dimension"] == 0){
  697 + $tipolayer = "point";
  698 + }
  699 + if($dg["dimension"] == 1){
  700 + $tipolayer = "line";
  701 + }
  702 +
  703 + $meta = $this->listaTipoRegiao($codigo_tipo_regiao);
  704 + $titulolayer = $meta["nome_tipo_regiao"];
  705 + $titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer));
  706 + $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true);
  707 + $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"]."";
  708 + $colunageo = $meta["colunageo"];
  709 + $srid = $meta["srid"];
  710 + //pega as colunas menos as do tipo geometry
  711 + $colunastabela = $this->colunasTabela($meta["codigo_estat_conexao"],$meta["esquemadb"],$meta["tabela"],"geometry","!=");
  712 + //define as colunas que serao mostradas no sql
  713 + $vis = $meta["colunasvisiveis"];
  714 + $colunaSerial = $this->listaTipoRegiaoSerial($codigo_tipo_regiao);
  715 + if($vis != ""){
  716 + $vis = str_replace(";",",",$vis);
  717 + $vis = str_replace(",,",",",$vis);
  718 + $vis = explode(",",$vis);
  719 + $itens = $vis;//array
  720 + $vis[] = $meta["identificador"];
  721 + if(!empty($colunaSerial)){
  722 + $vis[] = $colunaSerial;
  723 + }
  724 + $vis = array_unique($vis);
  725 + $visiveis = array();
  726 + //verifica se as colunas existem mesmo
  727 + foreach($vis as $v){
  728 + if(in_array($v,$colunastabela)){
  729 + $visiveis[] = $v;
  730 + }
  731 + }
  732 + $vis = implode(",",$visiveis);
  733 + //apelidos
  734 + $apelidos = $meta["apelidos"];
  735 + if($apelidos == ""){
  736 + $apelidos = "Nome";
  737 + }
  738 + $apelidos = str_replace(";",",",$apelidos);
  739 + $apelidos = str_replace(",,",",",$apelidos);
  740 + $apelidos = mb_convert_encoding($apelidos,"ISO-8859-1",mb_detect_encoding($apelidos));
  741 + $apelidos = explode(",",$apelidos);
  742 + if(!empty($colunaSerial)){
  743 + $apelidos[] = $colunaSerial." (serial)";
  744 + }
  745 + $apelidos = array_unique($apelidos);
  746 + }
  747 + else{
  748 + $itens = array();
  749 + $apelidos = array();
  750 + if(!empty($colunaSerial)){
  751 + $colunastabela[] = $colunaSerial;
  752 + $colunastabela = array_unique($colunastabela);
  753 + }
  754 + $vis = implode(",",$colunastabela);
  755 + }
  756 + $sqlf = $colunageo." from (select st_setsrid(".$colunageo.",".$srid.") as $colunageo,$vis from ".$meta["esquemadb"].".".$meta["tabela"]." /*FW*//*FW*/) as foo using unique ".$meta["identificador"]." using srid=".$srid;
  757 + $sqlf = str_replace(",,",",",$sqlf);
  758 + $outlinecolor = str_replace(","," ",$outlinecolor);
  759 + $dados[] = "MAP";
  760 + $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"';
  761 + $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"';
  762 + $dados[] = "LAYER";
  763 + $dados[] = ' NAME "'.$this->nomecache.'"';
  764 + $dados[] = " TYPE $tipolayer";
  765 + $dados[] = ' DATA "'.$sqlf.'"';
  766 + $dados[] = ' CONNECTION "'.$conexao.'"';
  767 + $dados[] = ' CONNECTIONTYPE POSTGIS';
  768 + $dados[] = ' TEMPLATE "none.htm"';
  769 + $dados[] = ' STATUS OFF';
  770 + $dados[] = ' METADATA';
  771 + $dados[] = ' TEMA "'.$titulolayer.'"';
  772 + $dados[] = ' CLASSE "SIM"';
  773 + $dados[] = ' METAESTAT "SIM"';
  774 + $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
  775 + if(!empty($colunaSerial)){
  776 + $dados[] = ' EDITAVEL "SIM"';
  777 + $dados[] = ' COLUNAIDUNICO "'.$colunaSerial.'"';
  778 + $dados[] = ' TABELAEDITAVEL "'.$meta["tabela"].'"';
  779 + $dados[] = ' ESQUEMATABELAEDITAVEL "'.$meta["esquemadb"].'"';
  780 + $dados[] = ' COLUNAGEOMETRIA "'.$colunageo.'"';
  781 + }
  782 + $dados[] = ' TIP "'.$meta["colunanomeregiao"].'"';
  783 + if(count($itens) == count($apelidos)){
  784 + $dados[] = ' ITENS "'.implode(",",$itens).'"';
  785 + $dados[] = ' ITENSDESC "'.implode(",",$apelidos).'"';
  786 + }
  787 +
  788 + $dados[] = ' END';
  789 + $dados[] = ' CLASS';
  790 + $dados[] = ' NAME ""';
  791 + $dados[] = ' STYLE';
  792 + $dados[] = ' OUTLINECOLOR '.$outlinecolor;
  793 +
  794 + $dados[] = ' WIDTH '.$width;
  795 + if(strtolower($tipolayer) == "point"){
  796 + $dados[] = ' SYMBOL "ponto"';
  797 + $dados[] = ' SIZE 5';
  798 + $dados[] = ' COLOR 0 0 0 ';
  799 + }
  800 + else{
  801 + $dados[] = ' COLOR -1 -1 -1';
  802 + }
  803 + $dados[] = ' END';
  804 + //$dados[] = ' STYLE';
  805 + //$dados[] = ' OUTLINECOLOR -1 -1 -1';
  806 + //$dados[] = ' COLOR 255 255 255';
  807 + //$dados[] = ' OPACITY 20';
  808 + //$dados[] = ' END';
  809 + $dados[] = ' END';
  810 + $dados[] = "END";
  811 + //toponimia
  812 + if($nomes == "sim"){
  813 + $dados[] = "LAYER";
  814 + $dados[] = ' NAME "'.$this->nomecache.'_anno"';
  815 + $dados[] = " TYPE ANNOTATION";
  816 + $dados[] = ' DATA "'.$sqlf.'"';
  817 + $dados[] = ' CONNECTION "'.$conexao.'"';
  818 + $dados[] = ' CONNECTIONTYPE POSTGIS';
  819 + $dados[] = ' TEMPLATE "none.htm"';
  820 + $dados[] = ' STATUS OFF';
  821 + $dados[] = ' LABELITEM "'.$meta["colunanomeregiao"].'"';
  822 + $dados[] = ' METADATA';
  823 + $dados[] = ' TEMA "'.$titulolayer.' (nomes)"';
  824 + $dados[] = ' CLASSE "SIM"';
  825 + $dados[] = ' METAESTAT "SIM"';
  826 + $dados[] = ' METAESTAT_CODIGO_TIPO_REGIAO "'.$codigo_tipo_regiao.'"';
  827 + $dados[] = ' END';
  828 + $dados[] = ' CLASS';
  829 + $dados[] = ' NAME ""';
  830 + $dados[] = ' LABEL';
  831 + $dados[] = ' FONT "arial"';
  832 + $dados[] = ' SIZE 10';
  833 + $dados[] = ' COLOR 0 0 0';
  834 + $dados[] = ' MINDISTANCE 0';
  835 + $dados[] = ' MINFEATURESIZE 0';
  836 + $dados[] = ' OFFSET 0 0';
  837 + $dados[] = ' OUTLINECOLOR 255 255 255';
  838 + $dados[] = ' PARTIALS FALSE';
  839 + $dados[] = ' POSITION AUTO';
  840 + $dados[] = ' SHADOWSIZE 1 1';
  841 + $dados[] = ' TYPE TRUETYPE';
  842 + $dados[] = ' END';
  843 + $dados[] = ' END';
  844 + $dados[] = "END";
  845 + }
  846 + $dados[] = "END";
  847 + $fp = fopen($arq,"w");
  848 + foreach ($dados as $dado){
  849 + fwrite($fp,$dado."\n");
  850 + }
  851 + }
  852 + return array("mapfile"=>$arq,"layer"=>$this->nomecache,"titulolayer"=>$titulolayer,"codigo_tipo_regiao"=>$codigo_tipo_regiao);
  853 + }
  854 + /**
  855 + * Complementa um mapfile resumido inserindo seus layers em um mapfile completo, contendo todos os elementos necessarios para uso
  856 + * Usado na geracao de WMS e outros servicos
  857 + * @param mapfile resumido
  858 + * @return nome do arquivo com o mapfile completo
  859 + */
  860 + function mapfileCompleto($mapfile){
  861 + $f = $this->base;
  862 + if($f == ""){
  863 + include_once($this->locaplic."/classesphp/funcoes_gerais.php");
  864 + $versao = versao();
  865 + $versao = $versao["principal"];
  866 + $f = "";
  867 + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){
  868 + $f = $this->locaplic."/aplicmap/geral1windowsv".$versao.".map";
  869 + }
  870 + else{
  871 + if($f == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){
  872 + $f = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map";
  873 + }
  874 + if($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){
  875 + $f = "/var/www/html/i3geo/aplicmap/geral1fedorav".$versao.".map";
  876 + }
  877 + if($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){
  878 + $f = "/opt/www/html/i3geo/aplicmap/geral1v".$versao.".map";
  879 + }
  880 + if($f == "") {
  881 + $f = $this->locaplic."/aplicmap/geral1v".$versao.".map";
  882 + }
  883 + }
  884 + }
  885 + $mapa = ms_newMapObj($f);
  886 + $n = $mapa->numlayers;
  887 + for($i=0;$i<$n;$i++){
  888 + $l = $mapa->getlayer($i);
  889 + $l->set("status",MS_DELETE);
  890 + }
  891 + $mapatemp = ms_newMapObj($mapfile);
  892 + $l = $mapatemp->getlayer(0);
  893 +
  894 + $l->set("status",MS_DEFAULT);
  895 + $novonome = str_replace(".map","completo.map",$mapfile);
  896 + //necessario para o kml
  897 + $mapa->setmetadata("ows_enable_request","*");
  898 + $listaepsg = "EPSG:4618 EPSG:4291 EPSG:4326 EPSG:22521 EPSG:22522 EPSG:22523 EPSG:22524 EPSG:22525 EPSG:29101 EPSG:29119 EPSG:29120 EPSG:29121 EPSG:29122 EPSG:29177 EPSG:29178 EPSG:29179 EPSG:29180 EPSG:29181 EPSG:29182 EPSG:29183 EPSG:29184 EPSG:29185";
  899 + $l->setmetadata("ows_srs",$listaepsg);
  900 + $temp = ms_newLayerObj($mapa,$l);
  901 + $mapa->save($novonome);
  902 + return $novonome;
  903 + }
  904 + /**
  905 + * Obtem os dados de uma medida de variavel
  906 + * @param id da medida
  907 + * @param filtro que sera concatenado ao sql
  908 + * @param 0|1 mostra ou nao todas as colunas da tabela com os dados
  909 + * @param coluna de agrupamento
  910 + * @param limite do numero de registros
  911 + * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
  912 + * @return execSQL
  913 + */
  914 + function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$agruparpor = "",$limite="",$direto=false){
  915 + set_time_limit(0);
  916 + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,"polygon","",false,$filtro,$direto);
  917 + $sqlf = $sql["sqlmapserver"];
  918 + //remove marcadores geo
  919 + $sqlf = explode("/*SE*/",$sqlf);
  920 + $sqlf = explode("/*SG*/",$sqlf[1]);
  921 + $sqlf = $sqlf[0]." ".$sqlf[2];
  922 + if($limite != ""){
  923 + $sqlf .= " limit ".$limite;
  924 + }
  925 + $sqlf = str_replace(", FROM"," FROM",$sqlf);
  926 + $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
  927 + //echo $sqlf;exit;
  928 + if(!empty($metaVariavel["codigo_estat_conexao"])){
  929 + $c = $this->listaConexao($metaVariavel["codigo_estat_conexao"],true);
  930 + $dbhold = $this->dbh;
  931 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  932 + $this->dbh = $dbh;
  933 + $res = $this->execSQL($sqlf);
  934 + $this->dbh = $dbhold;
  935 + return $res;
  936 + }
  937 + return false;
  938 + }
  939 + /**
  940 + * Lista as ocorrencias de valores em uma coluna de uma medida de variavel
  941 + * @param id da medida de variavel
  942 + * @param coluna
  943 + * @return execSQL
  944 + */
  945 + function valorUnicoMedidaVariavel($id_medida_variavel,$coluna){
  946 + $sqlf = $this->sqlMedidaVariavel($id_medida_variavel,0,$coluna);
  947 + $sqlf = $sqlf["sqlagrupamento"];
  948 + $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
  949 + if(!empty($metaVariavel["codigo_estat_conexao"])){
  950 + $c = $this->listaConexao($metaVariavel["codigo_estat_conexao"],true);
  951 + $dbhold = $this->dbh;
  952 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  953 + $this->dbh = $dbh;
  954 + $res = $this->execSQL($sqlf);
  955 + $this->dbh = $dbhold;
  956 + return $res;
  957 + }
  958 + return false;
  959 + }
  960 + /**
  961 + * Sumario estatistico de uma medida de variavel
  962 + * @param id da medida
  963 + * @param filtro a ser concatenado ao sql
  964 + * @param coluna de agrupamento
  965 + * @param limite numero maximo de registros que serao lidos do banco
  966 + * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
  967 + * @return array("colunavalor"=>,"soma"=>,"media"=>,"menor"=>,"maior"=>,"quantidade"=>,"histograma"=>,"grupos"=>,"unidademedida"=>,"quartis"=>)
  968 + */
  969 + function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor="",$limite="",$direto=false){
  970 + if(!empty($agruparpor)){
  971 + $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1,"",$limite,$direto);
  972 + }
  973 + else{
  974 + $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,0,"",$limite,$direto);
  975 + }
  976 + if($dados){
  977 + $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
  978 + $un = $this->listaUnidadeMedida($metaVariavel["codigo_unidade_medida"]);
  979 + $agrupamento = "";
  980 + $colunavalor = $metaVariavel["colunavalor"];
  981 + foreach($dados as $d){
  982 + if($d[$colunavalor]){
  983 + $valores[] = $d[$colunavalor];
  984 + }
  985 + }
  986 + if(!empty($agruparpor)){
  987 + $agrupamento = array();
  988 + foreach($dados as $d){
  989 + $g = $d[$agruparpor];
  990 + //var_dump($d);exit;
  991 + if(!empty($agrupamento[$g])){
  992 + $agrupamento[$g] += $d[$colunavalor];
  993 + }
  994 + else{
  995 + $agrupamento[$g] = $d[$colunavalor];
  996 + }
  997 + }
  998 + natsort($agrupamento);
  999 + }
  1000 + $soma = "";
  1001 + $media = "";
  1002 + $min = "";
  1003 + $max = "";
  1004 + $quantidade = count($valores);
  1005 + $sturges = 1 + (3.322 * (log10($quantidade)));
  1006 + $quartis = array();
  1007 + if($un["permitesoma"] == "1"){
  1008 + $soma = array_sum($valores);
  1009 + }
  1010 + if($un["permitemedia"] == "1"){
  1011 + $media = $soma / $quantidade;
  1012 + }
  1013 + if($un["permitesoma"] == "1" || $un["permitemedia"] == "1"){
  1014 + sort($valores);
  1015 + //var_dump($valores);exit;
  1016 + $min = $valores[0];
  1017 + $max = $valores[$quantidade - 1];
  1018 + include_once(dirname(__FILE__)."/classesphp/classe_estatistica.php");
  1019 + $calc = new estatistica();
  1020 + $calc->calcula($valores);
  1021 + $v = $calc->resultado;
  1022 + //expressao para o mapfile
  1023 + $expressao[] = "([".$colunavalor."]<=".($v["quartil1"]).")";
  1024 + $expressao[] = "(([".$colunavalor."]>".($v["quartil1"]).")and([".$colunavalor."]<=".($v["quartil2"])."))";
  1025 + if($v["quartil3"] != 0){
  1026 + $expressao[] = "(([".$colunavalor."]>".($v["quartil2"]).")and([".$colunavalor."]<=".($v["quartil3"])."))";
  1027 + $expressao[] = "([".$colunavalor."]>".($v["quartil3"]).")";
  1028 + }
  1029 + $nomes[] = "<= ".($v["quartil1"]);
  1030 + $nomes[] = "> ".($v["quartil1"])." e <= ".($v["quartil2"]);
  1031 + if($v["quartil3"] != 0){
  1032 + $nomes[] = "> ".($v["quartil2"])." e <= ".($v["quartil3"]);
  1033 + $nomes[] = "> ".($v["quartil3"]);
  1034 + }
  1035 + $quartis = array(
  1036 + "cortes"=>array(
  1037 + "q1"=>$v['quartil1'],
  1038 + "q2"=>$v['quartil2'],
  1039 + "q3"=>$v['quartil3']
  1040 + ),
  1041 + "expressoes"=>$expressao,
  1042 + "nomes"=>$nomes
  1043 + );
  1044 + }
  1045 + $histograma = array_count_values($valores);
  1046 + //echo "<pre>".var_dump($quartis);exit;
  1047 + return array(
  1048 + "colunavalor"=>$colunavalor,
  1049 + "soma"=>$soma,
  1050 + "media"=>$media,
  1051 + "menor"=>$min,
  1052 + "maior"=>$max,
  1053 + "quantidade"=>$quantidade,
  1054 + "histograma"=>$histograma,
  1055 + "grupos"=>$agrupamento,
  1056 + "unidademedida"=>$un,
  1057 + "quartis"=>$quartis,
  1058 + "sturges"=>$sturges
  1059 + );
  1060 + }
  1061 + return false;
  1062 + }
  1063 +
  1064 +
  1065 + /**
  1066 + * Lista os dados de um ou de todos os mapas cadastrados
  1067 + * @param id do mapa
  1068 + */
  1069 + function listaMapas($id_mapa=""){
  1070 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_mapa ";
  1071 + if($id_mapa != ""){
  1072 + $sql .= "WHERE id_mapa = $id_mapa ";
  1073 + }
  1074 + $sql .= "ORDER BY titulo";
  1075 + return $this->execSQL($sql,$id_mapa);
  1076 + }
  1077 + /**
  1078 + * Lista os dados de um ou de todos os mapas grupos de um mapa
  1079 + * @param id do mapa
  1080 + * @param id do grupo
  1081 + */
  1082 + function listaGruposMapa($id_mapa,$id_mapa_grupo){
  1083 + if(!empty($id_mapa)){
  1084 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_mapa_grupo WHERE id_mapa = $id_mapa";
  1085 + }
  1086 + if(!empty($id_mapa_grupo)){
  1087 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_mapa_grupo WHERE id_mapa_grupo = $id_mapa_grupo";
  1088 + }
  1089 + $sql .= " ORDER BY titulo";
  1090 + return $this->execSQL($sql,$id_mapa_grupo);
  1091 + }
  1092 + /**
  1093 + * Lista os dados de um ou de todos os temas de um grupo de um mapa
  1094 + * @param id do mapa
  1095 + * @param id do grupo
  1096 + * @param id do tema
  1097 + */
  1098 + function listaTemasMapa($id_mapa_grupo,$id_mapa_tema){
  1099 + if(!empty($id_mapa_grupo)){
  1100 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_mapa_tema WHERE id_mapa_grupo = $id_mapa_grupo";
  1101 + }
  1102 + if(!empty($id_mapa_tema)){
  1103 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_mapa_tema WHERE id_mapa_tema = $id_mapa_tema";
  1104 + }
  1105 + $sql .= " ORDER BY titulo";
  1106 + return $this->execSQL($sql,$id_mapa_tema);
  1107 + }
  1108 + /**
  1109 + * Lista os dados de uma ou todas as unidades de medida cadastradas
  1110 + * @param codigo da unidade
  1111 + */
  1112 + function listaUnidadeMedida($codigo_unidade_medida=""){
  1113 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_unidade_medida ";
  1114 + if($codigo_unidade_medida != ""){
  1115 + $sql .= "WHERE codigo_unidade_medida = $codigo_unidade_medida ";
  1116 + }
  1117 + $sql .= "ORDER BY nome";
  1118 + return $this->execSQL($sql,$codigo_unidade_medida);
  1119 + }
  1120 + /**
  1121 + * Lista os dados de uma ou todas as fontes cadastradas
  1122 + * @param id da fonte
  1123 + */
  1124 + function listaFonteinfo($id_fonteinfo=""){
  1125 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_fonteinfo ";
  1126 + if($id_fonteinfo != ""){
  1127 + $sql .= "WHERE id_fonteinfo = $id_fonteinfo ";
  1128 + }
  1129 + $sql .= "ORDER BY titulo";
  1130 + return $this->execSQL($sql,$id_fonteinfo);
  1131 + }
  1132 + /**
  1133 + * Lista as fontes vinculadas a uma medida de variavel
  1134 + * @param id da medida de variavel
  1135 + */
  1136 + function listaFonteinfoMedida($id_medida_variavel){
  1137 + $sql = "SELECT i3geoestat_fonteinfo.* ";
  1138 + $sql .= "FROM ".$this->esquemaadmin."i3geoestat_fonteinfo ";
  1139 + $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_fonteinfo_medida ";
  1140 + $sql .= "ON i3geoestat_fonteinfo.id_fonteinfo = i3geoestat_fonteinfo_medida.id_fonteinfo ";
  1141 + $sql .= "WHERE i3geoestat_fonteinfo_medida.id_medida_variavel = $id_medida_variavel ";
  1142 + $sql .= "ORDER BY titulo";
  1143 + //echo $sql;exit;
  1144 + return $this->execSQL($sql,$id_fonteinfo);
  1145 + }
  1146 + /**
  1147 + * Lista os dados de uma ou todas as variaveis cadastradas
  1148 + * @param codigo da variavel
  1149 + * @param mostra apenas as variaveis cujas tabelas ficam nesse esquema
  1150 + */
  1151 + function listaVariavel($codigo_variavel="",$filtro_esquema=""){
  1152 + $sql = "select DISTINCT a.* from ".$this->esquemaadmin."i3geoestat_variavel as a ";
  1153 + if($codigo_variavel != ""){
  1154 + $sql .= "WHERE a.codigo_variavel = $codigo_variavel ";
  1155 + }
  1156 + if($filtro_esquema != ""){
  1157 + $sql .= ", ".$this->esquemaadmin."i3geoestat_medida_variavel as b WHERE a.codigo_variavel = b.codigo_variavel and b.esquemadb = '$filtro_esquema' ";
  1158 + }
  1159 + $sql .= "ORDER BY a.nome";
  1160 + //echo $sql;exit;
  1161 + return $this->execSQL($sql,$codigo_variavel);
  1162 + }
  1163 + /**
  1164 + * Lista os dados de uma ou todas as classificacoes de uma medida de variavel
  1165 + * @param id da medida de variavel
  1166 + * @param id da classificacao
  1167 + */
  1168 + function listaClassificacaoMedida($id_medida_variavel,$id_classificacao=""){
  1169 + if(!empty($id_medida_variavel)){
  1170 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classificacao WHERE id_medida_variavel = $id_medida_variavel";
  1171 + }
  1172 + if(!empty($id_classificacao)){
  1173 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classificacao WHERE id_classificacao = $id_classificacao";
  1174 + }
  1175 + return $this->execSQL($sql,$id_classificacao);
  1176 + }
  1177 + /**
  1178 + * Lista os dados de um ou todos os links de uma medida
  1179 + * @param id da medida
  1180 + * @param id do link
  1181 + */
  1182 + function listaLinkMedida($id_medida_variavel,$id_link=""){
  1183 + if(!empty($id_medida_variavel)){
  1184 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_medida_variavel_link WHERE id_medida_variavel = $id_medida_variavel";
  1185 + }
  1186 + if(!empty($id_link)){
  1187 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_medida_variavel_link WHERE id_link = $id_link";
  1188 + }
  1189 + return $this->execSQL($sql,$id_link);
  1190 + }
  1191 + /**
  1192 + * Lista os dados de uma ou todas as classes de uma classificacao
  1193 + * @param id da classificacao
  1194 + * @param id da classe
  1195 + */
  1196 + function listaClasseClassificacao($id_classificacao,$id_classe=""){
  1197 + if(!empty($id_classificacao)){
  1198 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classes WHERE id_classificacao = $id_classificacao";
  1199 + }
  1200 + if(!empty($id_classe)){
  1201 + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classes WHERE id_classe = $id_classe";
  1202 + }
  1203 + return $this->execSQL($sql,$id_classe);
  1204 + }
  1205 + /**
  1206 + * Lista os dados de uma ou todas as medidas de variavel de uma variavel
  1207 + * @param codigo da variavel
  1208 + * @param id da medida de variavel
  1209 + */
  1210 + function listaMedidaVariavel($codigo_variavel,$id_medida_variavel=""){
  1211 + $sql = "SELECT i3geoestat_medida_variavel.*,i3geoestat_variavel.nome as nome_variavel,i3geoestat_unidade_medida.permitemedia,i3geoestat_unidade_medida.permitesoma,i3geoestat_unidade_medida.nome as unidade_medida ";
  1212 + $sql .= "FROM ".$this->esquemaadmin."i3geoestat_variavel ";
  1213 + $sql .= "JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel ";
  1214 + $sql .= "ON i3geoestat_variavel.codigo_variavel = i3geoestat_medida_variavel.codigo_variavel ";
  1215 + $sql .= "LEFT JOIN ".$this->esquemaadmin."i3geoestat_unidade_medida ";
  1216 + $sql .= "ON i3geoestat_unidade_medida.codigo_unidade_medida = i3geoestat_medida_variavel.codigo_unidade_medida ";
  1217 + if($codigo_variavel != ""){
  1218 + $sql .= "WHERE i3geoestat_variavel.codigo_variavel = $codigo_variavel ";
  1219 + if($id_medida_variavel != ""){
  1220 + $sql .= "AND i3geoestat_medida_variavel.id_medida_variavel = $id_medida_variavel ";
  1221 + }
  1222 + }
  1223 + elseif($id_medida_variavel != "") {
  1224 + $sql .= "WHERE i3geoestat_medida_variavel.id_medida_variavel = $id_medida_variavel ";
  1225 + }
  1226 + $sql .= "ORDER BY i3geoestat_medida_variavel.nomemedida";
  1227 + $res = $this->execSQL($sql,$id_medida_variavel);
  1228 + $res = str_replace('"',"'",$res);
  1229 + return $res;
  1230 + }
  1231 + /**
  1232 + * Lista as regioes vinculadas a uma medida de variavel
  1233 + * @param id da medida de vriavel
  1234 + */
  1235 + function listaRegioesMedida($id_medida_variavel){
  1236 + $variavel = $this->listaMedidaVariavel("",$id_medida_variavel);
  1237 + $codigo_tipo_regiao = $variavel["codigo_tipo_regiao"];
  1238 + $regioes[] = $this->listaTipoRegiao($codigo_tipo_regiao);
  1239 + //var_dump($regioes);exit;
  1240 + $agregacoes = $this->listaAgregaRegiao($codigo_tipo_regiao);
  1241 + foreach($agregacoes as $a){
  1242 + $regioes[] = $this->listaTipoRegiao($a["codigo_tipo_regiao_pai"]);
  1243 + }
  1244 + return $regioes;
  1245 + }
  1246 + /**
  1247 + * Lista os dados de uma conexao ou de todas
  1248 + * @param id da conexao
  1249 + * @param boolean inclui na lista a senha ou nao
  1250 + * @param boolean inclui as conexoes definidas em postgis_mapa (ms_configura.php)
  1251 + */
  1252 + function listaConexao($codigo_estat_conexao="",$senha=false,$incluiPostgisMapa=true){
  1253 + if($senha == true){
  1254 + $colunas = "codigo_estat_conexao, bancodedados, host, porta, usuario, senha";
  1255 + }
  1256 + else{
  1257 + $colunas = "codigo_estat_conexao, bancodedados, host, porta, usuario";
  1258 + }
  1259 + $sql = "select $colunas from ".$this->esquemaadmin."i3geoestat_conexao ";
  1260 + if($codigo_estat_conexao != ""){
  1261 + $sql .= "WHERE codigo_estat_conexao = $codigo_estat_conexao ";
  1262 + }
  1263 + $sql .= "ORDER BY bancodedados,host,usuario";
  1264 + $res = $this->execSQL($sql,$codigo_estat_conexao);
  1265 + //se achou e a requisico e para listar uma conexao, retorna o que for encontrado
  1266 + $cres = count($res);
  1267 + if($cres > 0 && $codigo_estat_conexao != "" && !empty($cres[0]["dbname"])){
  1268 + return $res;
  1269 + }
  1270 + //caso contrario, e deve retornar todas as conexoes, inclui a fonte
  1271 + if($codigo_estat_conexao == ""){
  1272 + for($i=0; $i<$cres;$i++){
  1273 + $res[$i]["fonte"] = "metaestat";
  1274 + }
  1275 + }
  1276 + //obtem as conexoes definidas em ms_configgura.php
  1277 + if($incluiPostgisMapa == true){
  1278 + if(!isset($postgis_mapa)){
  1279 + include(dirname(__FILE__)."/../ms_configura.php");
  1280 + }
  1281 + if(!empty($postgis_mapa)){
  1282 + foreach(array_keys($postgis_mapa) as $key){
  1283 + $lista = explode(" ",$postgis_mapa[$key]);
  1284 + $con = array();
  1285 + foreach($lista as $l){
  1286 + $teste = explode("=",$l);
  1287 + $con[trim($teste[0])] = trim($teste[1]);
  1288 + }
  1289 + $c = array(
  1290 + "codigo_estat_conexao" => $key,
  1291 + "bancodedados" => $con["dbname"],
  1292 + "host" => $con["host"],
  1293 + "porta" => $con["port"],
  1294 + "usuario" => $con["user"],
  1295 + "fonte" => "ms_configura"
  1296 + );
  1297 + if($senha == true){
  1298 + $c["senha"] = $con["password"];
  1299 + }
  1300 + $res[] = $c;
  1301 + if($codigo_estat_conexao != "" && $codigo_estat_conexao == $key){
  1302 + return $c;
  1303 + }
  1304 + }
  1305 + }
  1306 + }
  1307 + //echo "<pre>";
  1308 + //var_dump($res);exit;
  1309 + return $res;
  1310 + }
  1311 + function listaParametroTempo2CampoData($id_medida_variavel,$prefixoAlias = ""){
  1312 + //lista os parametros temporais
  1313 + $parametros = $this->listaParametro($id_medida_variavel,"","",true,true);
  1314 + echo "<pre>";
  1315 + //var_dump($parametros);exit;
  1316 + //faz o sql para pegar os valores e definir a resolucao
  1317 + //o tempo deve comecar sempre pelo ano
  1318 + $data = array();
  1319 + if($parametros[0]["tipo"] == 1){
  1320 + //ano
  1321 + $data[] = $prefixoAlias.$parametros[0]["coluna"];
  1322 + $tipodata = "YYYY";
  1323 + //mes
  1324 + if(!empty($parametros[1])){
  1325 + $data[] = "'-'".$prefixoAlias.$parametros[1]["coluna"];
  1326 + $tipodata = "YYYYMM";
  1327 + }
  1328 + else{
  1329 + $data[] = "'-01'";
  1330 + }
  1331 + //dia
  1332 + if(!empty($parametros[2])){
  1333 + $data[] = "'-'".$prefixoAlias.$parametros[2]["coluna"];
  1334 + $tipodata = "YYYYMMDD";
  1335 + }
  1336 + else{
  1337 + $data[] = "'-01'";
  1338 + }
  1339 + $data = implode("||",$data);
  1340 + return "to_date($data,'$tipodata')";
  1341 + }
  1342 + }
  1343 + /**
  1344 + * Lista os dados de um ou de todos os parametros relacionados a uma medida de variavel
  1345 + * @param id da medida de variavel
  1346 + * @param id do parametro
  1347 + * @param id do pai (se definido, lista apenas os filhos deste)
  1348 + * @param bool indica se apenas parametros do tipo temporal serao retornados
  1349 + */
  1350 + function listaParametro($id_medida_variavel,$id_parametro_medida="",$id_pai="",$apenasTempo=false,$ordenaPeloPai=false){
  1351 + $sql = "SELECT i3geoestat_parametro_medida.*,i3geoestat_medida_variavel.* ";
  1352 + $sql .= "FROM ".$this->esquemaadmin."i3geoestat_parametro_medida ";
  1353 + $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel ";
  1354 + $sql .= "ON i3geoestat_parametro_medida.id_medida_variavel = i3geoestat_medida_variavel.id_medida_variavel ";
  1355 + if($id_medida_variavel != ""){
  1356 + $sql .= "WHERE i3geoestat_parametro_medida.id_medida_variavel = $id_medida_variavel ";
  1357 + if($id_parametro_medida != ""){
  1358 + $sql .= "AND i3geoestat_parametro_medida.id_parametro_medida = $id_parametro_medida ";
  1359 + }
  1360 + }
  1361 + elseif ($id_parametro_medida != ""){
  1362 + $sql .= "WHERE i3geoestat_parametro_medida.id_parametro_medida = $id_parametro_medida ";
  1363 + }
  1364 + if($id_pai != ""){
  1365 + $sql .= " AND id_pai = $id_pai";
  1366 + }
  1367 + if($apenasTempo == true){
  1368 + $tempo = " AND i3geoestat_parametro_medida.tipo > 0 AND i3geoestat_parametro_medida.tipo < 5 ";
  1369 + $sql .= $tempo;
  1370 + }
  1371 + if($ordenaPeloPai == true){
  1372 + $sql .= " ORDER BY id_pai";
  1373 + }
  1374 + //echo $sql;exit;
  1375 + return $this->execSQL($sql,$id_parametro_medida);
  1376 + }
  1377 + /**
  1378 + * Lista todos os parametros cadastrados
  1379 + */
  1380 + function listaTodosParametros(){
  1381 + $sql = "SELECT i3geoestat_parametro_medida.*,i3geoestat_medida_variavel.* ";
  1382 + $sql .= "FROM ".$this->esquemaadmin."i3geoestat_parametro_medida ";
  1383 + $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel ";
  1384 + $sql .= "ON i3geoestat_parametro_medida.id_medida_variavel = i3geoestat_medida_variavel.id_medida_variavel ";
  1385 + $sql .= " ORDER BY nome";
  1386 + return $this->execSQL($sql);
  1387 + }
  1388 + /**
  1389 + * Lista os valores (unicos) que ocorrem em um parametro de uma medida de variavel
  1390 + * @param id do parametro
  1391 + * @return array com os valores
  1392 + */
  1393 + function listaValoresParametro($id_parametro_medida){
  1394 + $parametro = $this->listaParametro("",$id_parametro_medida);
  1395 + //$medida = $this->listaMedidaVariavel("",$parametro["id_medida_variavel"]);
  1396 + $sm = $this->valorUnicoMedidaVariavel($parametro["id_medida_variavel"],$parametro["coluna"]);
  1397 + $nsm = array();
  1398 + foreach($sm as $s){
  1399 + $nsm[] = $s[$parametro["coluna"]];
  1400 + }
  1401 + return $nsm;
  1402 + }
  1403 + /**
  1404 + * Lista os dados de um ou todos os tipos de periodo cadastrados
  1405 + * @param id
  1406 + */
  1407 + function listaTipoPeriodo($codigo_tipo_periodo=""){
  1408 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_tipo_periodo ";
  1409 + if($codigo_tipo_periodo != ""){
  1410 + $sql .= "WHERE codigo_tipo_periodo = $codigo_tipo_periodo ";
  1411 + }
  1412 + $sql .= "ORDER BY nome";
  1413 + return $this->execSQL($sql,$codigo_tipo_periodo);
  1414 + }
  1415 + /**
  1416 + * Lista as propriedades da coluna com as geometrias de uma regiao geografica
  1417 + * @param codigo do tipo de regiao
  1418 + * @return array com os parametros, inclusive a dimensao (st_dimension)
  1419 + */
  1420 + function listaPropGeoRegiao($codigo_tipo_regiao){
  1421 + //st_dimension returns 0 for POINT, 1 for LINESTRING, 2 for POLYGON
  1422 + $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
  1423 + $c = $this->listaConexao($regiao["codigo_estat_conexao"],true);
  1424 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  1425 + $c = $regiao["colunageo"];
  1426 + $sql = "select st_dimension(".$regiao["colunageo"].") as st_dimension from ".$regiao["esquemadb"].".".$regiao["tabela"]." limit 1";
  1427 + $q = $dbh->query($sql,PDO::FETCH_ASSOC);
  1428 + $r = array();
  1429 + if($q){
  1430 + $r = $q->fetchAll();
  1431 + $r = $r[0];
  1432 + }
  1433 + return $r;
  1434 + }
  1435 + /**
  1436 + * Lista os dados de uma ou todas as regioes cadastradas
  1437 + * @param codigo do tipo de regiao
  1438 + */
  1439 + function listaTipoRegiao($codigo_tipo_regiao="",$completo=true){
  1440 + if($completo == true){
  1441 + $colunas = "*";
  1442 + } else {
  1443 + $colunas = "codigo_tipo_regiao,nome_tipo_regiao,descricao_tipo_regiao";
  1444 + }
  1445 + $sql = "select $colunas from ".$this->esquemaadmin."i3geoestat_tipo_regiao ";
  1446 + if($codigo_tipo_regiao != ""){
  1447 + $sql .= "WHERE codigo_tipo_regiao = $codigo_tipo_regiao ";
  1448 + }
  1449 + $sql .= "ORDER BY nome_tipo_regiao";
  1450 + return $this->execSQL($sql,$codigo_tipo_regiao);
  1451 + }
  1452 + /**
  1453 + * Obtem de um tipo de regiao a coluna do tipo serial
  1454 + * @param codigo do tipo de regiao
  1455 + */
  1456 + function listaTipoRegiaoSerial($codigo_tipo_regiao){
  1457 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_tipo_regiao WHERE codigo_tipo_regiao = $codigo_tipo_regiao ";
  1458 + $regiao = $this->execSQL($sql,$codigo_tipo_regiao);
  1459 + $nome_esquema = $regiao["esquemadb"];
  1460 + $nome_tabela = $regiao["tabela"];
  1461 + $sql = "SELECT a.attname as coluna FROM pg_class s JOIN pg_depend d ON d.objid = s.oid JOIN pg_class t ON d.objid = s.oid AND d.refobjid = t.oid JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum) JOIN pg_namespace n ON n.oid = s.relnamespace WHERE s.relkind = 'S' AND n.nspname = '$nome_esquema' AND t.relname = '$nome_tabela'";
  1462 + $colunas = $this->execSQLDB($regiao["codigo_estat_conexao"],$sql);
  1463 + $colunas = $colunas[0];
  1464 + return $colunas["coluna"];
  1465 + }
  1466 + /**
  1467 + * Obtem de uma tabela a coluna do tipo serial
  1468 + * @param codigo do tipo de regiao
  1469 + */
  1470 + function listaTabelaSerial($codigo_estat_conexao,$nome_esquema,$nome_tabela){
  1471 + $sql = "SELECT a.attname as coluna FROM pg_class s JOIN pg_depend d ON d.objid = s.oid JOIN pg_class t ON d.objid = s.oid AND d.refobjid = t.oid JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum) JOIN pg_namespace n ON n.oid = s.relnamespace WHERE s.relkind = 'S' AND n.nspname = '$nome_esquema' AND t.relname = '$nome_tabela'";
  1472 + $colunas = $this->execSQLDB($codigo_estat_conexao,$sql);
  1473 + $colunas = $colunas[0];
  1474 + return $colunas["coluna"];
  1475 + }
  1476 + /**
  1477 + * Lista os dados de agregacao de uma regiao pai
  1478 + * @param codigo da regiao
  1479 + */
  1480 + function listaHierarquiaRegioes($codigoregiaopai=""){
  1481 + $sql = "select i3geoestat_agregaregiao.id_agregaregiao,i3geoestat_agregaregiao.colunaligacao_regiaopai,i3geoestat_tipo_regiao.codigo_tipo_regiao,i3geoestat_tipo_regiao.nome_tipo_regiao from ".$this->esquemaadmin."i3geoestat_tipo_regiao ";
  1482 + $sql .= "LEFT JOIN ".$this->esquemaadmin."i3geoestat_agregaregiao ";
  1483 + $sql .= "ON i3geoestat_tipo_regiao.codigo_tipo_regiao = i3geoestat_agregaregiao.codigo_tipo_regiao ";
  1484 + if($codigoregiaopai != ""){
  1485 + $sql .= " WHERE ".$this->esquemaadmin."i3geoestat_agregaregiao.codigo_tipo_regiao_pai = $codigoregiaopai";
  1486 + }
  1487 + else{
  1488 + $sql .= "WHERE ".$this->esquemaadmin."i3geoestat_agregaregiao.codigo_tipo_regiao IS NULL";
  1489 + }
  1490 + return $this->execSQL($sql,"");
  1491 + }
  1492 + function listaHierarquia($codigoregiaopai=""){
  1493 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao order by codigo_tipo_regiao";
  1494 + return $this->execSQL($sql,"");
  1495 + }
  1496 + /**
  1497 + * Lista os registros de um tipo de regiao
  1498 + * Se for definido o pai, lista os valores da regiao que e filha
  1499 + * Nesse caso e necessario definir o identificador da regiao pai para obter os registros na regiao filha
  1500 + * @param codigo do tipo de regiao
  1501 + * @param codigo do tipo de regiao pai
  1502 + * @param identificador da regiao (registro) pai
  1503 + */
  1504 + function listaDadosRegiao($codigo_tipo_regiao,$codigo_tipo_regiaopai="",$valorregiaopai=""){
  1505 + //pega a tabela, esquema e conexao para acessar os dados da regiao
  1506 + $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
  1507 + $c = $this->listaConexao($regiao["codigo_estat_conexao"],true);
  1508 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  1509 + $c = $regiao["colunageo"];
  1510 + $bbox = "ST_XMin($c)||' '||ST_YMin($c)||' '||ST_XMax($c)||' '||ST_YMax($c) as ext ";
  1511 + $sql = "select $bbox,".$regiao["colunanomeregiao"]." as nome_regiao,".$regiao["identificador"]." as identificador_regiao from ".$regiao["esquemadb"].".".$regiao["tabela"];
  1512 + if($valorregiaopai != ""){
  1513 + $r = $this->listaAgregaRegiaoFilho($codigo_tipo_regiao,$codigo_tipo_regiaopai);
  1514 + $sql .= " WHERE ".$r["colunaligacao_regiaopai"]."::text = '$valorregiaopai'";
  1515 + }
  1516 + $sql .= " order by ".$regiao["colunanomeregiao"];
  1517 +
  1518 + $q = $dbh->query($sql,PDO::FETCH_ASSOC);
  1519 + $r = array();
  1520 + if($q){
  1521 + $r = $q->fetchAll();
  1522 + }
  1523 + return $r;
  1524 + }
  1525 + /**
  1526 + * Lista os registros de uma tabela que e uma regiao
  1527 + * @param codigo do tipo de regiao
  1528 + */
  1529 + function listaDadosGeometriaRegiao($codigo_tipo_regiao){
  1530 + //pega a tabela, esquema e conexao para acessar os dados da regiao
  1531 + $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
  1532 + $c = $this->listaConexao($regiao["codigo_estat_conexao"],true);
  1533 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  1534 + $c = $regiao["colunageo"];
  1535 + $s = "ST_dimension($c) as dimension ";
  1536 + $sql = "select $s,".$regiao["colunanomeregiao"]." as nome_regiao,".$regiao["identificador"]." as identificador_regiao from ".$regiao["esquemadb"].".".$regiao["tabela"];
  1537 + $sql .= " limit 1";
  1538 + $q = $dbh->query($sql,PDO::FETCH_ASSOC);
  1539 + $r = array();
  1540 + if($q){
  1541 + $r = $q->fetchAll();
  1542 + }
  1543 + return $r[0];
  1544 + }
  1545 + /**
  1546 + * Lista uma ou todas as agregacoes de regioes existentes para um tipo de regiao
  1547 + * @param codigo do tipo de regiao
  1548 + * @param id da agregacao
  1549 + */
  1550 + function listaAgregaRegiao($codigo_tipo_regiao="",$id_agregaregiao=""){
  1551 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao ";
  1552 + if($id_agregaregiao != ""){
  1553 + $sql .= "WHERE id_agregaregiao = $id_agregaregiao ";
  1554 + }
  1555 + else{
  1556 + if($codigo_tipo_regiao != ""){
  1557 + $sql .= "WHERE codigo_tipo_regiao = $codigo_tipo_regiao";
  1558 + }
  1559 + }
  1560 + $sql .= " ORDER BY colunaligacao_regiaopai";
  1561 + //echo $sql;exit;
  1562 + return $this->execSQL($sql,$id_agregaregiao);
  1563 + }
  1564 + /**
  1565 + * Lista uma ou todas as agregacoes de regioes filhas de um tipo de regiao
  1566 + * @param codigo do tipo de regiao
  1567 + * @param codigo do tipo de regiao que e pai
  1568 + */
  1569 + function listaAgregaRegiaoFilho($codigo_tipo_regiao,$codigo_tipo_regiao_pai){
  1570 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao ";
  1571 + $sql .= "WHERE codigo_tipo_regiao_pai = $codigo_tipo_regiao_pai ";
  1572 + if($codigo_tipo_regiao != ""){
  1573 + $sql .= "AND codigo_tipo_regiao = $codigo_tipo_regiao";
  1574 + }
  1575 + return $this->execSQL($sql,$codigo_tipo_regiao_pai);
  1576 + }
  1577 + /**
  1578 + * Lista os esquemas em um banco de dados
  1579 + * @param codigo da conexao
  1580 + * @return execSQLDB
  1581 + */
  1582 + function esquemasConexao($codigo_estat_conexao){
  1583 + return $this->execSQLDB($codigo_estat_conexao,"SELECT oid,nspname as esquema FROM pg_namespace WHERE nspname NOT LIKE 'pg_%' AND nspname NOT LIKE '%_schema%' group by nspname,oid order by nspname");
  1584 + }
  1585 + /**
  1586 + * Lista as tabelas de um esquema
  1587 + * @param codigo da conexao
  1588 + * @param nome do esquema
  1589 + * @param sim|nao exclui da lista as tabelas que contem geometria
  1590 + * @return execSQLDB
  1591 + */
  1592 + function tabelasEsquema($codigo_estat_conexao,$nome_esquema,$excluigeom=""){
  1593 + $sql = "SELECT table_name as tabela FROM information_schema.tables where table_schema = '$nome_esquema' AND table_schema NOT LIKE 'i3geo%' AND table_schema NOT LIKE 'pg_%' AND table_schema NOT LIKE '%_schema%'";
  1594 + if(strtolower($excluigeom) == "sim"){
  1595 + $sql = "SELECT c.table_name as tabela FROM information_schema.tables as c left join (SELECT distinct a.table_name FROM information_schema.tables as a left join information_schema.columns as b on a.table_name = b.table_name where a.table_schema = '$nome_esquema' and udt_name = 'geometry' ) as d on c.table_name = d.table_name where c.table_schema = '$nome_esquema' AND c.table_schema NOT LIKE 'i3geo%' AND c.table_schema NOT LIKE 'pg_%' AND c.table_schema NOT LIKE '%_schema%' and d.table_name is null";
  1596 + }
  1597 + return $this->execSQLDB($codigo_estat_conexao,$sql);
  1598 + }
  1599 + /**
  1600 + * Lista as colunas de uma tabela
  1601 + * @param codigo da conexao
  1602 + * @param nome do esquema
  1603 + * @param nome da tabela
  1604 + * @param tipo de coluna (opcional)
  1605 + * @param tipo de tratamento do parametro tipo, pode ser =|!=
  1606 + * @return execSQLDB
  1607 + */
  1608 + function colunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela,$tipo="",$tipotratamento="="){
  1609 + $colunas = array();
  1610 + $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name FROM information_schema.columns where table_schema = '$nome_esquema' and table_name = '$nome_tabela'");
  1611 + if($tipo != ""){
  1612 + $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name FROM information_schema.columns where table_schema = '$nome_esquema' and udt_name $tipotratamento '$tipo' and table_name = '$nome_tabela'");
  1613 + }
  1614 + foreach($res as $c){
  1615 + $colunas[] = $c["coluna"];
  1616 + }
  1617 + return $colunas;
  1618 + }
  1619 + /**
  1620 + * Lista o comentario de uma tabela
  1621 + * @param codigo da conexao
  1622 + * @param nome do esquema
  1623 + * @param nome da tabela
  1624 + * @return execSQLDB
  1625 + */
  1626 + function comentarioTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){
  1627 + $colunas = array();
  1628 + $sql = "SELECT pg_catalog.obj_description(c.oid, 'pg_class') AS comments FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace) WHERE n.nspname = '".$nome_esquema."' AND c.relname = '".$nome_tabela."'";
  1629 + $res = $this->execSQLDB($codigo_estat_conexao,$sql);
  1630 + if(count($res) > 0){
  1631 + $res = $res[0];
  1632 + $res = $res["comments"];
  1633 + }
  1634 + else{
  1635 + $res = "";
  1636 + }
  1637 + if($res == null){
  1638 + $res = "";
  1639 + }
  1640 + return $res;
  1641 + }
  1642 + /**
  1643 + * Lista os metadados de uma coluna
  1644 + * Os metadados sao obtidos do proprio PostgreSQL
  1645 + * @param codigo da conexao
  1646 + * @param nome do esquema
  1647 + * @param nome da tabela
  1648 + * @param nome da coluna (opcional)
  1649 + * @return execSQLDB
  1650 + */
  1651 + function descreveColunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela,$nome_coluna=""){
  1652 + if($nome_coluna == ""){
  1653 + return $this->execSQLDB($codigo_estat_conexao,"SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a.atttypmod AS lengthvar,a.attnotnull AS notnull,p.nspname as esquema FROM pg_class c,pg_attribute a,pg_type t,pg_namespace p WHERE c.relname = '$nome_tabela' and p.nspname = '$nome_esquema' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relnamespace = p.oid ORDER BY a.attname");
  1654 + }
  1655 + else{
  1656 + $res = $this->execSQLDB($codigo_estat_conexao,"SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a.atttypmod AS lengthvar,a.attnotnull AS notnull,p.nspname as esquema FROM pg_class c,pg_attribute a,pg_type t,pg_namespace p WHERE a.attname = '$nome_coluna' AND c.relname = '$nome_tabela' and p.nspname = '$nome_esquema' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relnamespace = p.oid ORDER BY a.attname");
  1657 + return $res[0];
  1658 + }
  1659 + }
  1660 + /**
  1661 + * Lista os dados de uma tabela
  1662 + * @param codigo da conexao
  1663 + * @param nome do esquema
  1664 + * @param nome da tabela
  1665 + * @param sim|nao inclui o WKT da geometria de colunas geo
  1666 + * @param (opcional) numero de registros que serao listados
  1667 + * @return execSQLDB
  1668 + */
  1669 + function obtemDadosTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$geo="nao",$nreg=""){
  1670 + $desccolunas = $this->descreveColunasTabela($codigo_estat_conexao, $nome_esquema, $nome_tabela);
  1671 + $colunas = array();
  1672 + $colsql = array();
  1673 + foreach($desccolunas as $d){
  1674 + if($d["type"] != "geometry" && $d["type"] != "geography"){
  1675 + $colunas[] = $d["field"];
  1676 + $colsql[] = $d["field"];
  1677 + }
  1678 + elseif($geo == "sim"){
  1679 + $colunas[] = $d["field"];
  1680 + $colsql[] = "ST_AsText(".$d["field"].") as ".$d["field"];
  1681 + }
  1682 + }
  1683 + $sql = "SELECT ".implode(",",$colsql)." from ".$nome_esquema.".".$nome_tabela;
  1684 + if($nreg != ""){
  1685 + $sql = "SELECT ".implode(",",$colsql)." from ".$nome_esquema.".".$nome_tabela." limit $nreg";
  1686 + }
  1687 + $dados = $this->execSQLDB($codigo_estat_conexao,$sql );
  1688 + $linhas = array();
  1689 + foreach($dados as $d){
  1690 + $l = array();
  1691 + foreach($colunas as $c){
  1692 + $l[] = $d[$c];
  1693 + }
  1694 + $linhas[] = $l;
  1695 + }
  1696 + return array("nomescolunas"=>$colunas,"colunas"=>$desccolunas,"linhas"=>$linhas);
  1697 + }
  1698 + /**
  1699 + * Relatorio completo com a lista de variaveis e medidas
  1700 + * @param codigo da variavel
  1701 + * @param sim|nao inclui dados detalhados
  1702 + * @return Array
  1703 + */
  1704 + function relatorioCompleto($codigo_variavel="",$dadosGerenciais="nao"){
  1705 + $dados = array();
  1706 + if($codigo_variavel != "" || !empty($codigo_variavel)){
  1707 + $vs[] = $this->listaVariavel($codigo_variavel);
  1708 + }
  1709 + else{
  1710 + $vs = $this->listaVariavel();
  1711 + }
  1712 + foreach($vs as $v){
  1713 + $nivel1["id"] = $v["codigo_variavel"];
  1714 + $nivel1["titulo"] = $v["nome"];
  1715 + $nivel1["descricao"] = $v["descricao"];
  1716 + $ms = $this->listaMedidaVariavel($v["codigo_variavel"]);
  1717 + $nivel1["filhos"] = array();
  1718 + foreach($ms as $m){
  1719 + $nivel2["id"] = $m["id_medida_variavel"];
  1720 + $nivel2["titulo"] = $m["nomemedida"];
  1721 + $unidade = $this->listaUnidadeMedida($m["codigo_unidade_medida"]);
  1722 + $unidade = "Unidade de medida: ".$unidade["nome"];
  1723 + $periodo = $this->listaTipoPeriodo($m["codigo_tipo_periodo"]);
  1724 + $periodo = "Per&iacute;odo de tempo: ".$periodo["nome"];
  1725 + $regiao = $this->listaTipoRegiao($m["codigo_tipo_regiao"]);
  1726 + $regiao = "Regi&atilde;o: ".$regiao["nome_tipo_regiao"];
  1727 + $nivel2["descricao"] = $unidade.", ".$periodo.", ".$regiao;
  1728 + $nivel2["fontes"] = $this->listaFonteinfoMedida($m["id_medida_variavel"]);
  1729 + $nivel2["links"] = $this->listaLinkMedida($m["id_medida_variavel"]);
  1730 + $nivel2["dadosgerenciais"] = "";
  1731 + if($dadosGerenciais == "sim"){
  1732 + $nivel2["dadosgerenciais"] = $m;
  1733 + }
  1734 + $nivel1["filhos"][] = $nivel2;
  1735 + }
  1736 + $dados[] = $nivel1;
  1737 + }
  1738 + return $dados;
  1739 + }
  1740 + /**
  1741 + * Cria um raltorio formatado em HTML
  1742 + * @param dados obtidos com relatorioCompleto
  1743 + * @param sim|nao inclui os dados detalhados
  1744 + * @return string
  1745 + */
  1746 + function formataRelatorioHtml($dados,$detalhes="sim"){
  1747 + $html[] = "<div class='var_div_relatorio'>";
  1748 + $var_cor = "var_cor1";
  1749 + foreach($dados as $variavel){
  1750 + $html[] = "<div class='".$var_cor."'>";
  1751 + $html[] = "<h1 style=padding:3px; ><b>".$variavel["titulo"];
  1752 + $html[] = "</b><br><span style='color:rgb(100,100,100)'>".$variavel["descricao"]."</span></h1>";
  1753 + $filhos = $variavel["filhos"];
  1754 + foreach($filhos as $f){
  1755 + $html[] = "<h2 style='position:relative;left:10px;'>ID: <u>".$f["id"]."</u> - ".$f["titulo"]."</h2>";
  1756 + $html[] = "<div style='position:relative;padding-left:20px;'>";
  1757 + $html[] = "<p>".$f["descricao"]."</p>";
  1758 + if($detalhes == "sim"){
  1759 + $html[] = "<p><b>Fontes:</b></p>";
  1760 + foreach($f["fontes"] as $fonte){
  1761 + $html[] = "<p><a href='".$fonte["link"]."' >".$fonte["titulo"]."</a></p>";
  1762 + }
  1763 + $html[] = "<p><b>Links:</b></p>";
  1764 + foreach($f["links"] as $link){
  1765 + $html[] = "<p><a href='".$link["link"]."' >".$link["nome"]."</a></p>";
  1766 + }
  1767 + if($f["dadosgerenciais"] != ""){
  1768 + $html[] = "<span style='color:gray'>";
  1769 + $html[] = "esquemadb = ".$f["dadosgerenciais"][esquemadb].", ";
  1770 + $html[] = "tabela = ".$f["dadosgerenciais"][tabela].", ";
  1771 + $html[] = "colunavalor = ".$f["dadosgerenciais"][colunavalor].", ";
  1772 + $html[] = "colunaidgeo = ".$f["dadosgerenciais"][colunaidgeo].", ";
  1773 + $html[] = "filtro = ".$f["dadosgerenciais"][filtro].", ";
  1774 + $html[] = "colunaidunico = ".$f["dadosgerenciais"][colunaidunico];
  1775 + $html[] = "</span>";
  1776 + }
  1777 + }
  1778 + $html[] = "</div>";
  1779 + }
  1780 + $html[] = "</div>";
  1781 + if($var_cor == "var_cor1"){
  1782 + $var_cor = "var_cor2";
  1783 + }
  1784 + else{
  1785 + $var_cor = "var_cor1";
  1786 + }
  1787 + }
  1788 + $html[] = "</div><br><br>";
  1789 + return implode("",$html);
  1790 + }
  1791 + /**
  1792 + * Cria um relatorio no formato XML
  1793 + * @param dados obtidos com relatorioCompleto
  1794 + * @return string
  1795 + */
  1796 + function formataXML($dados){
  1797 + $chaves = array_keys($dados[0]);
  1798 + if(count($chaves) == 0){
  1799 + $chaves = false;
  1800 + }
  1801 + $xml = "<"."\x3F"."xml version='1.0' encoding='UTF-8' "."\x3F".">" . PHP_EOL;
  1802 + $xml .= '<result-set>' . PHP_EOL;
  1803 + //tenta descobrir o tipo de coluna
  1804 + //$xml .= '<!--java.lang.String,java.lang.Integer-->' . PHP_EOL;
  1805 + $xmldados = "";
  1806 + if($chaves){
  1807 + foreach($dados as $d){
  1808 + $xmldados .= "<row>" . PHP_EOL;
  1809 + foreach($chaves as $c){
  1810 + $xmldados .= "<".$c.">".$d[$c]."</".$c.">" . PHP_EOL;
  1811 + }
  1812 + $xmldados .= "</row>" . PHP_EOL;
  1813 + }
  1814 + $tipos = array();
  1815 + $d = $dados[0];
  1816 + foreach($chaves as $c){
  1817 + if(is_numeric($d[$c])){
  1818 + $tipos[] = "java.lang.Integer";
  1819 + }
  1820 + else{
  1821 + $tipos[] = "java.lang.String";
  1822 + }
  1823 + }
  1824 + $xml .= '<!--'.implode($tipos,",").'-->' . PHP_EOL;
  1825 + }
  1826 + else{
  1827 + while (list($key, $val) = each($dados)) {
  1828 + $xmldados .= "<row>" . PHP_EOL;
  1829 + $xmldados .= "<nome>".$key."</nome>" . PHP_EOL;
  1830 + $xmldados .= "<valor>".$val."</valor>" . PHP_EOL;
  1831 + $xmldados .= "</row>" . PHP_EOL;
  1832 + }
  1833 + reset($dados);
  1834 + $tipos = array();
  1835 + while (list($key, $val) = each($dados)) {
  1836 + if(is_numeric($val)){
  1837 + $tipos[] = "java.lang.Integer";
  1838 + }
  1839 + else{
  1840 + $tipos[] = "java.lang.String";
  1841 + }
  1842 + if(is_numeric($key)){
  1843 + $tipos[] = "java.lang.Integer";
  1844 + }
  1845 + else{
  1846 + $tipos[] = "java.lang.String";
  1847 + }
  1848 + break;
  1849 + }
  1850 + $xml .= '<!--'.implode($tipos,",").'-->' . PHP_EOL;
  1851 + }
  1852 + $xml .= $xmldados;
  1853 + $xml .= '</result-set>' . PHP_EOL;
  1854 + return $xml;
  1855 + }
  1856 + /**
  1857 + * Verifica se em um array existe uma chave com determinado valor
  1858 + * @param Array
  1859 + * @param nome da chave
  1860 + * @param valor a ser buscado
  1861 + * @return boolean
  1862 + */
  1863 + function buscaNoArray($lista,$chave,$valor){
  1864 + foreach($lista as $l){
  1865 + if($l[$chave] == $valor){
  1866 + return true;
  1867 + }
  1868 + }
  1869 + return false;
  1870 + }
  1871 + /**
  1872 + * Obtem o valor de um registro de uma tabela de regiao com base na coordenada de longitude e latitude
  1873 + * @param codigo do tipo de regiao
  1874 + * @param longitude
  1875 + * @param latitude
  1876 + * @return array
  1877 + */
  1878 + function xy2regiao($codigo_tipo_regiao,$x,$y){
  1879 + //pega a tabela, esquema e conexao para acessar os dados da regiao
  1880 + $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
  1881 + $c = $this->listaConexao($regiao["codigo_estat_conexao"],true);
  1882 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  1883 + $sql = "select ".$regiao["identificador"]." as identificador_regiao,".$regiao["colunanomeregiao"]." as nomeregiao from i3geo_metaestat.".$regiao["tabela"]." WHERE ST_within(ST_GeomFromText('POINT($x $y)',".$regiao["srid"]."),".$regiao["colunageo"].")";
  1884 + $q = $dbh->query($sql,PDO::FETCH_ASSOC);
  1885 + $r = $q->fetchAll();
  1886 + if(count($r) > 0){
  1887 + return $r[0];
  1888 + }
  1889 + else{
  1890 + return "";
  1891 + }
  1892 + }
  1893 + /**
  1894 + * Busca os dados de uma medida de variavel para uma regiao
  1895 + * Identificador da regiao e o valor a ser encontrado na coluna de
  1896 + * ligacao da tabela da medida da variavel com a tabela com as localidades (tipo de regiao)
  1897 + * @param identificador da regiao
  1898 + * @param id da medida da variavel
  1899 + * @return multitype:unknown multitype: string
  1900 + */
  1901 + function listaAtributosMedidaVariavelRegiao ($identificador_regiao,$id_medida_variavel){
  1902 + $medida = $this->listaMedidaVariavel("",$id_medida_variavel);
  1903 + $c = $this->listaConexao($medida["codigo_estat_conexao"],true);
  1904 + if($medida["colunavalor"] == ""){
  1905 + return "";
  1906 + }
  1907 + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]);
  1908 + $colunassql[] = $medida["colunavalor"].",".$medida["colunaidunico"];
  1909 +
  1910 + $alias[] = $medida["nomemedida"];
  1911 + $colunas[] = $medida["colunavalor"];
  1912 + $alias[] = "idunico";
  1913 + $colunas[] = $medida["colunaidunico"];
  1914 + $descricao[] = $medida["unidade_medida"];
  1915 + $parametros = $this->listaParametro($id_medida_variavel);
  1916 + foreach($parametros as $p){
  1917 + $colunassql[] = $p["coluna"];
  1918 + $alias[] = $p["nome"];
  1919 + $descricao[] = $p["descricao"];
  1920 + $colunas[] = $p["coluna"];
  1921 + }
  1922 +
  1923 + $sql = "select ".implode(",",$colunassql)." from ".$medida["esquemadb"].".".$medida["tabela"]." WHERE ".$medida["colunaidgeo"]."::text = ".$identificador_regiao."::text ";
  1924 + if($medida["filtro"] != ""){
  1925 + $sql .= " and ".$medida["filtro"];
  1926 + }
  1927 + $q = $dbh->query($sql,PDO::FETCH_ASSOC);
  1928 + $r = $q->fetchAll();
  1929 + return array("dados"=>$r,"aliascolunas"=>$alias,"colunas"=>$colunas,"descricao"=>$descricao);
  1930 + }
  1931 + /**
  1932 + * Converte um tipo de regiao em shapefile
  1933 + * @param codigo do tipo de regiao
  1934 + * @return nome do arquivo criado
  1935 + */
  1936 + function regiao2shp($codigo_tipo_regiao){
  1937 + $regiao = $this->listaTipoRegiao($codigo_tipo_regiao);
  1938 + $dados = $this->obtemDadosTabelaDB($regiao["codigo_estat_conexao"],$regiao["esquemadb"],$regiao["tabela"],"sim");
  1939 + $tipol = $this->listaPropGeoRegiao($codigo_tipo_regiao);
  1940 + include_once(dirname(__FILE__)."/classesphp/classe_shp.php");
  1941 + $s = new SHP();
  1942 + //st_dimension returns 0 for POINT, 1 for LINESTRING, 2 for POLYGON
  1943 + //echo MS_SHP_POINT.", ".MS_SHP_ARC.", ".MS_SHP_POLYGON.", ".MS_SHP_MULTIPOINT;
  1944 + //1, 3, 5, 8
  1945 + $conv[0] = 1;
  1946 + $conv[1] = 3;
  1947 + $conv[2] = 5;
  1948 + //cria as colunas
  1949 + $cni = 0;
  1950 + foreach($dados["colunas"] as $t){
  1951 + $temp = strtoupper($t["field"]);
  1952 + if(strlen($temp) > 10){
  1953 + $temp = substr($temp,0,8).($cni++);
  1954 + }
  1955 + if($t["type"] == "varchar" || $t["type"] == "char" || $t["type"] == "character varying" || $t["type"] == "character" || $t["type"] == "text"){
  1956 + $def[] = array($temp,"C","254");
  1957 + }
  1958 + else{
  1959 + if($t["lengthvar"] < 0){
  1960 + $t["lengthvar"] = 0;
  1961 + }
  1962 + $def[] = array($temp,"N", $t["length"],$t["lengthvar"]);
  1963 + }
  1964 + }
  1965 + $nomeshp = $this->dir_tmp."/regiao$codigo_tipo_regiao"."_".$this->nomeRandomico();
  1966 + $dbaseExiste = false;
  1967 + if(function_exists("dbase_create")){
  1968 + $dbaseExiste = true;
  1969 + }
  1970 + //para manipular dbf
  1971 + if($dbaseExiste == false){
  1972 + include_once (dirname(__FILE__)."/../pacotes/phpxbase/api_conversion.php");
  1973 + $db = xbase_create($nomeshp.".dbf", $def);
  1974 + }
  1975 + else
  1976 + {$db = dbase_create($nomeshp.".dbf", $def);}
  1977 + $dbname = $nomeshp.".dbf";
  1978 + $reg = array();
  1979 + $novoshpf = ms_newShapefileObj($nomeshp.".shp", $conv[$tipol["st_dimension"]]);
  1980 + $cols = $dados["colunas"];
  1981 + $nc = count($dados["colunas"]);
  1982 + foreach($dados["linhas"] as $l){
  1983 + $reg = array();
  1984 + for($i=0;$i<$nc;$i++){
  1985 + if($cols[$i]["type"] != "geometry" && $cols[$i]["type"] != "geography"){
  1986 + $reg[] = $l[$i];
  1987 + }
  1988 + else{
  1989 + $reg[] = 0;
  1990 + if($cols[$i]["field"] == $regiao["colunageo"]){
  1991 + $shape = ms_shapeObjFromWkt($l[$i]);
  1992 + }
  1993 + }
  1994 + }
  1995 + $novoshpf->addShape($shape);
  1996 + if($dbaseExiste == false){
  1997 + xbase_add_record($db,$reg);
  1998 + }
  1999 + else{
  2000 + dbase_add_record($db,$reg);
  2001 + }
  2002 + }
  2003 + if($this->dbaseExiste == false){
  2004 + xbase_close($db);
  2005 + }
  2006 + else{
  2007 + dbase_close($db);
  2008 + }
  2009 + return $nomeshp;
  2010 + }
  2011 + /*
  2012 + * Testa se os elementos de um array sao numericos
  2013 + */
  2014 + function testaNumerico($valores){
  2015 + foreach ($valores as $valor) {
  2016 + if(!empty($valor) && !is_numeric($valor)) {
  2017 + echo "valor nao numerico";
  2018 + exit;
  2019 + }
  2020 + }
  2021 + }
  2022 +}
  2023 +?>
... ...
classesphp/classe_selecao.php
... ... @@ -594,7 +594,7 @@ $tipo - Tipo de opera&amp;ccedil;&amp;atilde;o adiciona|retira|inverte|limpa|novo
594 594 }
595 595 else
596 596 {
597   - error_reporting(0);
  597 + //error_reporting(0);
598 598 $projInObj = ms_newprojectionobj("proj=longlat,ellps=WGS84,datum=WGS84,no_defs");
599 599 $projOutObj = ms_newprojectionobj("proj=poly,ellps=GRS67,lat_0=0,lon_0=".$pt->x.",x_0=5000000,y_0=10000000");
600 600  
... ... @@ -664,6 +664,10 @@ Limpa a sele&amp;ccedil;&amp;atilde;o do tema.
664 664 if (file_exists($file)){
665 665 unlink ($file);
666 666 }
  667 + $file = dirname($this->arquivo)."/".$l->name."_qy.map";
  668 + if (file_exists($file)){
  669 + unlink ($file);
  670 + }
667 671 }
668 672 if (file_exists($this->qyfile)){
669 673 unlink ($this->qyfile);
... ... @@ -719,7 +723,7 @@ $shpi - Indices dos registros novos.
719 723 $shp_atual - Indices dos elementos j&aacute; selecionados.
720 724 */
721 725 function selecaoAdiciona($shpi,$shp_atual){
722   - error_reporting(0);
  726 + //error_reporting(0);
723 727 if(!$this->layer){
724 728 return "erro";
725 729 }
... ... @@ -870,7 +874,7 @@ parameters:
870 874 $tipo - Tipo de opera&ccedil;&atilde;o adiciona|retira|inverte|limpa|novo
871 875  
872 876 $ext - coordenadas separadas por espa&ccedil;os no estilo xmin ymin xmax ymax
873   -
  877 +
874 878 $retornaShapes - retorna os shapes selecionados. Nesse caso, nao e gerado o arquivo em disco contendo a selecao
875 879 */
876 880 function selecaoBOX($tipo,$ext,$retornaShapes=false) {
... ... @@ -922,7 +926,7 @@ $retornaShapes - retorna os shapes selecionados. Nesse caso, nao e gerado o arqu
922 926 }
923 927 else{
924 928 $shpi[] = $this->layer->getfeature($result->shapeindex,-1);
925   - }
  929 + }
926 930 }
927 931 }
928 932 }
... ... @@ -986,7 +990,7 @@ $geos - array com os dados
986 990 $distancia - distancia em metros
987 991 */
988 992 function projetaDistancia($shape,$distancia){
989   - error_reporting(0);
  993 + //error_reporting(0);
990 994 $pt = $shape->getCentroid();
991 995 $projInObj = ms_newprojectionobj("proj=longlat,ellps=WGS84,datum=WGS84,no_defs");
992 996 $projOutObj = ms_newprojectionobj("proj=poly,ellps=GRS67,lat_0=0,lon_0=".$pt->x.",x_0=5000000,y_0=10000000");
... ...
classesphp/classe_temas.php
... ... @@ -392,38 +392,37 @@ Parametros:
392 392  
393 393 lista - lista com a nova ordem para os temas. A lista cont&eacute;m os nomes dos temas separados por v&iacute;rgula.
394 394 */
395   - function reordenatemas($lista)
396   - {
  395 + function reordenatemas($lista){
  396 + //error_log("kkkk-------".$lista);
397 397 $nlayers = $this->mapa->numlayers;
398 398 $lista = explode(",",$lista);
399 399 $lista = array_reverse($lista);
400 400 $novaordem = array();
401   - foreach ($lista as $l)
402   - {
403   - for ($i=0;$i<$nlayers;++$i)
404   - {
  401 + foreach ($lista as $l){
  402 + for ($i=0;$i<$nlayers;++$i){
405 403 $la = $this->mapa->getlayer($i);
406   - if($la->getmetadata("escondido") != "")
407   - {
408   - if (!in_array($la->index,$novaordem))
409   - $novaordem[] = $i;
  404 + //$la->set("status",MS_DEFAULT);
  405 + if(strtolower($la->getmetadata("escondido")) == "sim") {
  406 + if (!in_array($la->index,$novaordem)){
  407 + $novaordem[] = $i;
  408 + //error_log("-------xxx".$la->name);
  409 + }
410 410 }
411   - else
412   - {
  411 + else{
413 412 $g = strtoupper($la->group);
414 413 $n = strtoupper($la->name);
415   - if ((strtoupper($l) == $n) || (strtoupper($l) == $g))
416   - {$novaordem[] = $i;}
  414 + if ((strtoupper($l) == $n) || (strtoupper($l) == $g)){
  415 + $novaordem[] = $i;
  416 + }
417 417 }
418 418 }
419 419 }
420   - for ($i=0;$i<$nlayers;++$i)
421   - {
422   - if (!in_array($i,$novaordem))
423   - {$novaordem[] = $i;}
  420 + //acrescenta os layers que ficaram de fora
  421 + for ($i=0;$i<$nlayers;++$i){
  422 + if (!in_array($i,$novaordem)){
  423 + $novaordem[] = $i;
  424 + }
424 425 }
425   - //echo "<pre>";
426   - //var_dump($novaordem);
427 426 $this->mapa->setlayersdrawingorder($novaordem);
428 427 return "ok";
429 428 }
... ...
classesphp/classe_toponimia.php
... ... @@ -180,7 +180,7 @@ Retorno:
180 180 */
181 181 function criaToponimia($item,$position,$partials,$offsetx,$offsety,$minfeaturesize,$mindistance,$force,$shadowcolor,$shadowsizex,$shadowsizey,$outlinecolor,$cor,$sombray,$sombrax,$sombra,$fundo,$angulo,$tamanho,$fonte,$tipo,$wrap,$novotema="sim")
182 182 {
183   - error_reporting(0);
  183 + //error_reporting(0);
184 184 if(!$this->layer){return "erro";}
185 185 $this->removeToponimia();
186 186  
... ...
classesphp/funcoes_gerais.php
... ... @@ -406,10 +406,10 @@ function listaArquivos($diretorio,$seguro=false,$permitido=array(&quot;png&quot;,&quot;PNG&quot;,&quot;jp
406 406 {
407 407 if ($nd != "." && $nd != ".."){
408 408 $ext = explode(".",$nd);
409   - if (count($ext)>1){
  409 + if (count($ext) == 2){
410 410 if($seguro == true){
411 411 $buscar = $ext[1];
412   - //$permitido = array("png","PNG","jpg","JPG","tif","tiff","TIF","TIFF","shp","SHP","img");
  412 + $permitido = array("tif","tiff","TIF","TIFF","shp","SHP","img");
413 413 if(in_array($buscar,$permitido)){
414 414 $arqs[] = $nd;
415 415 $nomes[] = basename($nd);
... ... @@ -429,7 +429,7 @@ function listaArquivos($diretorio,$seguro=false,$permitido=array(&quot;png&quot;,&quot;PNG&quot;,&quot;jp
429 429 $exts[] = $ext[1];
430 430 }
431 431 }
432   - if (count($ext)==1){
  432 + if (count($ext)==1 && is_dir($diretorio."/".$nd)){
433 433 $dirs[] = $nd;
434 434 }
435 435 }
... ... @@ -536,7 +536,7 @@ Retorno:
536 536 */
537 537 function substituiCon($map_file,$postgis_mapa)
538 538 {
539   - error_reporting(0);
  539 + //error_reporting(0);
540 540 if (!empty($postgis_mapa) && (file_exists($map_file)))
541 541 {
542 542 if(!@ms_newMapObj($map_file)){return false;}
... ... @@ -571,7 +571,7 @@ function substituiCon($map_file,$postgis_mapa)
571 571 return true;
572 572 }
573 573 function substituiConObj($objMap,$postgis_mapa){
574   - error_reporting(0);
  574 + //error_reporting(0);
575 575 if (!empty($postgis_mapa)){
576 576 $numlayers = $objMap->numlayers;
577 577 for ($i=0;$i < $numlayers;++$i)
... ... @@ -2561,7 +2561,7 @@ $a {string}
2561 2561 function echojson($a)
2562 2562 {
2563 2563 //ob_clean();
2564   - error_reporting(0);
  2564 + //error_reporting(0);
2565 2565 ob_end_clean();
2566 2566 //if(extension_loaded('zlib'))
2567 2567 //{ob_start('ob_gzhandler');}
... ... @@ -2851,7 +2851,7 @@ $salva - salva o mapfile com os layers removidos ou nao
2851 2851 Retorno: boolean indicando se o mapfile contem layers indevidos
2852 2852 */
2853 2853 function validaAcessoTemas($map_file,$salva = true){
2854   - error_reporting(0);
  2854 + //error_reporting(0);
2855 2855 $indevidos = listaLayersIndevidos($map_file);
2856 2856 $existeIndevidos = false;
2857 2857 if(count($indevidos) > 0){
... ... @@ -2884,7 +2884,7 @@ O retorno e um array com a chave sendo o codigo do tema e o valor um array com a
2884 2884 function listaTemasRestritos(){
2885 2885 global $esquemaadmin;
2886 2886 include_once(dirname(__FILE__)."/../admin/php/admin.php");
2887   - error_reporting(0);
  2887 + //error_reporting(0);
2888 2888 $res = pegaDados("select id_grupo,codigo_tema from ".$esquemaadmin."i3geousr_grupotema as gt,".$esquemaadmin."i3geoadmin_temas as te where gt.id_tema = te.id_tema");
2889 2889 $restritos = array();
2890 2890 foreach ($res as $r){
... ... @@ -2903,7 +2903,7 @@ Function: listaLayersIndevidos
2903 2903 Lista os layers de um mapfile que sao restritos e que nao sao permitidos ao usuario logado
2904 2904 */
2905 2905 function listaLayersIndevidos($map_file){
2906   - error_reporting(0);
  2906 + //error_reporting(0);
2907 2907 $indevidos = array();
2908 2908 $restritos = listaTemasRestritos();
2909 2909 if(count($restritos) > 0){
... ... @@ -2947,7 +2947,7 @@ Function: listaTemasIndevidos
2947 2947 Lista os temas que sao restritos e que nao sao permitidos ao usuario logado
2948 2948 */
2949 2949 function listaTemasIndevidos(){
2950   - error_reporting(0);
  2950 + //error_reporting(0);
2951 2951 $indevidos = array();
2952 2952 $restritos = listaTemasRestritos();
2953 2953 if(count($restritos) > 0){
... ... @@ -2969,7 +2969,7 @@ Function: listaGruposUsrLogin
2969 2969 Lista os grupos ao qual pertence o usuario atualmente logado
2970 2970 */
2971 2971 function listaGruposUsrLogin(){
2972   - error_reporting(0);
  2972 + //error_reporting(0);
2973 2973 //echo $_COOKIE["i3geocodigologin"];exit;
2974 2974 if(empty($_COOKIE["i3geocodigologin"])){
2975 2975 return array();
... ... @@ -3135,7 +3135,7 @@ function pegaDadosAdminKey($sql,$subsEsquema){
3135 3135 $resultado = array();
3136 3136 include(dirname(__FILE__)."/../admin/php/conexao.php");
3137 3137 $sql = str_replace($subsEsquema,$esquemaadmin,$sql);
3138   - error_reporting(0);
  3138 + //error_reporting(0);
3139 3139 $q = $dbh->query($sql,PDO::FETCH_ASSOC);
3140 3140 if($q){
3141 3141 $resultado = $q->fetchAll( PDO::FETCH_GROUP| PDO::FETCH_UNIQUE);
... ...
classesphp/mapa_controle.php
... ... @@ -100,7 +100,7 @@ imgdir - localiza&amp;ccedil;&amp;atilde;o, no servidor, das imagens tempor&amp;aacute;rias
100 100 debug - (pode ser definido como "sim" indica se o erro_reporting deve ser definido como E_ALL
101 101 contadorsalva - indica quantas vezes o mapa j&aacute; foi salvo. Permite que uma aplica&ccedil;&atilde;o verifique se o mapa foi alterado ou n&atilde;o.
102 102 */
103   -error_reporting(0);
  103 +//error_reporting(0);
104 104  
105 105 //sleep(5);
106 106  
... ... @@ -108,7 +108,6 @@ error_reporting(0);
108 108 //pega as variaveis passadas com get ou post
109 109 //
110 110 $tempo = microtime(1);
111   -
112 111 include_once("sani_request.php");
113 112 $_pg = array_merge($_GET,$_POST);
114 113  
... ... @@ -133,6 +132,7 @@ if ($funcao != &quot;listaEpsg&quot; &amp;&amp; $funcao != &quot;pegaTodosTemas&quot; &amp;&amp; $funcao != &quot;downloa
133 132 $imgurl = $_SESSION["imgurl"];
134 133 $tmpurl = $_SESSION["tmpurl"];
135 134 $map_file = $_SESSION["map_file"];
  135 + //error_log($map_file);
136 136 $mapext = $_SESSION["mapext"];
137 137 $dir_tmp = $_SESSION["dir_tmp"] ;
138 138 $cachedir = $_SESSION["cachedir"];
... ... @@ -191,7 +191,7 @@ if(isset($interfaceTemp) &amp;&amp; $interfaceTemp != &quot;&quot;){
191 191 $_SESSION["interface"] = $interfaceTemp;
192 192 $interface = $interfaceTemp;
193 193 }
194   -error_reporting(0);
  194 +//error_reporting(0);
195 195 //
196 196 //teste de timeout
197 197 //
... ... @@ -211,7 +211,10 @@ if(isset($logExec) &amp;&amp; $logExec[&quot;controle&quot;] == true){
211 211 if($funcao == "criaMapa"){
212 212 session_name("i3GeoPHP");
213 213 unset($GLOBALS);
214   - session_destroy();
  214 + if(session_status() == PHP_SESSION_ACTIVE){
  215 + //error_log("--------------Apagando a session");
  216 + session_destroy();
  217 + }
215 218 $_COOKIE = array();
216 219 //
217 220 //primeiro &eacute; necess&aacute;rio carregar o ms_configura.php para pegar a vari&aacute;vel $locaplic
... ... @@ -240,13 +243,12 @@ if (!isset($map_file))
240 243 //$cp->set_data(array("erro"=>"linkquebrado"));
241 244 //$cp->return_data();
242 245 //cpjson(array("erro"=>"linkquebrado"));
243   - ilegal();
244 246 exit;
245 247 }
246 248  
247 249 include_once("classe_vermultilayer.php");
248 250 include_once("classe_estatistica.php");
249   -error_reporting(0);
  251 +//error_reporting(0);
250 252 //
251 253 //identifica qual a url do i3geo
252 254 //
... ... @@ -595,45 +597,51 @@ switch (strtoupper($funcao))
595 597 <Mapa->adicionaTemaSHP>
596 598 */
597 599 case "ADICIONATEMASHP":
598   - include_once("classe_mapa.php");
599   - copiaSeguranca($map_file);
600   - $m = new Mapa($map_file);
601   - //valida o caminho do arquivo shapefile
602   - $nome = explode("/",$_pg["arq"]);
603   - $nome = $nome[0];
604   - if(empty($nome)){
605   - $retorno = "erro";
606   - }
607   - else{
608   - //remove o nome do caminho
609   - $novo = explode("/",$_pg["arq"]);
610   - $novo[0] = "";
611   - $_pg["arq"] = implode("/",$novo);
612   - //
613   - include(dirname(__FILE__)."/../ms_configura.php");
614   - $d = $navegadoresLocais[0]["drives"];
615   - $p = "";
616   - foreach($d as $n){
617   - if($n["nome"] == $nome){
618   - $p = $n["caminho"];
619   - }
  600 + if(!empty($navegadoresLocais)){
  601 + //verifica se est&aacute; cadastrado
  602 + $ipcliente = pegaIPcliente();
  603 + $retorno = array();
  604 + $ips = array();
  605 + //pega os nomes de cada ip
  606 + include("../ms_configura.php");
  607 + foreach ($navegadoresLocais["ips"] as $n){
  608 + $ips[] = gethostbyname($n);
  609 + $ips[] = $n;
620 610 }
621   - if($p != "" && file_exists($p)){
622   -
623   - $retorno = $m->adicionaTemaSHP($p."/".$_pg["arq"]);
624   - if ($retorno != "erro") {
625   - $m->salva();$_SESSION["contadorsalva"]++;redesenhaMapa();
  611 + if(in_array($ipcliente,$ips)){
  612 + $drives = $navegadoresLocais["drives"];
  613 + //pega o caminho
  614 + //nome
  615 + $split = explode("/",$_pg["arq"]);
  616 + if(empty($split[0]) || !in_array($split[0],array_keys($drives))){
  617 + $retorno = array();
626 618 }
627 619 else{
628   - $retorno = "erro.Nenhum dado espacializado foi encontrado.";
629   - }
630 620  
631   - }
632   - else{
633   - $retorno = "erro";
  621 + include_once("classe_mapa.php");
  622 + copiaSeguranca($map_file);
  623 + $m = new Mapa($map_file);
  624 + $path = $split[0];
  625 + $split[0] = "";
  626 + $shp = implode("/",$split);
  627 + $shp = explode(".",$shp)[0].".shp";
  628 + $path = $drives[$path] . $shp;
  629 +
  630 + $retorno = $m->adicionaTemaSHP($path);
  631 + if ($retorno != "erro") {
  632 + $m->salva();
  633 + $_SESSION["contadorsalva"]++;
  634 + redesenhaMapa();
  635 + }
  636 + else{
  637 + $retorno = "erro.Nenhum dado espacializado foi encontrado.";
  638 + }
  639 + }
  640 + } else {
  641 + $retorno = array();
634 642 }
635 643 }
636   - break;
  644 + break;
637 645 /*
638 646 Valor: ADICIONATEMAIMG
639 647  
... ... @@ -642,17 +650,48 @@ switch (strtoupper($funcao))
642 650 <Mapa->adicionaTemaIMG>
643 651 */
644 652 case "ADICIONATEMAIMG":
645   - include_once("classe_mapa.php");
646   - copiaSeguranca($map_file);
647   - $m = new Mapa($map_file);
648   - $retorno = $m->adicionaTemaIMG($_pg["arq"]);
649   - if ($retorno != "erro")
650   - {
651   - $m->salva();$_SESSION["contadorsalva"]++;redesenhaMapa();
652   - }
653   - else
654   - {
655   - $retorno = "erro.Nenhum dado espacializado foi encontrado.";
  653 + if(!empty($navegadoresLocais)){
  654 + //verifica se est&aacute; cadastrado
  655 + $ipcliente = pegaIPcliente();
  656 + $retorno = array();
  657 + $ips = array();
  658 + //pega os nomes de cada ip
  659 + include("../ms_configura.php");
  660 + foreach ($navegadoresLocais["ips"] as $n){
  661 + $ips[] = gethostbyname($n);
  662 + $ips[] = $n;
  663 + }
  664 + if(in_array($ipcliente,$ips)){
  665 + $drives = $navegadoresLocais["drives"];
  666 + //pega o caminho
  667 + //nome
  668 + $split = explode("/",$_pg["arq"]);
  669 + if(empty($split[0]) || !in_array($split[0],array_keys($drives))){
  670 + $retorno = array();
  671 + }
  672 + else{
  673 +
  674 + include_once("classe_mapa.php");
  675 + copiaSeguranca($map_file);
  676 + $m = new Mapa($map_file);
  677 + $path = $split[0];
  678 + $split[0] = "";
  679 + $shp = implode("/",$split);
  680 + $path = $drives[$path] . $shp;
  681 + error_log($path);
  682 + $retorno = $m->adicionaTemaIMG($path);
  683 + if ($retorno != "erro") {
  684 + $m->salva();
  685 + $_SESSION["contadorsalva"]++;
  686 + redesenhaMapa();
  687 + }
  688 + else{
  689 + $retorno = "erro.Nenhum dado espacializado foi encontrado.";
  690 + }
  691 + }
  692 + } else {
  693 + $retorno = array();
  694 + }
656 695 }
657 696 break;
658 697 /*
... ... @@ -1734,9 +1773,8 @@ switch (strtoupper($funcao))
1734 1773 $editores = $_pg["editores"];
1735 1774 $perfil = $_pg["perfil"];
1736 1775 $idioma = $_pg["idioma"];
1737   -
1738 1776 $m = new Menutemas($map_file,$perfil,$locaplic,$urli3geo,$editores,$idioma);
1739   - $retorno = $m->procurartemasestrela($nivel,$fatorestrela);
  1777 + $retorno = $m->procurartemasestrela($_pg["nivel"],$_pg["fatorestrela"]);
1740 1778 break;
1741 1779 /*
1742 1780 Valor: PEGAMAPAS
... ... @@ -2092,6 +2130,7 @@ switch (strtoupper($funcao))
2092 2130 }
2093 2131 }
2094 2132 }
  2133 +
2095 2134 $retorno = $m->listaRegistros($itemtema,$tipo,$unico,$inicio,$fim,$tipolista,$dadosDaClasse);
2096 2135 $retorno["legenda"] = $legenda;
2097 2136 break;
... ... @@ -2427,6 +2466,19 @@ switch (strtoupper($funcao))
2427 2466 }
2428 2467 $retorno = $r;
2429 2468 break;
  2469 + case "CRIALEGENDAJSON":
  2470 + include_once("classe_legenda.php");
  2471 + //para efeitos de compatibilidade com vers&otilde;es anteriores
  2472 + if(isset($_pg["template"])){
  2473 + $_pg["templateLegenda"] = $_pg["template"];
  2474 + }
  2475 + $m = new Legenda($map_file,$locaplic,$_pg["tema"]);
  2476 + $r = $m->criaLegendaJson($_pg["w"],$_pg["h"]);
  2477 + if(!$r){
  2478 + $r = "erro. Legenda nao disponivel";
  2479 + }
  2480 + $retorno = $r;
  2481 + break;
2430 2482 /*
2431 2483 Valor: CRIALEGENDAIMAGEM
2432 2484  
... ... @@ -2543,26 +2595,6 @@ switch (strtoupper($funcao))
2543 2595 $retorno = $googleApiKey;
2544 2596 break;
2545 2597 /*
2546   - Valor: LISTADRIVES
2547   -
2548   - Pega a lista de drives registrados para o usu&aacute;rio atual.
2549   -
2550   - A lista de drives &eacute; definida no ms_configura e permite que o usu&aacute;rio navegue pelos arquivos do servidor.
2551   - */
2552   - case "LISTADRIVES":
2553   - include(dirname(__FILE__)."/../ms_configura.php");
2554   - //verifica se est&aacute; cadastrado
2555   - $ipcliente = pegaIPcliente();
2556   - $retorno = array();
2557   - foreach ($navegadoresLocais as $n)
2558   - {
2559   - if (gethostbyname($n["ip"]) == $ipcliente)
2560   - {
2561   - $retorno[] = $n["drives"];
2562   - }
2563   - }
2564   - break;
2565   - /*
2566 2598 Valor: LISTAINTERFACES
2567 2599  
2568 2600 Lista as interfaces de abertura de mapas
... ...
classesphp/mapa_googleearth.php
... ... @@ -37,7 +37,7 @@ i3geo/classesphp/mapa_googleearth.php
37 37 */
38 38 include("sani_request.php");
39 39 //error_reporting(0);
40   -error_reporting(0);
  40 +//error_reporting(0);
41 41 //para efeitos de compatibilidade
42 42 if (!function_exists('ms_GetVersion')){
43 43 include_once ("carrega_ext.php");
... ... @@ -103,7 +103,7 @@ function retornaKml(){
103 103 echo $kml;
104 104 }
105 105 function retornaWms($map_fileX,$postgis_mapa){
106   - error_reporting(0);
  106 + //error_reporting(0);
107 107 if(isset($_GET["bbox"]))
108 108 {$_GET["BBOX"] = $_GET["bbox"];}
109 109 if(isset($_GET["BBOX"]))
... ...
classesphp/mapa_googlemaps.php
... ... @@ -60,7 +60,7 @@ i3geo/classesphp/mapa_googlemaps.php
60 60  
61 61 */
62 62 //error_reporting(0);
63   -error_reporting(0);
  63 +//error_reporting(0);
64 64 include("sani_request.php");
65 65 //para efeitos de compatibilidade
66 66 if (!function_exists('ms_GetVersion')){
... ...
classesphp/mapa_inicia.php
... ... @@ -119,7 +119,7 @@ function iniciaMapa()
119 119 if(!isset($kmlurl)){
120 120 $kmlurl = "";
121 121 }
122   - error_reporting(0);
  122 + //error_reporting(0);
123 123 if(!isset($interface)){
124 124 $interface = "";
125 125 }
... ... @@ -191,7 +191,7 @@ function iniciaMapa()
191 191 $urli3geo = str_replace("/classesphp/mapa_controle.php","",$protocolo.$_SERVER["PHP_SELF"]);
192 192 //altera o tamanho do query map para ficar igual ao do mapa
193 193 include_once("classe_mapa.php");
194   - error_reporting(0);
  194 + //error_reporting(0);
195 195 if(!function_exists("sobeAnno")){
196 196 include_once("funcoes_gerais.php");
197 197 }
... ... @@ -203,7 +203,7 @@ function iniciaMapa()
203 203 $m = new Mapa($map_file);
204 204 $m->mapa->setsize($w,$h);
205 205 }
206   - error_reporting(0);
  206 + //error_reporting(0);
207 207 //
208 208 //verifica se a legenda deve ser embebida no mapa
209 209 //
... ...
classesphp/mapa_openlayers.php
... ... @@ -64,7 +64,7 @@ include(&quot;sani_request.php&quot;);
64 64 if (!function_exists('ms_GetVersion')){
65 65 include_once ("carrega_ext.php");
66 66 }
67   -error_reporting(0);
  67 +//error_reporting(0);
68 68 inicializa();
69 69 //
70 70 //calcula a extensao geografica com base no x,y,z
... ... @@ -295,6 +295,10 @@ if(isset($_GET[&quot;map_size&quot;])){
295 295  
296 296 if(isset($_GET["mapext"])){
297 297 $mapext = explode(" ",$_GET["mapext"]);
  298 + //para evitar erro quando o mapa e continuo
  299 + if($mapext[0] == $mapext[2] && $mapext[1] == $mapext[3]){
  300 + exit;
  301 + }
298 302 $mapa->setExtent($mapext[0],$mapext[1],$mapext[2],$mapext[3]);
299 303 }
300 304 //
... ...
classesphp/metaestat_controle.php 0 → 100755
... ... @@ -0,0 +1,199 @@
  1 +<?php
  2 +//
  3 +//o aplicativo que abre a janela para acesso a lista de variaveis, nao necessita da variavel de sessao
  4 +//
  5 +
  6 +include ("sani_request.php");
  7 +$_pg = array_merge ( $_GET, $_POST );
  8 +$funcao = $_pg ["funcao"];
  9 +$g_sid = $_pg ["g_sid"];
  10 +
  11 +if (empty ( $g_sid ) && strtoupper($funcao) != "LISTAVARIAVEL") {
  12 + exit ();
  13 +}
  14 +if(!empty ( $g_sid )){
  15 + session_name ( "i3GeoPHP" );
  16 + session_id ( $g_sid );
  17 + session_start ();
  18 + $perfil = $_SESSION ["perfil"];
  19 + $_pg ["perfil"] = $perfil;
  20 + $map_file = $_SESSION ["map_file"];
  21 + if (! file_exists ( $map_file )) {
  22 + exit ();
  23 + }
  24 +}
  25 +include (dirname ( __FILE__ ) . "/carrega_ext.php");
  26 +if (! function_exists ( "sobeAnno" )) {
  27 + include (dirname ( __FILE__ ) . "/funcoes_gerais.php");
  28 +}
  29 +if (! isset ( $map_file ) && strtoupper($funcao) != "LISTAVARIAVEL") {
  30 + ilegal ();
  31 + exit ();
  32 +}
  33 +include (dirname ( __FILE__ ) . "/../ms_configura.php");
  34 +include (dirname ( __FILE__ ) . "/classe_metaestatinfo.php");
  35 +$retorno = "";
  36 +
  37 +switch (strtoupper ( $funcao )) {
  38 + case "LISTATIPOREGIAO" :
  39 + $m = new MetaestatInfo ();
  40 + $retorno = $m->listaTipoRegiao ( $_pg ["codigo_tipo_regiao"], false );
  41 + retornaJSON ( $retorno );
  42 + exit ();
  43 + break;
  44 + case "LISTAVARIAVEL" :
  45 + $m = new MetaestatInfo ();
  46 + if (empty ( $_pg ["filtro_esquema"] )) {
  47 + $_pg ["filtro_esquema"] = "";
  48 + }
  49 + retornaJSON ( $m->listaVariavel ( $_pg ["codigo_variavel"], $_pg ["filtro_esquema"] ) );
  50 + exit ();
  51 + break;
  52 + case "LISTAMEDIDAVARIAVEL" :
  53 + $m = new MetaestatInfo ();
  54 + retornaJSON ( $m->listaMedidaVariavel ( $_pg ["codigo_variavel"], $_pg ["id_medida_variavel"] ) );
  55 + exit ();
  56 + break;
  57 + case "LISTAPARAMETRO" :
  58 + $m = new MetaestatInfo ();
  59 + retornaJSON ( $m->listaParametro ( $_pg ["id_medida_variavel"], $_pg ["id_parametro_medida"] ) );
  60 + exit ();
  61 + break;
  62 + case "LISTAVALORESPARAMETRO" :
  63 + $m = new MetaestatInfo ();
  64 + retornaJSON ( $m->listaValoresParametro ( $_pg ["id_parametro_medida"] ) );
  65 + exit ();
  66 + break;
  67 + case "LISTAUNIDADEMEDIDA" :
  68 + $m = new MetaestatInfo ();
  69 + retornaJSON ( $m->listaUnidadeMedida ( $_pg ["codigo_unidade_medida"] ) );
  70 + exit ();
  71 + break;
  72 + case "LISTAFONTEINFO" :
  73 + $m = new MetaestatInfo ();
  74 + retornaJSON ( $m->listaFonteinfo ( $_pg ["id_fonteinfo"] ) );
  75 + exit ();
  76 + break;
  77 + case "LISTAFONTEINFOMEDIDA" :
  78 + $m = new MetaestatInfo ();
  79 + retornaJSON ( $m->listaFonteinfoMedida ( $_pg ["id_medida_variavel"] ) );
  80 + exit ();
  81 + break;
  82 + case "LISTATIPOPERIODO" :
  83 + $m = new MetaestatInfo ();
  84 + retornaJSON ( $m->listaTipoPeriodo ( $_pg ["codigo_tipo_periodo"] ) );
  85 + exit ();
  86 + break;
  87 + case "LISTATIPOREGIAO" :
  88 + $m = new MetaestatInfo ();
  89 + retornaJSON ( $m->listaTipoRegiao ( $_pg ["codigo_tipo_regiao"] ) );
  90 + exit ();
  91 + break;
  92 + case "LISTAHIERARQUIAREGIOES" :
  93 + $m = new MetaestatInfo ();
  94 + $regioes = $m->listaHierarquiaRegioes ( $_pg ["codigo_tipo_regiao"] );
  95 + $valores = "";
  96 + // se achou apenas uma regiao, pega os valores
  97 + if (count ( $regioes ) < 2 && $_pg ["codigo_tipo_regiao"] != "") {
  98 + $valores = $m->listaDadosRegiao ( $_pg ["codigo_tipo_regiao"], $_pg ["codigoregiaopai"], $_pg ["valorregiaopai"] );
  99 + }
  100 + retornaJSON ( array (
  101 + "regiaopai" => $_pg ["codigo_tipo_regiao"],
  102 + "regioes" => $regioes,
  103 + "valores" => $valores
  104 + ) );
  105 + exit ();
  106 + break;
  107 + case "LISTAREGIOESMEDIDA" :
  108 + $m = new MetaestatInfo ();
  109 + retornaJSON ( $m->listaRegioesMedida ( $_pg ["id_medida_variavel"] ) );
  110 + exit ();
  111 + break;
  112 + case "LISTAAGREGAREGIAO" :
  113 + $m = new MetaestatInfo ();
  114 + if (empty ( $_pg ["codigo_tipo_regiao"] )) {
  115 + $_pg ["codigo_tipo_regiao"] = "";
  116 + }
  117 + retornaJSON ( $m->listaAgregaRegiao ( $_pg ["codigo_tipo_regiao"], $_pg ["id_agregaregiao"] ) );
  118 + exit ();
  119 + case "LISTAMAPAS" :
  120 + $m = new MetaestatInfo ();
  121 + if (empty ( $_pg ["id_mapa"] )) {
  122 + $_pg ["id_mapa"] = "";
  123 + }
  124 + retornaJSON ( $m->listaMapas ( $_pg ["id_mapa"] ) );
  125 + exit ();
  126 + break;
  127 + case "LISTAGRUPOSMAPA" :
  128 + $m = new MetaestatInfo ();
  129 + retornaJSON ( $m->listaGruposMapa ( $_pg ["id_mapa"], $_pg ["id_mapa_grupo"] ) );
  130 + exit ();
  131 + break;
  132 + case "LISTATEMASMAPA" :
  133 + $m = new MetaestatInfo ();
  134 + retornaJSON ( $m->listaTemasMapa ( $_pg ["id_mapa_grupo"], $_pg ["id_mapa_tema"] ) );
  135 + exit ();
  136 + break;
  137 + // lista os templates que o usuario pode escolher para publicar mapas
  138 + // a pasta com alista e definida na variavel $metaestatTemplates localizada no ms_configura.php
  139 + case "LISTATEMPLATESMAPA" :
  140 + if (empty ( $metaestatTemplates )) {
  141 + $d = dirname ( __FILE__ ) . "/../../ferramentas/metaestat/templates";
  142 + } else {
  143 + $d = $locaplic . $metaestatTemplates;
  144 + }
  145 + $arq = listaArquivos ( $d );
  146 + $arq ["metaestatTemplates"] = $metaestatTemplates;
  147 + retornaJSON ( $arq );
  148 + exit ();
  149 + break;
  150 + // lista os logos que o usuario pode escolher para publicar mapas
  151 + // a pasta com alista e definida na variavel $metaestatTemplates/logos localizada no ms_configura.php
  152 + case "LISTALOGOSMAPA" :
  153 + if (empty ( $metaestatTemplates )) {
  154 + $metaestatTemplates = dirname ( __FILE__ ) . "/../../ferramentas/metaestat/templates";
  155 + } else {
  156 + $metaestatTemplates = $locaplic . $metaestatTemplates;
  157 + }
  158 + retornaJSON ( listaArquivos ( $metaestatTemplates . "/logos" ) );
  159 + exit ();
  160 + break;
  161 + case "LISTACLASSIFICACAOMEDIDA" :
  162 + $m = new MetaestatInfo ();
  163 + retornaJSON ( $m->listaClassificacaoMedida ( $_pg ["id_medida_variavel"], $_pg ["id_classificacao"] ) );
  164 + exit ();
  165 + break;
  166 + case "MAPFILEMEDIDAVARIAVEL" :
  167 + // $filtro usa aspas duplas para enviar os parametros
  168 + $_pg["filtro"] = str_replace ( '"', "'", $_pg ["filtro"] );
  169 + $m = new MetaestatInfo ();
  170 + if (! isset ( $_pg["codigo_tipo_regiao"] )) {
  171 + $_pg["codigo_tipo_regiao"] = "";
  172 + }
  173 + if (! isset ( $_pg["opacidade"] )) {
  174 + $_pg["opacidade"] = "";
  175 + }
  176 + if ($_pg["cachemapfile"] === "nao") {
  177 + $_pg["cachemapfile"] = false;
  178 + } else {
  179 + $_pg["cachemapfile"] = true;
  180 + }
  181 + if ($_pg["formato"] == "json") {
  182 + retornaJSON ( $m->mapfileMedidaVariavel ( $_pg["id_medida_variavel"], $_pg["filtro"], $_GET ["todasascolunas"], $_GET ["tipolayer"], $_GET ["titulolayer"], $_pg["id_classificacao"], $_GET ["agruparpor"], $_pg["codigo_tipo_regiao"], $_GET ["opacidade"], false, $_GET ["cachemapfile"] ) );
  183 + }
  184 + exit ();
  185 + break;
  186 +}
  187 +function retornaJSON($obj) {
  188 + global $locaplic;
  189 + include_once ($locaplic . "/pacotes/cpaint/JSON/json2.php");
  190 + //error_reporting ( 0 );
  191 + ob_end_clean ();
  192 + $j = new Services_JSON ();
  193 + $texto = $j->encode ( $obj );
  194 + if (! mb_detect_encoding ( $texto, "UTF-8", true )) {
  195 + $texto = utf8_encode ( $texto );
  196 + }
  197 + echo $texto;
  198 +}
  199 +?>
... ...
classesphp/parse_cgi.php
... ... @@ -51,7 +51,7 @@ Exemplo:
51 51  
52 52 http://localhost/i3geo/classesphp/parse_cgi.php?g_sid=dgge4877dhhhgrjjey&map_size=500 500
53 53 */
54   -error_reporting(0);
  54 +//error_reporting(0);
55 55 include_once (dirname(__FILE__)."/classesphp/sani_request.php");
56 56 $_GET = array_merge($_GET,$_POST);
57 57 include_once ("carrega_ext.php");
... ...
classesphp/sani_request.php
... ... @@ -2,7 +2,7 @@
2 2 if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME'])){
3 3 exit;
4 4 }
5   -error_reporting(0);
  5 +//error_reporting(0);
6 6 $bl = array("exec ","exec(","password","select","_decode","passthru","shell_exec","escapeshellarg","escapeshellcmd","proc_close","proc_open","dl","popen","contents","delete","drop","update","insert","system",";");
7 7 if (isset($_GET)){
8 8 foreach(array_keys($_GET) as $k) {
... ...
classesphp/wmswfs.php
... ... @@ -57,7 +57,7 @@ function gravaCacheWMS($servico)
57 57 if($dir_tmp == ""){
58 58 include(dirname(__FILE__)."/../ms_configura.php");
59 59 }
60   - error_reporting(0);
  60 + //error_reporting(0);
61 61 try{
62 62 $teste = explode("=",$servico);
63 63 if ( count($teste) > 1 ){
... ... @@ -483,7 +483,7 @@ function listaLayersWMS()
483 483 include_once(dirname(__FILE__)."/../admin/php/admin.php");
484 484 include_once(dirname(__FILE__)."/../admin/php/webservices.php");
485 485  
486   - error_reporting(0);
  486 + //error_reporting(0);
487 487 if($tipo_ws != "WMSMETAESTAT" && $nivel < 2){
488 488 if($wms_service_request == "erro") {
489 489 //registra a tentativa de acesso
... ... @@ -591,7 +591,7 @@ function imprimeTag($r,$retorna)
591 591 }
592 592 function pegaTag($layer)
593 593 {
594   - error_reporting(0);
  594 + //error_reporting(0);
595 595 $noslayer = $layer->childNodes;
596 596 $resultado = array(
597 597 "estiloas" => array(),
... ...
classesphp/wscliente.php
... ... @@ -52,6 +52,7 @@ include_once(&quot;lews/wms_functions.php&quot;);
52 52 include_once(dirname(__FILE__)."/../pacotes/cpaint/cpaint2.inc.php");
53 53 include_once("carrega_ext.php");
54 54 include(dirname(__FILE__)."/../ms_configura.php");
  55 +
55 56 $cp = new cpaint();
56 57  
57 58 $onlineresource = $_GET["onlineresource"];
... ... @@ -64,6 +65,7 @@ $rss = $_GET[&quot;rss&quot;];
64 65 //busca o getcapabilities de um wms
65 66 //
66 67 $funcao = $_GET["funcao"];
  68 +
67 69 if ($funcao == "getcapabilities")
68 70 {
69 71 $cp->register('getcapabilities');
... ... @@ -379,9 +381,7 @@ if ($funcao == &quot;listaRSSws&quot;)
379 381 {
380 382 $cp->register('listaRSSws');
381 383 $cp->start();
382   - if(ob_get_contents ()){
383   - ob_end_clean();
384   - }
  384 + ob_clean;
385 385 $cp->return_data();
386 386 exit;
387 387 }
... ... @@ -493,6 +493,7 @@ Retorno:
493 493 function listaRSSwsARRAY()
494 494 {
495 495 global $cp,$rss,$locaplic,$tipo;
  496 +
496 497 if(!isset($tipo)){$tipo = "GEORSS";}
497 498 include_once("$locaplic/classesphp/funcoes_gerais.php");
498 499 include_once("$locaplic/admin/php/xml.php");
... ...
css/black.css
... ... @@ -199,7 +199,7 @@ Botao de ligar desligar do tipo chave da arvore de camadas
199 199 #i3GEOcopyright {
200 200 position: absolute;
201 201 left: 10px;
202   - top: 2.8em;
  202 + top: 5px;
203 203 display: block;
204 204 }
205 205 #buscaRapidaGuia {
... ... @@ -259,11 +259,11 @@ no caso do OL3
259 259 }
260 260  
261 261 .ol-zoom {
262   - top: 3.8em;
  262 + top: 2.8em;
263 263 }
264 264  
265 265 .ol-i3GEOcontrols {
266   - top: 3.8em;
  266 + top: 2.8em;
267 267 left: 3em;
268 268 width: auto;
269 269 }
... ...
css/default.css 0 → 100644
... ... @@ -0,0 +1,390 @@
  1 +/*
  2 +Para Bootstrap
  3 +*/
  4 +a, a:focus, a:hover {
  5 + color: #008579;
  6 +}
  7 +.alert.alert-warning {
  8 + background-color: #de3601;
  9 +}
  10 +.form-group.form-group-lg label.control-label {
  11 + color: #767676;
  12 +}
  13 +.form-group.form-group-lg .checkbox label, .form-group.form-group-lg .radio label,
  14 + .form-group.form-group-lg label {
  15 + color: #767676;
  16 +}
  17 +.label, label {
  18 + color: #767676;
  19 +}
  20 +
  21 +h2 small {
  22 + color: #767676;
  23 +}
  24 +a .material-icons, a:focus .material-icons, a:hover .material-icons {
  25 + margin-top: 4px;
  26 +}
  27 +
  28 +hr {
  29 + margin: 0px;
  30 +}
  31 +
  32 +.list-group.condensed {
  33 + margin: 4px;
  34 +}
  35 +
  36 +.radio span, label.radio-inline span {
  37 + top: 4px;
  38 +}
  39 +/*Caso a camada tenha selecat*/
  40 +.camadaSelecionada {
  41 + color: #4bd5d5 !Important;
  42 +}
  43 +/**************************/
  44 +#i3GEOguiaMovel {
  45 + position: absolute;
  46 + display: block;
  47 + border: 0px solid white;
  48 + text-align: left;
  49 + z-index: 20000;
  50 + left: auto;
  51 + right: 2px;
  52 + top: 5px;
  53 + width: 350px;
  54 +}
  55 +#i3GEOguiaMovelMolde {
  56 + background-color: white;
  57 + right:0px;
  58 + top: -5px;
  59 + box-shadow: 0 2px 10px 0 #888888;
  60 + position: absolute;
  61 + display: none;
  62 + border: 0px solid white;
  63 + text-align: left;
  64 + z-index: 10000;
  65 +}
  66 +#i3GEOguiaMovelConteudo {
  67 + width:345px;
  68 + top: 0px;
  69 + overflow: auto;
  70 + display: none;
  71 + position: absolute;
  72 + border-color: gray;
  73 + border-width: 0px 0 0px 0px;
  74 + left: 0px;
  75 + height: 0px;
  76 + padding-left: 4px;
  77 + background-color: white;
  78 +}
  79 +
  80 +.nomeTema {
  81 + width: 265px;
  82 + vertical-align: middle;
  83 +}
  84 +/**************************/
  85 +.i3GEOtemaComSel {
  86 + border-bottom: 1px solid cyan;
  87 +}
  88 +
  89 +.i3GEOfechaGuia {
  90 + cursor: pointer;
  91 + left: 0px;
  92 + top: 0px;
  93 + width: 95%;
  94 + min-height: 30px;
  95 + text-align: right;
  96 + font-size: 14pt;
  97 + margin-bottom: 10px;
  98 + padding: 2px;
  99 + font-family: Verdana, Arial, Helvetica, sans-serif;
  100 +}
  101 +/*
  102 +botoes da legenda
  103 +*/
  104 +#legendaOpcoes button, #legendaOpcoes .yui-button, #legendaOpcoes .yuimenu {
  105 + width: 250px;
  106 + color: black;
  107 + border-radius : 0px;
  108 +}
  109 +#legendaOpcoes a {
  110 + color: black;
  111 +}
  112 +#legendaOpcoes .yui-button {
  113 + background-image : none;
  114 + border-radius : 0px;
  115 +}
  116 +#legendaOpcoes .first-child{
  117 + border-radius : 0px;
  118 +}
  119 +
  120 +.i3GEOcorpoLegi {
  121 + min-height:200px;
  122 +}
  123 +
  124 +#corpoLegi {
  125 + overflow: hidden;
  126 +}
  127 +
  128 +/*
  129 +Botao de ligar desligar do tipo chave da legenda
  130 +*/
  131 +
  132 +.i3GEOcorpoLegi .temaSwitch {
  133 + position: relative;
  134 + display: inline-block;
  135 + width: 30px;
  136 + height: 14px;
  137 +}
  138 +
  139 +.i3GEOcorpoLegi .temaSwitch input {
  140 + display:none;
  141 +}
  142 +
  143 +.i3GEOcorpoLegi .temaSlider {
  144 + position: absolute;
  145 + cursor: pointer;
  146 + top: 0;
  147 + left: 0;
  148 + right: 0;
  149 + bottom: 0;
  150 + background-color: #ccc;
  151 +}
  152 +
  153 +.i3GEOcorpoLegi .temaSlider:before {
  154 + position: absolute;
  155 + content: "";
  156 + height: 12px;
  157 + width: 12px;
  158 + left: 1px;
  159 + bottom: 1px;
  160 + background-color: white;
  161 + -webkit-box-shadow: -1px 1px 3px -0px rgba(0, 0, 0, 0.46);
  162 + -moz-box-shadow: -1px 1px 3px -0px rgba(0, 0, 0, 0.46);
  163 + box-shadow: -1px 1px 3px -0px rgba(0, 0, 0, 0.46);
  164 +}
  165 +
  166 +.i3GEOcorpoLegi input:checked + .temaSlider {
  167 + background-color: rgb(177, 205, 205);
  168 +}
  169 +
  170 +.i3GEOcorpoLegi input:focus + .temaSlider {
  171 + box-shadow: 0 0 1px rgb(224, 235, 235);
  172 +}
  173 +
  174 +.i3GEOcorpoLegi input:checked + .temaSlider:before {
  175 + -webkit-transform: translateX(16px);
  176 + -ms-transform: translateX(16px);
  177 + transform: translateX(16px);
  178 +}
  179 +
  180 +.i3GEOcorpoLegi .temaSlider.round {
  181 + border-radius: 34px;
  182 +}
  183 +
  184 +.i3GEOcorpoLegi .temaSlider.round:before {
  185 + border-radius: 50%;
  186 +}
  187 +
  188 +.legendaTema {
  189 + font-size: 12px;
  190 + text-align: left;
  191 +}
  192 +.legendaTema label {
  193 + margin-left: 0px;
  194 +}
  195 +.i3GEOLegendaExcluiTema {
  196 + display: inline;
  197 +}
  198 +
  199 +/**/
  200 +#i3GEOcopyright {
  201 + position: absolute;
  202 + left: 10px;
  203 + top: 5px;
  204 + display: block;
  205 +}
  206 +#buscaRapidaGuia {
  207 + margin: 5px;
  208 +}
  209 +#buscaRapidaGuia p {
  210 + font-size: 1.2em;
  211 + line-height: 1.2;
  212 + margin-top: 1em;
  213 +}
  214 +
  215 +/*
  216 +Barra de botoes de edicao vetorial do openlayers
  217 +*/
  218 +
  219 +/*
  220 +no caso do OL3
  221 +*/
  222 +.ol-overlaycontainer-stopevent .olControlEditingToolbar1 {
  223 + left: auto;
  224 + position: absolute;
  225 + right: 0;
  226 + top: 10px;
  227 +}
  228 +
  229 +.ol-zoom {
  230 + top: 2.8em;
  231 +}
  232 +
  233 +.ol-i3GEOcontrols {
  234 + top: 2.8em;
  235 + left: 3em;
  236 + width: auto;
  237 +}
  238 +
  239 +.ol-touch .ol-zoomslider, .ol-zoomslider {
  240 + top: 8.2em;
  241 +}
  242 +
  243 +.ol-scale-line {
  244 + bottom: 2em;
  245 +}
  246 +
  247 +.olControlEditingToolbar1 div {
  248 + background-image: url(../mashups/openlayers.png);
  249 + background-repeat: no-repeat;
  250 + float: right;
  251 + right: 50px;
  252 + height: 29px;
  253 + margin: 2px;
  254 + width: 29px;
  255 + cursor: pointer;
  256 + top: 30px;
  257 +}
  258 +
  259 +/*
  260 +Configuracoes especificas dos elementos que ficam no rodape
  261 +*/
  262 +#seletorIdiomas {
  263 + float: right;
  264 +}
  265 +
  266 +#escala {
  267 + width: 100px;
  268 + left: 7px;
  269 + text-align: left;
  270 + position: absolute;
  271 + bottom: 0px;
  272 + display: block;
  273 +}
  274 +#escala td {
  275 + float: left;
  276 +}
  277 +#escala span {
  278 + border: 0px solid white;
  279 +}
  280 +#escala input {
  281 + background: rgba(0, 60, 136, 0.5);
  282 + color: white;
  283 + font-family: Verdana,Arial,Helvetica,sans-serif;
  284 + font-size: 1em;
  285 + margin: 0;
  286 + border: 0px solid white;
  287 + box-shadow: none;
  288 + text-align: center;
  289 + height: 1.8em;
  290 +}
  291 +#i3GEOcompartilhar {
  292 + border: 0px solid white;
  293 + z-index: 20000;
  294 +}
  295 +#i3GEOcompartilhar td {
  296 + background: rgba(0, 60, 136, 0.5);
  297 +}
  298 +.i3GeoMascaraCoord {
  299 + width: 100%;
  300 +}
  301 +.i3GeoMascaraCoord td {
  302 + background: rgba(0, 60, 136, 0.5);
  303 + color: white;
  304 +}
  305 +.i3GeoMascaraCoord input {
  306 + background: rgba(0, 60, 136, 0.5);
  307 + color: white;
  308 + font-family: Verdana,Arial,Helvetica,sans-serif;
  309 + font-size: 1em;
  310 + margin: 0;
  311 + border: 0px solid white;
  312 + box-shadow: none;
  313 +}
  314 +.i3GeoMascaraCoord span {
  315 + border: 0px solid white;
  316 +}
  317 +.contemCaixaTipoCoord {
  318 + overflow: hidden;
  319 + width: 4em;
  320 + background-color: rgba(0, 60, 136, 0.5);
  321 +}
  322 +.i3GeoMascaraCoord select {
  323 + border: 0px solid #B4B4B4;
  324 + left: 0px;
  325 + width: 4em;
  326 + background-color: rgba(0, 60, 136, 0.5);
  327 + box-shadow: none !important;
  328 + opacity: 0.8 !important;
  329 + color: white;
  330 + height: auto;
  331 +}
  332 +.i3GeoMascaraCoord tr {
  333 + border: 0px solid white;
  334 +}
  335 +#localizarxy {
  336 + z-index : 50;
  337 + color: white;
  338 + position: absolute;
  339 + bottom: 0px;
  340 + width: 450px;
  341 + left: auto;
  342 + right: 0px;
  343 + text-align: left;
  344 + font-size: 1em;
  345 + display: inline;
  346 + height: 1.8em;
  347 +}
  348 +#localizarxy input, #localizarxy select {
  349 + font-size: 1em;
  350 + height: 1.8em;
  351 +}
  352 +
  353 +
  354 +#menuajudaMenu{
  355 + color: white;
  356 +}
  357 +.comboTemasCabecalho .yuimenuitemlabel{
  358 + color: black;
  359 +}
  360 +.comboTemasCabecalho .yuimenuitemlabel:visited{
  361 + color: black;
  362 +}
  363 +
  364 +.temaArrastar {
  365 + text-align: left;
  366 +}
  367 +@media print {
  368 + -webkit-print-color-adjust:exact;
  369 +}
  370 +/* === For phones =================================== */
  371 +@media ( max-width : 767px) {
  372 +#i3GEOguiaMovel {
  373 + width: 100%;
  374 +}
  375 +#i3GEOguiaMovelConteudo {
  376 + width:95%;
  377 +}
  378 +.nomeTema {
  379 + width: 235px;
  380 + vertical-align: middle;
  381 +}
  382 +/* === For tablets ================================== */
  383 +@media ( min-width : 768px) and (max-width:991px) {
  384 +
  385 +}
  386 +
  387 +/* === For desktops ================================== */
  388 +@media ( min-width : 992px) {
  389 +
  390 +}
0 391 \ No newline at end of file
... ...
css/geral.css
... ... @@ -652,7 +652,6 @@ A:hover {
652 652 img {
653 653 border: 0px solid #FFFFFF;
654 654 border-width: 0;
655   - cursor: pointer
656 655 }
657 656  
658 657 table {
... ... @@ -664,7 +663,6 @@ table {
664 663 }
665 664  
666 665 div {
667   - text-align: center;
668 666 border: 0px solid #FFFFFF;
669 667 font-family: Verdana, Arial, Helvetica, sans-serif;
670 668 position: relative;
... ... @@ -676,12 +674,7 @@ i {
676 674 font-family: Verdana, Arial, Helvetica, sans-serif;
677 675 }
678 676  
679   -P {
680   - COLOR: #2F4632;
681   - text-align: center;
682   - font-size: 10px;
683   - font-family: Verdana, Arial, Helvetica, sans-serif;
684   -}
  677 +
685 678  
686 679 H1 {
687 680 COLOR: #2F4632;
... ... @@ -1401,40 +1394,7 @@ h1 {
1401 1394 background-size: 16px 144px;
1402 1395 }
1403 1396 }
1404   -#i3GEOguiaMovel {
1405   - position: absolute;
1406   - display: block;
1407   - border: 0px solid white;
1408   - text-align: left;
1409   - z-index: 20000;
1410   - left: auto;
1411   - right: 2px;
1412   - top: 50px;
1413   - width: 350px;
1414   -}
1415   -#i3GEOguiaMovelMolde {
1416   - background-color: white;
1417   - right:0px;
1418   - top: -50px;
1419   - box-shadow: 0 2px 10px 0 #888888;
1420   - position: absolute;
1421   - display: none;
1422   - border: 0px solid white;
1423   - text-align: left;
1424   - z-index: 10000;
1425   -}
1426   -#i3GEOguiaMovelConteudo {
1427   - width:345px;
1428   - top: 0px;
1429   - overflow: auto;
1430   - display: none;
1431   - position: absolute;
1432   - border-color: gray;
1433   - border-width: 0px 0 0px 0px;
1434   - left: 0px;
1435   - height: 0px;
1436   - padding-left: 4px;
1437   -}
  1397 +
1438 1398 /* esconde na impressao */
1439 1399 @media print {
1440 1400 .noprint {
... ... @@ -1464,10 +1424,22 @@ h1 {
1464 1424 #i3GEOcompartilhar {
1465 1425 display: none !important;
1466 1426 }
1467   - #i3GEOguiaMovel {
  1427 + .iconesGuiaMovel {
1468 1428 display: none !important;
1469 1429 }
1470 1430 #localizarxy {
1471 1431 display: none !important;
1472 1432 }
  1433 + .i3GEOfechaGuia {
  1434 + display: none !important;
  1435 + }
  1436 + input[type="radio"] {
  1437 + display: none !important;
  1438 + }
  1439 + input[type="checkbox"] {
  1440 + display: none !important;
  1441 + }
  1442 + .legenda > label + input[type="checkbox"]:disabled {
  1443 + display: none !important;
  1444 + }
1473 1445 }
... ...
css/i3geo6.css.php
1   -<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/css"); ?>input{
  1 +<?php //error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/css"); ?>input{
2 2 font-family: Verdana, Arial, Helvetica, sans-serif;
3 3 }
4 4 input[type=text], textarea, input[type=number]{
... ...
css/i3geo7.css
... ... @@ -8,8 +8,7 @@ input[type=text], textarea, input[type=number]{
8 8 -o-user-select: text;
9 9 user-select: text;
10 10 }
11   -input[type=text] {
12   -font-size: 10px;
  11 +.bd input[type=text] {
13 12 color: #2F4632;
14 13 background-color: rgb(250, 250, 250);
15 14 padding: 0;
... ... @@ -849,7 +848,6 @@ outline : none;
849 848 img {
850 849 border: 0px solid #FFFFFF;
851 850 border-width: 0;
852   -cursor: pointer
853 851 }
854 852 table {
855 853 text-align: center;
... ... @@ -859,7 +857,6 @@ margin: 0px;
859 857 font-family: Verdana, Arial, Helvetica, sans-serif;
860 858 }
861 859 div {
862   -text-align: center;
863 860 border: 0px solid #FFFFFF;
864 861 font-family: Verdana, Arial, Helvetica, sans-serif;
865 862 position: relative;
... ... @@ -869,12 +866,6 @@ color: #660000;
869 866 BACKGROUND-COLOR: #ffffcc;
870 867 font-family: Verdana, Arial, Helvetica, sans-serif;
871 868 }
872   -P {
873   -COLOR: #2F4632;
874   -text-align: center;
875   -font-size: 10px;
876   -font-family: Verdana, Arial, Helvetica, sans-serif;
877   -}
878 869 H1 {
879 870 COLOR: #2F4632;
880 871 text-align: left;
... ... @@ -1514,40 +1505,6 @@ background: transparent url(&quot;../imagens/menuarodwn8_nrm_1.gif&quot;) no-repeat scroll
1514 1505 background-size: 16px 144px;
1515 1506 }
1516 1507 }
1517   -#i3GEOguiaMovel {
1518   -position: absolute;
1519   -display: block;
1520   -border: 0px solid white;
1521   -text-align: left;
1522   -z-index: 20000;
1523   -left: auto;
1524   -right: 2px;
1525   -top: 50px;
1526   -width: 350px;
1527   -}
1528   -#i3GEOguiaMovelMolde {
1529   -background-color: white;
1530   -right:0px;
1531   -top: -50px;
1532   -box-shadow: 0 2px 10px 0 #888888;
1533   -position: absolute;
1534   -display: none;
1535   -border: 0px solid white;
1536   -text-align: left;
1537   -z-index: 10000;
1538   -}
1539   -#i3GEOguiaMovelConteudo {
1540   -width:345px;
1541   -top: 0px;
1542   -overflow: auto;
1543   -display: none;
1544   -position: absolute;
1545   -border-color: gray;
1546   -border-width: 0px 0 0px 0px;
1547   -left: 0px;
1548   -height: 0px;
1549   -padding-left: 4px;
1550   -}
1551 1508 /* esconde na impressao */
1552 1509 @media print {
1553 1510 .noprint {
... ... @@ -1577,12 +1534,24 @@ display: none !important;
1577 1534 #i3GEOcompartilhar {
1578 1535 display: none !important;
1579 1536 }
1580   -#i3GEOguiaMovel {
  1537 +.iconesGuiaMovel {
1581 1538 display: none !important;
1582 1539 }
1583 1540 #localizarxy {
1584 1541 display: none !important;
1585 1542 }
  1543 +.i3GEOfechaGuia {
  1544 +display: none !important;
  1545 +}
  1546 +input[type="radio"] {
  1547 +display: none !important;
  1548 +}
  1549 +input[type="checkbox"] {
  1550 +display: none !important;
  1551 +}
  1552 +.legenda > label + input[type="checkbox"]:disabled {
  1553 +display: none !important;
  1554 +}
1586 1555 }
1587 1556 #abreJanelaLegenda,#localizar,#barraedicao,#abregoogleearth,#uploadgpx,#metar,#carouselTemas,#identificaBalao,#rota,#buscafotos,#area,#confluence,#scielo,#wiki,#inseregrafico,#realca,#reinicia,#google,#zoomtot,#pan,#zoomli,#zoomlo,#zoomiauto,#zoomoauto,#identifica,#lentei,#reinicia,#exten,#selecao,#inserexy,#textofid,#mede,#perfil,#cruza,#tamanho,#imprimir,#salva,#carrega,#referencia,#pegaimagens,#v3d
1588 1557 {
... ...
css/i3geo7.css.php
1   -<?php error_reporting(0);if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/css"); ?>input{
  1 +<?php header("Content-type: text/css"); ?>input{
2 2 font-family: Verdana, Arial, Helvetica, sans-serif;
3 3 }
4 4 input[type=text], textarea, input[type=number]{
... ... @@ -8,8 +8,7 @@ input[type=text], textarea, input[type=number]{
8 8 -o-user-select: text;
9 9 user-select: text;
10 10 }
11   -input[type=text] {
12   -font-size: 10px;
  11 +.bd input[type=text] {
13 12 color: #2F4632;
14 13 background-color: rgb(250, 250, 250);
15 14 padding: 0;
... ... @@ -849,7 +848,6 @@ outline : none;
849 848 img {
850 849 border: 0px solid #FFFFFF;
851 850 border-width: 0;
852   -cursor: pointer
853 851 }
854 852 table {
855 853 text-align: center;
... ... @@ -859,7 +857,6 @@ margin: 0px;
859 857 font-family: Verdana, Arial, Helvetica, sans-serif;
860 858 }
861 859 div {
862   -text-align: center;
863 860 border: 0px solid #FFFFFF;
864 861 font-family: Verdana, Arial, Helvetica, sans-serif;
865 862 position: relative;
... ... @@ -869,12 +866,6 @@ color: #660000;
869 866 BACKGROUND-COLOR: #ffffcc;
870 867 font-family: Verdana, Arial, Helvetica, sans-serif;
871 868 }
872   -P {
873   -COLOR: #2F4632;
874   -text-align: center;
875   -font-size: 10px;
876   -font-family: Verdana, Arial, Helvetica, sans-serif;
877   -}
878 869 H1 {
879 870 COLOR: #2F4632;
880 871 text-align: left;
... ... @@ -1514,40 +1505,6 @@ background: transparent url(&quot;../imagens/menuarodwn8_nrm_1.gif&quot;) no-repeat scroll
1514 1505 background-size: 16px 144px;
1515 1506 }
1516 1507 }
1517   -#i3GEOguiaMovel {
1518   -position: absolute;
1519   -display: block;
1520   -border: 0px solid white;
1521   -text-align: left;
1522   -z-index: 20000;
1523   -left: auto;
1524   -right: 2px;
1525   -top: 50px;
1526   -width: 350px;
1527   -}
1528   -#i3GEOguiaMovelMolde {
1529   -background-color: white;
1530   -right:0px;
1531   -top: -50px;
1532   -box-shadow: 0 2px 10px 0 #888888;
1533   -position: absolute;
1534   -display: none;
1535   -border: 0px solid white;
1536   -text-align: left;
1537   -z-index: 10000;
1538   -}
1539   -#i3GEOguiaMovelConteudo {
1540   -width:345px;
1541   -top: 0px;
1542   -overflow: auto;
1543   -display: none;
1544   -position: absolute;
1545   -border-color: gray;
1546   -border-width: 0px 0 0px 0px;
1547   -left: 0px;
1548   -height: 0px;
1549   -padding-left: 4px;
1550   -}
1551 1508 /* esconde na impressao */
1552 1509 @media print {
1553 1510 .noprint {
... ... @@ -1577,12 +1534,24 @@ display: none !important;
1577 1534 #i3GEOcompartilhar {
1578 1535 display: none !important;
1579 1536 }
1580   -#i3GEOguiaMovel {
  1537 +.iconesGuiaMovel {
1581 1538 display: none !important;
1582 1539 }
1583 1540 #localizarxy {
1584 1541 display: none !important;
1585 1542 }
  1543 +.i3GEOfechaGuia {
  1544 +display: none !important;
  1545 +}
  1546 +input[type="radio"] {
  1547 +display: none !important;
  1548 +}
  1549 +input[type="checkbox"] {
  1550 +display: none !important;
  1551 +}
  1552 +.legenda > label + input[type="checkbox"]:disabled {
  1553 +display: none !important;
  1554 +}
1586 1555 }
1587 1556 #abreJanelaLegenda,#localizar,#barraedicao,#abregoogleearth,#uploadgpx,#metar,#carouselTemas,#identificaBalao,#rota,#buscafotos,#area,#confluence,#scielo,#wiki,#inseregrafico,#realca,#reinicia,#google,#zoomtot,#pan,#zoomli,#zoomlo,#zoomiauto,#zoomoauto,#identifica,#lentei,#reinicia,#exten,#selecao,#inserexy,#textofid,#mede,#perfil,#cruza,#tamanho,#imprimir,#salva,#carrega,#referencia,#pegaimagens,#v3d
1588 1557 {
... ...
css/i3geo_ferramentas7.css
... ... @@ -9,8 +9,7 @@ input[type=text], textarea, input[type=number]{
9 9 user-select: text;
10 10 }
11 11  
12   -input[type=text] {
13   - font-size: 10px;
  12 +.bd input[type=text] {
14 13 color: #2F4632;
15 14 background-color: rgb(250, 250, 250);
16 15 padding: 0;
... ... @@ -942,7 +941,6 @@ A:hover {
942 941 img {
943 942 border: 0px solid #FFFFFF;
944 943 border-width: 0;
945   - cursor: pointer
946 944 }
947 945  
948 946 table {
... ... @@ -954,7 +952,6 @@ table {
954 952 }
955 953  
956 954 div {
957   - text-align: center;
958 955 border: 0px solid #FFFFFF;
959 956 font-family: Verdana, Arial, Helvetica, sans-serif;
960 957 position: relative;
... ... @@ -966,12 +963,7 @@ i {
966 963 font-family: Verdana, Arial, Helvetica, sans-serif;
967 964 }
968 965  
969   -P {
970   - COLOR: #2F4632;
971   - text-align: center;
972   - font-size: 10px;
973   - font-family: Verdana, Arial, Helvetica, sans-serif;
974   -}
  966 +
975 967  
976 968 H1 {
977 969 COLOR: #2F4632;
... ... @@ -1691,40 +1683,7 @@ h1 {
1691 1683 background-size: 16px 144px;
1692 1684 }
1693 1685 }
1694   -#i3GEOguiaMovel {
1695   - position: absolute;
1696   - display: block;
1697   - border: 0px solid white;
1698   - text-align: left;
1699   - z-index: 20000;
1700   - left: auto;
1701   - right: 2px;
1702   - top: 50px;
1703   - width: 350px;
1704   -}
1705   -#i3GEOguiaMovelMolde {
1706   - background-color: white;
1707   - right:0px;
1708   - top: -50px;
1709   - box-shadow: 0 2px 10px 0 #888888;
1710   - position: absolute;
1711   - display: none;
1712   - border: 0px solid white;
1713   - text-align: left;
1714   - z-index: 10000;
1715   -}
1716   -#i3GEOguiaMovelConteudo {
1717   - width:345px;
1718   - top: 0px;
1719   - overflow: auto;
1720   - display: none;
1721   - position: absolute;
1722   - border-color: gray;
1723   - border-width: 0px 0 0px 0px;
1724   - left: 0px;
1725   - height: 0px;
1726   - padding-left: 4px;
1727   -}
  1686 +
1728 1687 /* esconde na impressao */
1729 1688 @media print {
1730 1689 .noprint {
... ... @@ -1754,12 +1713,24 @@ h1 {
1754 1713 #i3GEOcompartilhar {
1755 1714 display: none !important;
1756 1715 }
1757   - #i3GEOguiaMovel {
  1716 + .iconesGuiaMovel {
1758 1717 display: none !important;
1759 1718 }
1760 1719 #localizarxy {
1761 1720 display: none !important;
1762 1721 }
  1722 + .i3GEOfechaGuia {
  1723 + display: none !important;
  1724 + }
  1725 + input[type="radio"] {
  1726 + display: none !important;
  1727 + }
  1728 + input[type="checkbox"] {
  1729 + display: none !important;
  1730 + }
  1731 + .legenda > label + input[type="checkbox"]:disabled {
  1732 + display: none !important;
  1733 + }
1763 1734 }
1764 1735  
1765 1736 /*
... ...
css/input.css
... ... @@ -9,8 +9,7 @@ input[type=text], textarea, input[type=number]{
9 9 user-select: text;
10 10 }
11 11  
12   -input[type=text] {
13   - font-size: 10px;
  12 +.bd input[type=text] {
14 13 color: #2F4632;
15 14 background-color: rgb(250, 250, 250);
16 15 padding: 0;
... ...
exemplos/index.php
1 1 <?php
2 2 define ( "ONDEI3GEO", ".." );
3 3 include (dirname ( __FILE__ ) . "/../ms_configura.php");
4   -error_reporting ( 0 );
  4 +//error_reporting ( 0 );
5 5 include "../init/head.php";
6 6 ?>
7 7 <style>
... ...
ferramentas/3d/3d.php
... ... @@ -3,7 +3,7 @@
3 3 return;
4 4 require_once("../../classesphp/pega_variaveis.php");
5 5 require_once("../../classesphp/carrega_ext.php");
6   -error_reporting(0);
  6 +//error_reporting(0);
7 7 set_time_limit(120);
8 8 if (isset($g_sid))
9 9 {session_id($g_sid);}
... ...
ferramentas/animagif/exec.php
... ... @@ -203,7 +203,7 @@ for ($i=0;$i &lt; $numlayers;$i++){
203 203 if (!empty($postgis_mapa)){
204 204 if ($layern->connectiontype == MS_POSTGIS){
205 205 $lcon = $layern->connection;
206   - error_reporting(0);
  206 + //error_reporting(0);
207 207 if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){
208 208 if(($lcon == " ") || ($lcon == "")){
209 209 $layern->set("connection",$postgis_mapa);
... ...
ferramentas/animagif/manutencao.php
... ... @@ -12,7 +12,7 @@ if(in_array(strtoupper($funcao),$funcoesEdicao)){
12 12 }
13 13 }
14 14 $tema = $_POST["tema"];
15   -error_reporting(0);
  15 +//error_reporting(0);
16 16 //
17 17 //faz a busca da fun&ccedil;&atilde;o que deve ser executada
18 18 //
... ...
ferramentas/aplicarsld/upload.php
... ... @@ -2,7 +2,7 @@
2 2 include_once (dirname(__FILE__)."/../../classesphp/sani_request.php");
3 3 require_once(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
4 4 include_once (dirname(__FILE__)."/../../classesphp/carrega_ext.php");
5   -error_reporting(0);
  5 +//error_reporting(0);
6 6 $_GET = array_merge($_GET,$_POST);
7 7 session_name("i3GeoPHP");
8 8 if (isset($_GET["g_sid"]))
... ...
ferramentas/buscafotos/funcoes.php
1 1 <?php
2   -error_reporting(0);
  2 +//error_reporting(0);
3 3 include_once (dirname(__FILE__)."/../../classesphp/sani_request.php");
4 4 $_GET = array_merge($_GET,$_POST);
5 5 require_once(dirname(__FILE__)."/../../pacotes/cpaint/cpaint2.inc.php");
... ... @@ -7,7 +7,7 @@ require_once(dirname(__FILE__).&quot;/../../ms_configura.php&quot;);
7 7 include("../blacklist.php");
8 8 verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false);
9 9 require_once(dirname(__FILE__)."/../../pacotes/phpflickr/phpFlickr.php");
10   -error_reporting(0);
  10 +//error_reporting(0);
11 11  
12 12  
13 13 $funcao = $_GET["funcao"];
... ...
ferramentas/importarwmc/upload.php
1 1 <?php
2 2 require_once(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
3 3 include_once (dirname(__FILE__)."/../../classesphp/carrega_ext.php");
4   -error_reporting(0);
  4 +//error_reporting(0);
5 5 session_name("i3GeoPHP");
6 6 if (isset($_POST["g_sid"]))
7 7 {session_id($_POST["g_sid"]);}
... ... @@ -18,7 +18,7 @@ $map_file = $_SESSION[&quot;map_file&quot;];
18 18 <p>
19 19 <?php
20 20 include_once (dirname(__FILE__)."/../../classesphp/sani_request.php");
21   -error_reporting(0);
  21 +//error_reporting(0);
22 22 require_once (dirname(__FILE__)."/../../ms_configura.php");
23 23 include(dirname(__FILE__)."/../blacklist.php");
24 24 verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false);
... ...