Commit 78dd1b0409fcc7c7d87c2e225d87cfc961e1304d
1 parent
c971b67e
Exists in
master
and in
7 other branches
Modificaçõs no SAIKU para evitar a exposição do XML com o esquema dos cubos
Showing
12 changed files
with
246 additions
and
138 deletions
Show diff stats
admin/php/editormapfile.php
@@ -300,7 +300,7 @@ switch (strtoupper($funcao)) | @@ -300,7 +300,7 @@ switch (strtoupper($funcao)) | ||
300 | $dirs[] = $d."/".$nome; | 300 | $dirs[] = $d."/".$nome; |
301 | $dirs[] = $d."/googlemaps/".$nome; | 301 | $dirs[] = $d."/googlemaps/".$nome; |
302 | foreach($dirs as $dir){ | 302 | foreach($dirs as $dir){ |
303 | - rrmdir($dir); | 303 | + rename($dir,$dir."_removido"); |
304 | } | 304 | } |
305 | } | 305 | } |
306 | retornaJSON("ok"); | 306 | retornaJSON("ok"); |
@@ -2568,20 +2568,24 @@ function removeCabecalho($arq,$symbolset=true) | @@ -2568,20 +2568,24 @@ function removeCabecalho($arq,$symbolset=true) | ||
2568 | } | 2568 | } |
2569 | } | 2569 | } |
2570 | fclose($handle); | 2570 | fclose($handle); |
2571 | - chmod($arq, 0666); | 2571 | + //chmod($arq, 0666); |
2572 | } | 2572 | } |
2573 | function rrmdir($dir) { | 2573 | function rrmdir($dir) { |
2574 | if (is_dir($dir)) { | 2574 | if (is_dir($dir)) { |
2575 | - chmod($dir,0777); | 2575 | + //chmod($dir,0777); |
2576 | $objects = scandir($dir); | 2576 | $objects = scandir($dir); |
2577 | foreach ($objects as $object) { | 2577 | foreach ($objects as $object) { |
2578 | if ($object != "." && $object != "..") { | 2578 | if ($object != "." && $object != "..") { |
2579 | - chmod($dir."/".$object,0777); | ||
2580 | - if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); | 2579 | + //chmod($dir."/".$object,0777); |
2580 | + if (filetype($dir."/".$object) == "dir"){ | ||
2581 | + rrmdir($dir."/".$object); | ||
2582 | + } else { | ||
2583 | + rename($dir."/".$object,$dir."/".$object."_removido"); | ||
2584 | + } | ||
2581 | } | 2585 | } |
2582 | } | 2586 | } |
2583 | reset($objects); | 2587 | reset($objects); |
2584 | rmdir($dir); | 2588 | rmdir($dir); |
2585 | } | 2589 | } |
2586 | } | 2590 | } |
2587 | -?> | 2591 | +?> |
2588 | \ No newline at end of file | 2592 | \ No newline at end of file |
classesphp/classe_metaestatinfo.php
@@ -1210,7 +1210,7 @@ class MetaestatInfo{ | @@ -1210,7 +1210,7 @@ class MetaestatInfo{ | ||
1210 | * @param codigo da variavel | 1210 | * @param codigo da variavel |
1211 | * @param id da medida de variavel | 1211 | * @param id da medida de variavel |
1212 | */ | 1212 | */ |
1213 | - function listaMedidaVariavel($codigo_variavel,$id_medida_variavel=""){ | 1213 | + function listaMedidaVariavel($codigo_variavel="",$id_medida_variavel=""){ |
1214 | $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 "; | 1214 | $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 "; |
1215 | $sql .= "FROM ".$this->esquemaadmin."i3geoestat_variavel "; | 1215 | $sql .= "FROM ".$this->esquemaadmin."i3geoestat_variavel "; |
1216 | $sql .= "JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel "; | 1216 | $sql .= "JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel "; |
classesphp/funcoes_gerais.php
@@ -465,11 +465,13 @@ $arq {string} - Nome do arquivo que será gravado | @@ -465,11 +465,13 @@ $arq {string} - Nome do arquivo que será gravado | ||
465 | function gravaDados($dados,$arq) | 465 | function gravaDados($dados,$arq) |
466 | { | 466 | { |
467 | $fp = fopen($arq,"w"); | 467 | $fp = fopen($arq,"w"); |
468 | - foreach ($dados as $dado) | ||
469 | - { | ||
470 | - fwrite($fp,$dado."\n"); | 468 | + if($fp != false){ |
469 | + foreach ($dados as $dado) | ||
470 | + { | ||
471 | + fwrite($fp,$dado."\n"); | ||
472 | + } | ||
473 | + fclose($fp); | ||
471 | } | 474 | } |
472 | - fclose($fp); | ||
473 | } | 475 | } |
474 | /* | 476 | /* |
475 | Function: listaTrueType | 477 | Function: listaTrueType |
ferramentas/saiku/cartograma.php
1 | <?php | 1 | <?php |
2 | -exit; | ||
3 | if(empty($_POST["g_sid"])){ | 2 | if(empty($_POST["g_sid"])){ |
4 | echo "erro"; | 3 | echo "erro"; |
5 | exit; | 4 | exit; |
6 | } | 5 | } |
7 | include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); | 6 | include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); |
8 | -include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); | 7 | +//include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); |
8 | +include(dirname(__FILE__)."/../../classesphp/classe_metaestatinfo.php"); | ||
9 | include_once(dirname(__FILE__)."/../../classesphp/classe_estatistica.php"); | 9 | include_once(dirname(__FILE__)."/../../classesphp/classe_estatistica.php"); |
10 | if(!isset($dir_tmp)){ | 10 | if(!isset($dir_tmp)){ |
11 | include(dirname(__FILE__)."/../../ms_configura.php"); | 11 | include(dirname(__FILE__)."/../../ms_configura.php"); |
@@ -15,6 +15,9 @@ if(isset($statusFerramentas) && $statusFerramentas["saiku"] != true){ | @@ -15,6 +15,9 @@ if(isset($statusFerramentas) && $statusFerramentas["saiku"] != true){ | ||
15 | } | 15 | } |
16 | include(dirname(__FILE__)."/../blacklist.php"); | 16 | include(dirname(__FILE__)."/../blacklist.php"); |
17 | verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false); | 17 | verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false); |
18 | + | ||
19 | +//error_reporting(E_ALL); | ||
20 | + | ||
18 | //pega o filtro da sessao PHP aberta pelo i3Geo | 21 | //pega o filtro da sessao PHP aberta pelo i3Geo |
19 | session_name("i3GeoPHP"); | 22 | session_name("i3GeoPHP"); |
20 | session_id($_POST["g_sid"]); | 23 | session_id($_POST["g_sid"]); |
@@ -51,7 +54,7 @@ else{ | @@ -51,7 +54,7 @@ else{ | ||
51 | echo "Nao foi possivel determinar o codigo da regiao ou localidade no sistema Metaestat"; | 54 | echo "Nao foi possivel determinar o codigo da regiao ou localidade no sistema Metaestat"; |
52 | exit; | 55 | exit; |
53 | } | 56 | } |
54 | - $m = new Metaestat(); | 57 | + $m = new MetaestatInfo(); |
55 | 58 | ||
56 | $meta = $m->listaTipoRegiao($codigo_tipo_regiao); | 59 | $meta = $m->listaTipoRegiao($codigo_tipo_regiao); |
57 | $titulolayer = $meta["nome_tipo_regiao"]; | 60 | $titulolayer = $meta["nome_tipo_regiao"]; |
ferramentas/saiku/esquemaxml.php
1 | <?php | 1 | <?php |
2 | -/* | ||
3 | -Importante: | ||
4 | - | ||
5 | -A integração do SAIKU com o i3GEO é experimental. | ||
6 | - | ||
7 | -O SAIKU utiliza os arquivos de fonte de dados que sao criados de forma dinamica na pasta ms_tmp/saiku-datasources. | ||
8 | -Esses arquivos apontam para o arquivo XML com o esquema utilizado para construir os cubos, que tambem sao criados de forma dinamica. | ||
9 | -Como o SAIKU precisa ler esse arquivo XML, o mesmo deve ter permissoes de leitura de forma que o Apache consiga carregar esse arquivo XML. | ||
10 | -E importante destacar que ao fazer isso o arquivo xml fica exposto, o que pode permitir que um usuario qualquer tenha acesso a esse XML. | ||
11 | -Esse XML contem os SQL utilizados para acessar o banco de dados. Ao usar o SAIKU e necessario avaliar se essa caracteristica pode | ||
12 | -apresentar-se como um problema de seguranc | ||
13 | -*/ | ||
14 | -// | ||
15 | -//utilize &output=xml para ver o xml | ||
16 | -// | ||
17 | -//utilize &xmlesquema= caso o XML ja exista | ||
18 | -// | ||
19 | -//utilize $regiao para obter o xml de uma so regiao | ||
20 | -// | ||
21 | -/** | ||
22 | - http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=xml | ||
23 | - http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?xmlesquema=&output=xml®iao=1 | ||
24 | - */ | ||
25 | -// | ||
26 | -//remova essa linhas para poder usar o SAIKU | ||
27 | -// | ||
28 | -echo "Bloqueado. Consulte o administrador.";exit; | ||
29 | -// | ||
30 | -//quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas | ||
31 | -// | ||
32 | -criaMapfileInicial(); | ||
33 | - | ||
34 | include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); | 2 | include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); |
35 | -include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); | 3 | +//include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); |
4 | +include(dirname(__FILE__)."/../../classesphp/classe_metaestatinfo.php"); | ||
36 | if(!isset($dir_tmp)){ | 5 | if(!isset($dir_tmp)){ |
37 | include(dirname(__FILE__)."/../../ms_configura.php"); | 6 | include(dirname(__FILE__)."/../../ms_configura.php"); |
38 | } | 7 | } |
39 | if(isset($statusFerramentas) && $statusFerramentas["saiku"] != true){ | 8 | if(isset($statusFerramentas) && $statusFerramentas["saiku"] != true){ |
40 | exit; | 9 | exit; |
41 | } | 10 | } |
11 | +//testa pra ver se a requisicao esta vindo de um local autorizado | ||
12 | +if(parse_url($saikuUrl)["host"] != gethostbyaddr($_SERVER['REMOTE_ADDR'])){ | ||
13 | + echo "Servidor requisitante nao permitido"; | ||
14 | +} | ||
42 | $urlXmlEsquema = ""; | 15 | $urlXmlEsquema = ""; |
43 | -$nomeConexao = criaConexaoEsquema(); | ||
44 | - | ||
45 | -$map_file = $_SESSION["map_file"]; | ||
46 | - | ||
47 | -$arquivoXmlEsquema = dirname($map_file)."/".str_replace(".txt","",$nomeConexao).".xml"; | 16 | +/* |
17 | +if(empty($_GET["output"])){ | ||
18 | + $map_file = $_SESSION["map_file"]; | ||
19 | + $arquivoXmlEsquema = dirname($map_file)."/".str_replace(".txt","",$nomeConexao).".xml"; | ||
20 | +} | ||
48 | gravaDataSource(); | 21 | gravaDataSource(); |
49 | -if(!empty($_GET["xmlesquema"])){ | 22 | +if(!empty($_GET["output"])){ |
50 | imprimeEsquema(); | 23 | imprimeEsquema(); |
51 | } | 24 | } |
52 | -$m = new Metaestat(); | 25 | +*/ |
26 | +$m = new MetaestatInfo(); | ||
53 | 27 | ||
54 | // | 28 | // |
55 | //obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao | 29 | //obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao |
56 | // | 30 | // |
31 | +/* | ||
57 | if(empty($_GET["regiao"])){ | 32 | if(empty($_GET["regiao"])){ |
58 | $s = pegaSelecaoRegioes(); | 33 | $s = pegaSelecaoRegioes(); |
59 | $selecaoRegiao = $s["selecaoRegiao"]; | 34 | $selecaoRegiao = $s["selecaoRegiao"]; |
@@ -62,7 +37,6 @@ if(empty($_GET["regiao"])){ | @@ -62,7 +37,6 @@ if(empty($_GET["regiao"])){ | ||
62 | else{ | 37 | else{ |
63 | $codigo_tipo_regiao = $_GET["regiao"]; | 38 | $codigo_tipo_regiao = $_GET["regiao"]; |
64 | } | 39 | } |
65 | -//verifica se o cubo usa uma regiao especifica ou todas | ||
66 | if($codigo_tipo_regiao == ""){ | 40 | if($codigo_tipo_regiao == ""){ |
67 | $regioes = $m->listaTipoRegiao(); | 41 | $regioes = $m->listaTipoRegiao(); |
68 | } | 42 | } |
@@ -70,10 +44,7 @@ else{ | @@ -70,10 +44,7 @@ else{ | ||
70 | $regioes = array($m->listaTipoRegiao($codigo_tipo_regiao)); | 44 | $regioes = array($m->listaTipoRegiao($codigo_tipo_regiao)); |
71 | } | 45 | } |
72 | $s = ""; | 46 | $s = ""; |
73 | - | ||
74 | -if(empty($saikuConfigDataSource['tabelaDimensaoTempo'])){ | ||
75 | - $saikuConfigDataSource['tabelaDimensaoTempo'] = "i3geo_metaestat.dim_tempo"; | ||
76 | -} | 47 | +*/ |
77 | 48 | ||
78 | $medidas = $m->listaMedidaVariavel(); | 49 | $medidas = $m->listaMedidaVariavel(); |
79 | 50 | ||
@@ -85,9 +56,7 @@ $todasAsRegioes = $m->listaTipoRegiao(); | @@ -85,9 +56,7 @@ $todasAsRegioes = $m->listaTipoRegiao(); | ||
85 | foreach($todasAsRegioes as $R){ | 56 | foreach($todasAsRegioes as $R){ |
86 | $chavesRegiao[$R["codigo_tipo_regiao"]] = $R; | 57 | $chavesRegiao[$R["codigo_tipo_regiao"]] = $R; |
87 | } | 58 | } |
88 | - | ||
89 | //inicia montagem do XML | 59 | //inicia montagem do XML |
90 | - | ||
91 | // | 60 | // |
92 | //cria as dimensoes de tipo temporal | 61 | //cria as dimensoes de tipo temporal |
93 | // | 62 | // |
@@ -149,14 +118,16 @@ ob_end_clean(); | @@ -149,14 +118,16 @@ ob_end_clean(); | ||
149 | //grava os dados em um arquivo. O usuario pode evitar isso e imprimir direto na tela | 118 | //grava os dados em um arquivo. O usuario pode evitar isso e imprimir direto na tela |
150 | //usando output "xml" | 119 | //usando output "xml" |
151 | // | 120 | // |
152 | -if($_GET["output"] != "xml"){ | 121 | +/* |
122 | +if(empty($_GET["output"]) || (!empty($_GET["output"]) && $_GET["output"] != "xml")){ | ||
153 | gravaDados(array($xml),$arquivoXmlEsquema); | 123 | gravaDados(array($xml),$arquivoXmlEsquema); |
154 | } | 124 | } |
125 | +*/ | ||
155 | imprimeEsquema(); | 126 | imprimeEsquema(); |
156 | 127 | ||
157 | 128 | ||
158 | ////////////////////////////////////////////////////////////////////////////////////////// | 129 | ////////////////////////////////////////////////////////////////////////////////////////// |
159 | -function caminhoRegiao($hs,$chavesRegiao,$h,$regiaoInicial,$caminho) | 130 | +function caminhoRegiao($hs,$chavesRegiao,$h,$regiaoInicial,$caminho=array()) |
160 | { | 131 | { |
161 | foreach($hs as $n){ | 132 | foreach($hs as $n){ |
162 | if($n["codigo_tipo_regiao"] == $regiaoInicial){ | 133 | if($n["codigo_tipo_regiao"] == $regiaoInicial){ |
@@ -170,28 +141,20 @@ function caminhoRegiao($hs,$chavesRegiao,$h,$regiaoInicial,$caminho) | @@ -170,28 +141,20 @@ function caminhoRegiao($hs,$chavesRegiao,$h,$regiaoInicial,$caminho) | ||
170 | return $caminho; | 141 | return $caminho; |
171 | } | 142 | } |
172 | function converte($texto){ | 143 | function converte($texto){ |
173 | - $texto = str_replace("&","&",htmlentities($texto,ENT_NOQUOTES,mb_detect_encoding($texto))); | 144 | + $texto = str_replace("&","&",htmlentities($texto,ENT_NOQUOTES,'UTF-8')); |
174 | return $texto; | 145 | return $texto; |
175 | } | 146 | } |
176 | function imprimeEsquema(){ | 147 | function imprimeEsquema(){ |
177 | global $saikuUrl,$nomeConexao,$xml; | 148 | global $saikuUrl,$nomeConexao,$xml; |
178 | - if($_GET["output"] == "xml"){ | ||
179 | - if(!empty($_GET["xmlesquema"])){ | ||
180 | - echo header("Content-type: application/xml"); | ||
181 | - header("Location:".$_GET["xmlesquema"]); | ||
182 | - } | ||
183 | - else{ | ||
184 | - imprimeXml($xml); | ||
185 | - } | 149 | + @ob_end_clean(); |
150 | + header("Content-type: application/xml"); | ||
151 | + if(!empty($_GET["xmlesquema"])){ | ||
152 | + header("Location:".$_GET["xmlesquema"]); | ||
186 | } | 153 | } |
187 | else{ | 154 | else{ |
188 | - header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]."®iao=".$_GET["regiao"]); | 155 | + echo $xml; |
189 | } | 156 | } |
190 | } | 157 | } |
191 | -function imprimeXml($xml){ | ||
192 | - echo header("Content-type: application/xml"); | ||
193 | - echo $xml; | ||
194 | -} | ||
195 | function criaMapfileInicial(){ | 158 | function criaMapfileInicial(){ |
196 | global $mapext; | 159 | global $mapext; |
197 | if(empty($_GET["g_sid"])){ | 160 | if(empty($_GET["g_sid"])){ |
@@ -209,17 +172,19 @@ function criaConexaoEsquema(){ | @@ -209,17 +172,19 @@ function criaConexaoEsquema(){ | ||
209 | global $dir_tmp, $urlXmlEsquema; | 172 | global $dir_tmp, $urlXmlEsquema; |
210 | $nomeConexao = nomeRandomico(); | 173 | $nomeConexao = nomeRandomico(); |
211 | //pega a sessao PHP aberta pelo i3Geo ou ms_criamapa.php | 174 | //pega a sessao PHP aberta pelo i3Geo ou ms_criamapa.php |
212 | - session_name("i3GeoPHP"); | ||
213 | - session_id($_GET["g_sid"]); | ||
214 | - session_start(); | ||
215 | - $map_file = $_SESSION["map_file"]; | ||
216 | - if(empty($_GET["xmlesquema"])){ | ||
217 | - $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml"; | ||
218 | - } | ||
219 | - else{ | ||
220 | - $urlXmlEsquema = $_GET["xmlesquema"]; | ||
221 | - //cria um nome de arquivo reaproveitável | ||
222 | - $nomeConexao = md5($_GET["xmlesquema"]); | 175 | + if(!empty($_GET["g_sid"])){ |
176 | + session_name("i3GeoPHP"); | ||
177 | + session_id($_GET["g_sid"]); | ||
178 | + session_start(); | ||
179 | + $map_file = $_SESSION["map_file"]; | ||
180 | + if(empty($_GET["xmlesquema"])){ | ||
181 | + $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml"; | ||
182 | + } | ||
183 | + else{ | ||
184 | + $urlXmlEsquema = $_GET["xmlesquema"]; | ||
185 | + //cria um nome de arquivo reaproveitável | ||
186 | + $nomeConexao = md5($_GET["xmlesquema"]); | ||
187 | + } | ||
223 | } | 188 | } |
224 | //$arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml"; | 189 | //$arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml"; |
225 | return $nomeConexao.".txt"; | 190 | return $nomeConexao.".txt"; |
@@ -251,7 +216,11 @@ function gravaDataSource(){ | @@ -251,7 +216,11 @@ function gravaDataSource(){ | ||
251 | ); | 216 | ); |
252 | */ | 217 | */ |
253 | global $arquivoXmlEsquema,$saikuConfigDataSource,$nomeConexao,$urlXmlEsquema,$dir_tmp; | 218 | global $arquivoXmlEsquema,$saikuConfigDataSource,$nomeConexao,$urlXmlEsquema,$dir_tmp; |
219 | + | ||
254 | $nomeDatasource = $dir_tmp."/saiku-datasources/".$nomeConexao; | 220 | $nomeDatasource = $dir_tmp."/saiku-datasources/".$nomeConexao; |
221 | + //nao funciona como url | ||
222 | + //error_reporting(E_ALL); | ||
223 | + $urlXmlEsquema = "http//localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=xml"; | ||
255 | if(!file_exists($arquivoXmlEsquema)){ | 224 | if(!file_exists($arquivoXmlEsquema)){ |
256 | $stringDatasource = " | 225 | $stringDatasource = " |
257 | type={$saikuConfigDataSource["type"]} | 226 | type={$saikuConfigDataSource["type"]} |
@@ -406,10 +375,12 @@ function sqlDasRegioes($regiao,$caminho,$chavesRegiao){ | @@ -406,10 +375,12 @@ function sqlDasRegioes($regiao,$caminho,$chavesRegiao){ | ||
406 | function dimensoesGeo(){ | 375 | function dimensoesGeo(){ |
407 | global $chavesRegiao, $m, $selecaoRegiao, $regioes, $filhosDaRegiao, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao; | 376 | global $chavesRegiao, $m, $selecaoRegiao, $regioes, $filhosDaRegiao, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao; |
408 | //essas variaveis sao globais e usadas em outras funcoes | 377 | //essas variaveis sao globais e usadas em outras funcoes |
409 | - foreach($regioes as $regiao){ | ||
410 | - $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
411 | - $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
412 | - $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | 378 | + if(!empty($regioes)){ |
379 | + foreach($regioes as $regiao){ | ||
380 | + $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
381 | + $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
382 | + $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
383 | + } | ||
413 | } | 384 | } |
414 | //xml normal | 385 | //xml normal |
415 | $xml1 = ""; | 386 | $xml1 = ""; |
@@ -602,25 +573,26 @@ function dimensoesTabelas(){ | @@ -602,25 +573,26 @@ function dimensoesTabelas(){ | ||
602 | $VirtualCubeDimension[] = " | 573 | $VirtualCubeDimension[] = " |
603 | <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' /> | 574 | <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' /> |
604 | "; | 575 | "; |
605 | - | ||
606 | - array_push( | ||
607 | - $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], | ||
608 | - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />" | ||
609 | - ); | ||
610 | - array_push( | ||
611 | - $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], | ||
612 | - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />" | ||
613 | - ); | ||
614 | - | ||
615 | - array_push( | ||
616 | - $VirtualCubeDimensionDaMedida[$c["nome_variavel"]], | ||
617 | - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />" | ||
618 | - ); | ||
619 | - array_push( | ||
620 | - $VirtualCubeDimensionDaMedida[$c["nome_variavel"]], | ||
621 | - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />" | ||
622 | - ); | ||
623 | - | 576 | + if(array_key_exists($c["codigo_tipo_regiao"],$VirtualCubeDimensionDaRegiao)){ |
577 | + array_push( | ||
578 | + $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], | ||
579 | + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />" | ||
580 | + ); | ||
581 | + array_push( | ||
582 | + $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], | ||
583 | + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />" | ||
584 | + ); | ||
585 | + } | ||
586 | + if(array_key_exists($c["nome_variavel"],$VirtualCubeDimensionDaMedida)){ | ||
587 | + array_push( | ||
588 | + $VirtualCubeDimensionDaMedida[$c["nome_variavel"]], | ||
589 | + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />" | ||
590 | + ); | ||
591 | + array_push( | ||
592 | + $VirtualCubeDimensionDaMedida[$c["nome_variavel"]], | ||
593 | + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />" | ||
594 | + ); | ||
595 | + } | ||
624 | 596 | ||
625 | //verifica as dimensoes do tipo tempo | 597 | //verifica as dimensoes do tipo tempo |
626 | $dimEnsoes = array(); | 598 | $dimEnsoes = array(); |
@@ -643,11 +615,12 @@ function dimensoesTabelas(){ | @@ -643,11 +615,12 @@ function dimensoesTabelas(){ | ||
643 | <DimensionUsage foreignKey='".implode("_",$parComposto)."_' name='Tempo' source='Tempo'/> | 615 | <DimensionUsage foreignKey='".implode("_",$parComposto)."_' name='Tempo' source='Tempo'/> |
644 | "; | 616 | "; |
645 | $dimEnsoes[] = $u; | 617 | $dimEnsoes[] = $u; |
646 | - array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='Tempo' />"); | 618 | + if(array_key_exists($c["codigo_tipo_regiao"],$VirtualCubeDimensionDaRegiao)){ |
619 | + array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='Tempo' />"); | ||
620 | + } | ||
647 | } | 621 | } |
648 | //outros parametros | 622 | //outros parametros |
649 | $outrosParametros = array(); | 623 | $outrosParametros = array(); |
650 | - | ||
651 | foreach($parametros as $parametro){ | 624 | foreach($parametros as $parametro){ |
652 | $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"]; | 625 | $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"]; |
653 | if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){ | 626 | if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){ |
@@ -655,7 +628,9 @@ function dimensoesTabelas(){ | @@ -655,7 +628,9 @@ function dimensoesTabelas(){ | ||
655 | $VirtualCubeDimension[] = "<VirtualCubeDimension name='{$k}' />"; | 628 | $VirtualCubeDimension[] = "<VirtualCubeDimension name='{$k}' />"; |
656 | $u = "<DimensionUsage foreignKey='".$parametro["coluna"]."' name='{$k}' source='{$k}'/>"; | 629 | $u = "<DimensionUsage foreignKey='".$parametro["coluna"]."' name='{$k}' source='{$k}'/>"; |
657 | $dimEnsoes[] = $u; | 630 | $dimEnsoes[] = $u; |
658 | - array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='{$k}' />"); | 631 | + if(array_key_exists($c["codigo_tipo_regiao"],$VirtualCubeDimensionDaRegiao)){ |
632 | + array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='{$k}' />"); | ||
633 | + } | ||
659 | } | 634 | } |
660 | } | 635 | } |
661 | 636 | ||
@@ -722,13 +697,14 @@ function dimensoesTabelas(){ | @@ -722,13 +697,14 @@ function dimensoesTabelas(){ | ||
722 | "; | 697 | "; |
723 | } | 698 | } |
724 | //inclui as dimensoes filhas | 699 | //inclui as dimensoes filhas |
725 | - foreach($filhosDaRegiao[$c["codigo_tipo_regiao"]] as $fr){ | ||
726 | - $xml .= " | ||
727 | - <DimensionUsage foreignKey='codigoreg' name='codigo_tipo_regiao_".$fr."' source='codigo_tipo_regiao_".$fr."'/> | ||
728 | - <DimensionUsage foreignKey='codigoreg' name='codigo_tipo_regiao_".$fr."_geocod' source='codigo_tipo_regiao_".$fr."_geocod'/> | ||
729 | - "; | 700 | + if(array_key_exists($c["codigo_tipo_regiao"],$filhosDaRegiao)){ |
701 | + foreach($filhosDaRegiao[$c["codigo_tipo_regiao"]] as $fr){ | ||
702 | + $xml .= " | ||
703 | + <DimensionUsage foreignKey='codigoreg' name='codigo_tipo_regiao_".$fr."' source='codigo_tipo_regiao_".$fr."'/> | ||
704 | + <DimensionUsage foreignKey='codigoreg' name='codigo_tipo_regiao_".$fr."_geocod' source='codigo_tipo_regiao_".$fr."_geocod'/> | ||
705 | + "; | ||
706 | + } | ||
730 | } | 707 | } |
731 | - | ||
732 | $xml .= implode(" ",array_unique($dimEnsoes)); | 708 | $xml .= implode(" ",array_unique($dimEnsoes)); |
733 | 709 | ||
734 | //inclui cada elemento em medida | 710 | //inclui cada elemento em medida |
@@ -753,7 +729,9 @@ function dimensoesTabelas(){ | @@ -753,7 +729,9 @@ function dimensoesTabelas(){ | ||
753 | <VirtualCubeMeasure cubeName='Tabela: {$c["esquemadb"]}{$c["tabela"]}' name='[Measures].[id_medida_variavel_".$medida["id_medida_variavel"]."]'/> | 729 | <VirtualCubeMeasure cubeName='Tabela: {$c["esquemadb"]}{$c["tabela"]}' name='[Measures].[id_medida_variavel_".$medida["id_medida_variavel"]."]'/> |
754 | "; | 730 | "; |
755 | $VirtualCubeMeasure[] = $u; | 731 | $VirtualCubeMeasure[] = $u; |
756 | - array_push($VirtualCubeMeasureDaRegiao[$c["codigo_tipo_regiao"]],$u); | 732 | + if(array_key_exists($c["codigo_tipo_regiao"],$VirtualCubeMeasureDaRegiao)){ |
733 | + array_push($VirtualCubeMeasureDaRegiao[$c["codigo_tipo_regiao"]],$u); | ||
734 | + } | ||
757 | //verifica em qual variavel entra | 735 | //verifica em qual variavel entra |
758 | //<VirtualCubeMeasure cubeName='Tabela: idsustb_indicador' name='[Measures].[id_medida_variavel_12]'/> | 736 | //<VirtualCubeMeasure cubeName='Tabela: idsustb_indicador' name='[Measures].[id_medida_variavel_12]'/> |
759 | $u = "<VirtualCubeMeasure cubeName='Tabela: {$c["esquemadb"]}{$c["tabela"]}' name='[Measures].[id_medida_variavel_".$medida["id_medida_variavel"]."]'/>"; | 737 | $u = "<VirtualCubeMeasure cubeName='Tabela: {$c["esquemadb"]}{$c["tabela"]}' name='[Measures].[id_medida_variavel_".$medida["id_medida_variavel"]."]'/>"; |
@@ -778,18 +756,20 @@ function cuboTodas(){ | @@ -778,18 +756,20 @@ function cuboTodas(){ | ||
778 | function cuboRegioes(){ | 756 | function cuboRegioes(){ |
779 | global $regioes, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao, $filhosDaRegiao; | 757 | global $regioes, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao, $filhosDaRegiao; |
780 | $xml = ""; | 758 | $xml = ""; |
781 | - foreach($regioes as $regiao){ | ||
782 | - //inclui os parametros para a regiao de acordo com os filhos que possui | ||
783 | - $d = $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]]; | ||
784 | - $mm = $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]]; | ||
785 | - foreach($filhosDaRegiao[$regiao["codigo_tipo_regiao"]] as $f){ | ||
786 | - $mm = array_merge($mm,$VirtualCubeMeasureDaRegiao[$f]); | ||
787 | - } | ||
788 | - if(count(array_unique($mm)) > 0){ | ||
789 | - $xml .= '<VirtualCube name="Regi&atilde;o: '.converte($regiao["nome_tipo_regiao"]).'" >'; | ||
790 | - $xml .= implode(" ",array_unique($d)); | ||
791 | - $xml .= implode(" ",array_unique($mm)); | ||
792 | - $xml .= '</VirtualCube>'; | 759 | + if(!empty($regioes)){ |
760 | + foreach($regioes as $regiao){ | ||
761 | + //inclui os parametros para a regiao de acordo com os filhos que possui | ||
762 | + $d = $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]]; | ||
763 | + $mm = $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]]; | ||
764 | + foreach($filhosDaRegiao[$regiao["codigo_tipo_regiao"]] as $f){ | ||
765 | + $mm = array_merge($mm,$VirtualCubeMeasureDaRegiao[$f]); | ||
766 | + } | ||
767 | + if(count(array_unique($mm)) > 0){ | ||
768 | + $xml .= '<VirtualCube name="Regi&atilde;o: '.converte($regiao["nome_tipo_regiao"]).'" >'; | ||
769 | + $xml .= implode(" ",array_unique($d)); | ||
770 | + $xml .= implode(" ",array_unique($mm)); | ||
771 | + $xml .= '</VirtualCube>'; | ||
772 | + } | ||
793 | } | 773 | } |
794 | } | 774 | } |
795 | return $xml; | 775 | return $xml; |
ferramentas/saiku/index.js
@@ -167,7 +167,7 @@ i3GEOF.saiku = | @@ -167,7 +167,7 @@ i3GEOF.saiku = | ||
167 | }, | 167 | }, |
168 | iniciaJanelaFlutuante2 : function() { | 168 | iniciaJanelaFlutuante2 : function() { |
169 | var mapext = i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten), url = | 169 | var mapext = i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten), url = |
170 | - i3GEO.configura.locaplic + "/ferramentas/saiku/esquemaxml.php?origem=i3geo&g_sid=" + i3GEO.configura.sid + "&locaplic=" | 170 | + i3GEO.configura.locaplic + "/ferramentas/saiku/startsaiku.php?origem=i3geo&g_sid=" + i3GEO.configura.sid + "&locaplic=" |
171 | + i3GEO.configura.locaplic + "&mapext=" + mapext, cabecalho = function() { | 171 | + i3GEO.configura.locaplic + "&mapext=" + mapext, cabecalho = function() { |
172 | }, minimiza = function() { | 172 | }, minimiza = function() { |
173 | i3GEO.janela.iconiza("i3GEOF.saikuMapa",100); | 173 | i3GEO.janela.iconiza("i3GEOF.saikuMapa",100); |
@@ -198,7 +198,7 @@ i3GEOF.saiku = | @@ -198,7 +198,7 @@ i3GEOF.saiku = | ||
198 | }, | 198 | }, |
199 | aplicar : function() { | 199 | aplicar : function() { |
200 | var mapext = i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten); | 200 | var mapext = i3GEO.util.extOSM2Geo(i3GEO.parametros.mapexten); |
201 | - window.open(i3GEO.configura.locaplic + "/ferramentas/saiku/esquemaxml.php?origem=i3geo&g_sid=" + i3GEO.configura.sid | 201 | + window.open(i3GEO.configura.locaplic + "/ferramentas/saiku/startsaiku.php?origem=i3geo&g_sid=" + i3GEO.configura.sid |
202 | + "&locaplic=" + i3GEO.configura.locaplic + "&mapext=" + mapext); | 202 | + "&locaplic=" + i3GEO.configura.locaplic + "&mapext=" + mapext); |
203 | }, | 203 | }, |
204 | atualizaMapa : function() { | 204 | atualizaMapa : function() { |
@@ -0,0 +1,119 @@ | @@ -0,0 +1,119 @@ | ||
1 | +<?php | ||
2 | +/* | ||
3 | +Importante: | ||
4 | + | ||
5 | +A integracaoo do SAIKU com o i3GEO e experimental. | ||
6 | + | ||
7 | +O SAIKU utiliza os arquivos de fonte de dados que sao criados de forma dinamica na pasta ms_tmp/saiku-datasources. | ||
8 | +Esses arquivos apontam para o arquivo XML com o esquema utilizado para construir os cubos, que tambem sao criados de forma dinamica. | ||
9 | +Como o SAIKU precisa ler esse arquivo XML, o mesmo deve ter permissoes de leitura de forma que o Apache consiga carregar esse arquivo XML. | ||
10 | +E importante destacar que ao fazer isso o arquivo xml fica exposto, o que pode permitir que um usuario qualquer tenha acesso a esse XML. | ||
11 | +Esse XML contem os SQL utilizados para acessar o banco de dados. Ao usar o SAIKU e necessario avaliar se essa caracteristica pode | ||
12 | +apresentar-se como um problema de seguranc | ||
13 | +*/ | ||
14 | +// | ||
15 | +//remova essa linhas para poder usar o SAIKU | ||
16 | +// | ||
17 | +//echo "Bloqueado. Consulte o administrador.";exit; | ||
18 | + | ||
19 | +include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); | ||
20 | +//include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); | ||
21 | +include(dirname(__FILE__)."/../../classesphp/classe_metaestatinfo.php"); | ||
22 | +if(!isset($dir_tmp)){ | ||
23 | + include(dirname(__FILE__)."/../../ms_configura.php"); | ||
24 | +} | ||
25 | +if(isset($statusFerramentas) && $statusFerramentas["saiku"] != true){ | ||
26 | + exit; | ||
27 | +} | ||
28 | + | ||
29 | +$urlXmlEsquema = ""; | ||
30 | +$nomeConexao = "i3geo.txt";//criaConexaoEsquema(); | ||
31 | + | ||
32 | +//$map_file = $_SESSION["map_file"]; | ||
33 | +//$arquivoXmlEsquema = dirname($map_file)."/".str_replace(".txt","",$nomeConexao).".xml"; | ||
34 | +gravaDataSource(); | ||
35 | +if(empty($_GET["regiao"])){ | ||
36 | + $_GET["regiao"] = ""; | ||
37 | +} | ||
38 | +ob_clean(); | ||
39 | +header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]."®iao=".$_GET["regiao"]); | ||
40 | + | ||
41 | +function converte($texto){ | ||
42 | + $texto = str_replace("&","&",htmlentities($texto,ENT_NOQUOTES,'UTF-8')); | ||
43 | + return $texto; | ||
44 | +} | ||
45 | +function criaConexaoEsquema(){ | ||
46 | + global $dir_tmp, $urlXmlEsquema; | ||
47 | + $nomeConexao = nomeRandomico(); | ||
48 | + //pega a sessao PHP aberta pelo i3Geo ou ms_criamapa.php | ||
49 | + if(!empty($_GET["g_sid"])){ | ||
50 | + session_name("i3GeoPHP"); | ||
51 | + session_id($_GET["g_sid"]); | ||
52 | + session_start(); | ||
53 | + $map_file = $_SESSION["map_file"]; | ||
54 | + if(empty($_GET["xmlesquema"])){ | ||
55 | + $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml"; | ||
56 | + } | ||
57 | + else{ | ||
58 | + $urlXmlEsquema = $_GET["xmlesquema"]; | ||
59 | + //cria um nome de arquivo reaproveitável | ||
60 | + $nomeConexao = md5($_GET["xmlesquema"]); | ||
61 | + } | ||
62 | + } | ||
63 | + //$arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml"; | ||
64 | + return $nomeConexao.".txt"; | ||
65 | +} | ||
66 | +function gravaDataSource(){ | ||
67 | + /* | ||
68 | + $saikuConfigDataSource vem do ms_configura.php | ||
69 | + | ||
70 | + Exemplo de arquivo de fonte: | ||
71 | + type=OLAP | ||
72 | + name=i3geo | ||
73 | + driver=mondrian.olap4j.MondrianOlap4jDriver | ||
74 | + location=jdbc:mondrian:Jdbc=jdbc:postgresql://localhost:5432/i3geosaude;Catalog=http://localhost/i3geo/ferramentas/saiku/esquemaxml.php;JdbcDrivers=org.postgresql.Driver; | ||
75 | + username=postgres | ||
76 | + password=postgres | ||
77 | + | ||
78 | + Array com os parametros definidos em ms_configura: | ||
79 | + | ||
80 | + $saikuConfigDataSource = array( | ||
81 | + "type"=>"OLAP", | ||
82 | + "driver"=>"mondrian.olap4j.MondrianOlap4jDriver", | ||
83 | + "location"=>"jdbc:mondrian:Jdbc=jdbc:postgresql", | ||
84 | + "serverdb"=>"localhost", | ||
85 | + "port"=>"5432", | ||
86 | + "database"=>"i3geosaude", | ||
87 | + "JdbcDrivers"=>"org.postgresql.Driver", | ||
88 | + "username"=>"postgres", | ||
89 | + "password"=>"postgres" | ||
90 | + ); | ||
91 | + */ | ||
92 | + global $arquivoXmlEsquema,$saikuConfigDataSource,$nomeConexao,$urlXmlEsquema,$dir_tmp; | ||
93 | + | ||
94 | + $nomeDatasource = $dir_tmp."/saiku-datasources/".$nomeConexao; | ||
95 | + //nao funciona como url | ||
96 | + //error_reporting(E_ALL); | ||
97 | + //$urlXmlEsquema = "http://localhost/i3geo/ferramentas/saiku/esquemaxml.php"; | ||
98 | + | ||
99 | + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); | ||
100 | + $protocolo = $protocolo[0]; | ||
101 | + $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT']; | ||
102 | + $urlXmlEsquema = str_replace("startsaiku","esquemaxml",$protocolo.$_SERVER["PHP_SELF"]); | ||
103 | + | ||
104 | + //error_log($urlXmlEsquema); | ||
105 | + | ||
106 | + //if(!file_exists($arquivoXmlEsquema)){ | ||
107 | + $stringDatasource = " | ||
108 | + type={$saikuConfigDataSource["type"]} | ||
109 | + name={$nomeConexao} | ||
110 | + driver={$saikuConfigDataSource["driver"]} | ||
111 | + location={$saikuConfigDataSource["location"]}://{$saikuConfigDataSource["serverdb"]}:{$saikuConfigDataSource["port"]}/{$saikuConfigDataSource["database"]};Catalog={$urlXmlEsquema};JdbcDrivers={$saikuConfigDataSource["JdbcDrivers"]}; | ||
112 | + username={$saikuConfigDataSource["username"]} | ||
113 | + password={$saikuConfigDataSource["password"]} | ||
114 | + "; | ||
115 | + //salva o arquivo com a fonte | ||
116 | + gravaDados(array($stringDatasource),$nomeDatasource); | ||
117 | + //} | ||
118 | +} | ||
119 | +?> |
init/index.js
@@ -64,7 +64,7 @@ botoesIni = [ | @@ -64,7 +64,7 @@ botoesIni = [ | ||
64 | "target": "_self" | 64 | "target": "_self" |
65 | },{ | 65 | },{ |
66 | "img":"saiku_free_small", | 66 | "img":"saiku_free_small", |
67 | - "href": "../ferramentas/saiku/esquemaxml.php?locaplic="+window.location.href.replace("/init/index.php",""), | 67 | + "href": "../ferramentas/saiku/startsaiku.php?locaplic="+window.location.href.replace("/init/index.php",""), |
68 | "titulo":$trad(25,g_traducao_init), | 68 | "titulo":$trad(25,g_traducao_init), |
69 | "subtitulo": $trad("25a",g_traducao_init), | 69 | "subtitulo": $trad("25a",g_traducao_init), |
70 | "fa": "bar-chart", | 70 | "fa": "bar-chart", |
ms_configura.php
@@ -816,7 +816,7 @@ else //se for linux | @@ -816,7 +816,7 @@ else //se for linux | ||
816 | * | 816 | * |
817 | * Para trocar, altere a linha abaixo | 817 | * Para trocar, altere a linha abaixo |
818 | */ | 818 | */ |
819 | -if(empty($_COOKIE["i3geolingua"])){ | 819 | +if(empty($_COOKIE["i3geolingua"]) && array_key_exists('HTTP_ACCEPT_LANGUAGE',$_SERVER)){ |
820 | $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); | 820 | $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); |
821 | $l = "pt"; | 821 | $l = "pt"; |
822 | if($lang == "en" || $lang == "es"){ | 822 | if($lang == "en" || $lang == "es"){ |
testainstal/index.js
@@ -78,7 +78,7 @@ botoesIni = [ | @@ -78,7 +78,7 @@ botoesIni = [ | ||
78 | "target": "_self" | 78 | "target": "_self" |
79 | },{ | 79 | },{ |
80 | "img":"../imagens/saiku_free_small.png", | 80 | "img":"../imagens/saiku_free_small.png", |
81 | - "href":"../ferramentas/saiku/esquemaxml.php?locaplic="+window.location.href.replace("/init/index.php",""), | 81 | + "href":"../ferramentas/saiku/startsaiku.php?locaplic="+window.location.href.replace("/init/index.php",""), |
82 | "titulo":$trad(25,g_traducao_init), | 82 | "titulo":$trad(25,g_traducao_init), |
83 | "subtitulo": $trad("25a",g_traducao_init), | 83 | "subtitulo": $trad("25a",g_traducao_init), |
84 | "fa": "bar-chart", | 84 | "fa": "bar-chart", |