Commit 11579fe5d5ae6215c60c2e82bf840d46a2c7f560

Authored by Edmar Moretti
1 parent 973d1ed2
Exists in master

i3geosaude - inclusão de opção para acessar o saiku fora do i3geo

@@ -21,6 +21,14 @@ @@ -21,6 +21,14 @@
21 <span style="vertical-align:top">Interface que utiliza o Google Maps como mecanismo de navega&ccedil;&atilde;o e base cartogr&aacute;fica</span> 21 <span style="vertical-align:top">Interface que utiliza o Google Maps como mecanismo de navega&ccedil;&atilde;o e base cartogr&aacute;fica</span>
22 </a> 22 </a>
23 </p> 23 </p>
  24 + <p>
  25 + <a id="saiku" href="i3geo/ferramentas/saiku/esquemaxml.php" target="_blank">
  26 + <img title="SAIKU" src="Imagens/saiku_free_small.png" style="min-width:0px;width: 30px; height: 20px; cursor: pointer; border: 1px solid gray; border-radius: 5px 5px 5px 5px;" />
  27 + <span style="vertical-align:top">
  28 + Ferramenta de an&aacute;lise de vari&aacute;veis cadastradas
  29 + </span>
  30 + </a>
  31 + </p>
24 </div> 32 </div>
25 <table> 33 <table>
26 <tr> 34 <tr>
i3geo/ferramentas/saiku/esquemaxml.php
1 <?php 1 <?php
2 -if(empty($_GET["g_sid"])){  
3 - echo "erro";  
4 - exit;  
5 -} 2 +
6 include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); 3 include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
7 include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); 4 include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php");
8 if(!isset($dir_tmp)){ 5 if(!isset($dir_tmp)){
9 include(dirname(__FILE__)."/../../ms_configura.php"); 6 include(dirname(__FILE__)."/../../ms_configura.php");
10 } 7 }
11 -//pega a sessao PHP aberta pelo i3Geo 8 +$nomeConexao = nomeRandomico();
  9 +$nomeDatasource = $dir_tmp."/saiku-datasources/".$nomeConexao;
  10 +
  11 +//quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas
  12 +if(empty($_GET["g_sid"])){
  13 + include(dirname(__FILE__)."/../../ms_criamapa.php");
  14 + //reinicia a url
  15 + $urln = "?g_sid=".session_id();
  16 + header("Location:".$urln);
  17 + exit;
  18 +}
  19 +
  20 +//pega a sessao PHP aberta pelo i3Geo ou ms_criamapa.php
12 session_name("i3GeoPHP"); 21 session_name("i3GeoPHP");
13 session_id($_GET["g_sid"]); 22 session_id($_GET["g_sid"]);
14 session_start(); 23 session_start();
15 -  
16 $map_file = $_SESSION["map_file"]; 24 $map_file = $_SESSION["map_file"];
17 -$nomeConexao = nomeRandomico();  
18 -$nomeDatasource = $dir_tmp."/saiku-datasources/".$nomeConexao;  
19 $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml"; 25 $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml";
20 $arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml"; 26 $arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml";
  27 +
21 /* 28 /*
22 $saikuConfigDataSource vem do ms_configura.php 29 $saikuConfigDataSource vem do ms_configura.php
23 30
@@ -55,49 +62,51 @@ password={$saikuConfigDataSource[&quot;password&quot;]} @@ -55,49 +62,51 @@ password={$saikuConfigDataSource[&quot;password&quot;]}
55 gravaDados(array($stringDatasource),$nomeDatasource); 62 gravaDados(array($stringDatasource),$nomeDatasource);
56 $m = new Metaestat(); 63 $m = new Metaestat();
57 $selecaoRegiao = array(); 64 $selecaoRegiao = array();
58 -//obtem os layers que sao do sistema metaestat, sao regioes e que possuem selecao  
59 -$mapa = ms_newMapObj($map_file);  
60 -$c = $mapa->numlayers; 65 +//obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao
61 $codigo_tipo_regiao = ""; 66 $codigo_tipo_regiao = "";
62 -for ($i=0;$i < $c;++$i){  
63 - $l = $mapa->getlayer($i);  
64 - //verifica o alias na conexao  
65 - if (!empty($postgis_mapa)){  
66 - if ($l->connectiontype == MS_POSTGIS){  
67 - $lcon = $l->connection;  
68 - if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){  
69 - if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade  
70 - {$l->set("connection",$postgis_mapa);}  
71 - else{  
72 - $l->set("connection",$postgis_mapa[$lcon]); 67 +if($map_file != ""){
  68 + $mapa = ms_newMapObj($map_file);
  69 + $c = $mapa->numlayers;
  70 + for ($i=0;$i < $c;++$i){
  71 + $l = $mapa->getlayer($i);
  72 + //verifica o alias na conexao
  73 + if (!empty($postgis_mapa)){
  74 + if ($l->connectiontype == MS_POSTGIS){
  75 + $lcon = $l->connection;
  76 + if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){
  77 + if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade
  78 + {$l->set("connection",$postgis_mapa);}
  79 + else{
  80 + $l->set("connection",$postgis_mapa[$lcon]);
  81 + }
73 } 82 }
74 } 83 }
75 } 84 }
76 - }  
77 - //  
78 - $registros = array();  
79 - if($l->status == MS_DEFAULT && $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO") != ""){  
80 - $codigo_tipo_regiao = $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO");  
81 - //verifica se tem selecao  
82 - $qyfile = dirname($map_file)."/".$l->name.".php";  
83 - if(file_exists($qyfile)){  
84 - //pega os registros  
85 - $shapes = retornaShapesSelecionados($l,$map_file,$mapa);  
86 - //pega o nome da coluna que identifica cada registro  
87 - $regiao = $m->listaTipoRegiao($codigo_tipo_regiao);  
88 - $item = $regiao["identificador"];  
89 - foreach($shapes as $shape){  
90 - $registros[] = $shape->values[$item]; 85 + //
  86 + $registros = array();
  87 + if($l->status == MS_DEFAULT && $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO") != ""){
  88 + //verifica se tem selecao
  89 + $qyfile = dirname($map_file)."/".$l->name.".php";
  90 + if(file_exists($qyfile)){
  91 + $codigo_tipo_regiao = $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO");
  92 + //pega os registros
  93 + $shapes = retornaShapesSelecionados($l,$map_file,$mapa);
  94 + //pega o nome da coluna que identifica cada registro
  95 + $regiao = $m->listaTipoRegiao($codigo_tipo_regiao);
  96 + $item = $regiao["identificador"];
  97 + foreach($shapes as $shape){
  98 + $registros[] = $shape->values[$item];
  99 + }
  100 + $reg = $item." IN ('".implode("','",$registros)."') ";
  101 + $selecaoRegiao[$codigo_tipo_regiao] = array(
  102 + "item" => $item,
  103 + "sql" => $reg
  104 + );
  105 + break; //mantem a primeira ocorrencia de regiao que possui selecao
  106 + }
  107 + else{
  108 + $selecaoRegiao[$codigo_tipo_regiao] = "";
91 } 109 }
92 - $reg = $item." IN ('".implode("','",$registros)."') ";  
93 - $selecaoRegiao[$codigo_tipo_regiao] = array(  
94 - "item" => $item,  
95 - "sql" => $reg  
96 - );  
97 - break; //mantem a primeira ocorrencia de regiao que possui selecao  
98 - }  
99 - else{  
100 - $selecaoRegiao[$codigo_tipo_regiao] = "";  
101 } 110 }
102 } 111 }
103 } 112 }
@@ -258,7 +267,7 @@ $medidas = $m-&gt;listaMedidaVariavel(); @@ -258,7 +267,7 @@ $medidas = $m-&gt;listaMedidaVariavel();
258 $tbs = array(); 267 $tbs = array();
259 268
260 foreach($medidas as $medida){ 269 foreach($medidas as $medida){
261 - if($medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){ 270 + if($codigo_tipo_regiao == "" || $medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){
262 $k = $medida["esquemadb"].$medida["tabela"]; 271 $k = $medida["esquemadb"].$medida["tabela"];
263 if(empty($tbs[$k])){ 272 if(empty($tbs[$k])){
264 $tbs[$k] = array($medida); 273 $tbs[$k] = array($medida);
@@ -268,10 +277,10 @@ foreach($medidas as $medida){ @@ -268,10 +277,10 @@ foreach($medidas as $medida){
268 } 277 }
269 } 278 }
270 } 279 }
271 -  
272 //monta os cubos para cada esquema.tabela diferente 280 //monta os cubos para cada esquema.tabela diferente
273 $VirtualCubeDimension = array(); 281 $VirtualCubeDimension = array();
274 $VirtualCubeMeasure = array(); 282 $VirtualCubeMeasure = array();
  283 +
275 foreach($tbs as $tb){ 284 foreach($tbs as $tb){
276 //cabecalho de cada cubo obtido da primeira medida 285 //cabecalho de cada cubo obtido da primeira medida
277 $c = $tb[0]; 286 $c = $tb[0];
@@ -344,6 +353,7 @@ error_reporting(0); @@ -344,6 +353,7 @@ error_reporting(0);
344 ob_end_clean(); 353 ob_end_clean();
345 354
346 gravaDados(array($xml),$arquivoXmlEsquema); 355 gravaDados(array($xml),$arquivoXmlEsquema);
  356 +
347 header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]); 357 header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]);
348 358
349 function converte($texto){ 359 function converte($texto){