Commit b673de611af68272fd3c46315609f7ee9044e709

Authored by Edmar Moretti
1 parent cae55a29

Aprimoramento do gerador de cubos para o SAIKU

admin/admin.db
No preview for this file type
admin/php/classe_metaestat.php
... ... @@ -528,6 +528,7 @@ class Metaestat{
528 528 return array("caminho"=>$caminho,"colunas"=>$colunas);
529 529 }
530 530 }
  531 + return array("caminho"=>$caminho,"colunas"=>$colunas);
531 532 }
532 533 function hierarquiaPath($node){
533 534 $query="select codigo_tipo_regiao_pai as parent from ".$this->esquemaadmin."i3geoestat_agregaregiao WHERE codigo_tipo_regiao = $node";
... ... @@ -2056,6 +2057,10 @@ class Metaestat{
2056 2057 }
2057 2058 return $this->execSQL($sql,"");
2058 2059 }
  2060 + function listaHierarquia($codigoregiaopai=""){
  2061 + $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao order by codigo_tipo_regiao";
  2062 + return $this->execSQL($sql,"");
  2063 + }
2059 2064 /**
2060 2065 * Lista os registros de um tipo de regiao
2061 2066 * Se for definido o pai, lista os valores da regiao que e filha
... ... @@ -2132,7 +2137,9 @@ class Metaestat{
2132 2137 function listaAgregaRegiaoFilho($codigo_tipo_regiao,$codigo_tipo_regiao_pai){
2133 2138 $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao ";
2134 2139 $sql .= "WHERE codigo_tipo_regiao_pai = $codigo_tipo_regiao_pai ";
2135   - $sql .= "AND codigo_tipo_regiao = $codigo_tipo_regiao";
  2140 + if($codigo_tipo_regiao != ""){
  2141 + $sql .= "AND codigo_tipo_regiao = $codigo_tipo_regiao";
  2142 + }
2136 2143 return $this->execSQL($sql,$codigo_tipo_regiao_pai);
2137 2144 }
2138 2145 /**
... ...
ferramentas/saiku/esquemaxml.php
... ... @@ -4,82 +4,253 @@
4 4 //
5 5 //utilize &xmlesquema= caso o XML ja exista
6 6 //
7   -//http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=&xmlesquema=http://localhost/i3geo/ferramentas/saiku/testemondrian.xml
  7 +//utilize $regiao para obter o xml de uma so regiao
  8 +//
  9 +/**
  10 +http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=&xmlesquema=http://localhost/i3geo/ferramentas/saiku/testemondrian.xml&output=xml
  11 +http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?xmlesquema=&output=xml&regiao=1
  12 +*/
  13 +
8 14 //
9 15 //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas
10   -if(empty($_GET["g_sid"])){
11   - include(dirname(__FILE__)."/../../ms_criamapa.php");
12   - //reinicia a url
13   - $urln = "?g_sid=".session_id()."&locaplic=".$_GET["locaplic"]."&mapext=".$mapext."&origem=".$_GET["origem"]."&output=".$_GET["output"]."&xmlesquema=".$_GET["xmlesquema"];
14   - header("Location:".$urln);
15   - exit;
16   -}
  16 +//
  17 +criaMapfileInicial();
17 18  
18 19 include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
19 20 include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php");
20 21 if(!isset($dir_tmp)){
21 22 include(dirname(__FILE__)."/../../ms_configura.php");
22 23 }
23   -$nomeConexao = nomeRandomico();
24   -$nomeDatasource = $dir_tmp."/saiku-datasources/".$nomeConexao;
25 24  
26   -//pega a sessao PHP aberta pelo i3Geo ou ms_criamapa.php
27   -session_name("i3GeoPHP");
28   -session_id($_GET["g_sid"]);
29   -session_start();
  25 +$urlXmlEsquema = "";
  26 +$nomeConexao = criaConexaoEsquema();
  27 +
30 28 $map_file = $_SESSION["map_file"];
31   -if(empty($_GET["xmlesquema"])){
32   - $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml";
  29 +
  30 +$arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml";
  31 +
  32 +gravaDataSource();
  33 +
  34 +if(!empty($_GET["xmlesquema"])){
  35 + imprimeEsquema();
  36 +}
  37 +
  38 +$m = new Metaestat();
  39 +
  40 +//
  41 +//obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao
  42 +//
  43 +if(empty($_GET["regiao"])){
  44 + $s = pegaSelecaoRegioes();
  45 + $selecaoRegiao = $s["selecaoRegiao"];
  46 + $codigo_tipo_regiao = $s["codigo_tipo_regiao"];
33 47 }
34 48 else{
35   - $urlXmlEsquema = $_GET["xmlesquema"];
  49 + $codigo_tipo_regiao = $_GET["regiao"];
36 50 }
37   -$arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml";
  51 +//verifica se o cubo usa uma regiao especifica ou todas
  52 +if($codigo_tipo_regiao == ""){
  53 + $regioes = $m->listaTipoRegiao();
  54 +}
  55 +else{
  56 + $regioes = array($m->listaTipoRegiao($codigo_tipo_regiao));
  57 +}
  58 +$s = "";
38 59  
39   -/*
40   - $saikuConfigDataSource vem do ms_configura.php
41   -
42   -Exemplo de arquivo de fonte:
43   -type=OLAP
44   -name=i3geo
45   -driver=mondrian.olap4j.MondrianOlap4jDriver
46   -location=jdbc:mondrian:Jdbc=jdbc:postgresql://localhost:5432/i3geosaude;Catalog=http://localhost/i3geo/ferramentas/saiku/esquemaxml.php;JdbcDrivers=org.postgresql.Driver;
47   -username=postgres
48   -password=postgres
49   -
50   -Array com os parametros definidos em ms_configura:
51   -
52   -$saikuConfigDataSource = array(
53   - "type"=>"OLAP",
54   - "driver"=>"mondrian.olap4j.MondrianOlap4jDriver",
55   - "location"=>"jdbc:mondrian:Jdbc=jdbc:postgresql",
56   - "serverdb"=>"localhost",
57   - "port"=>"5432",
58   - "database"=>"i3geosaude",
59   - "JdbcDrivers"=>"org.postgresql.Driver",
60   - "username"=>"postgres",
61   - "password"=>"postgres"
62   -);
63   -*/
64   -$stringDatasource = "
65   -type={$saikuConfigDataSource["type"]}
66   -name={$nomeConexao}
67   -driver={$saikuConfigDataSource["driver"]}
68   -location={$saikuConfigDataSource["location"]}://{$saikuConfigDataSource["serverdb"]}:{$saikuConfigDataSource["port"]}/{$saikuConfigDataSource["database"]};Catalog={$urlXmlEsquema};JdbcDrivers={$saikuConfigDataSource["JdbcDrivers"]};
69   -username={$saikuConfigDataSource["username"]}
70   -password={$saikuConfigDataSource["password"]}
71   -";
72   -//salva o arquivo com a fonte
73   -gravaDados(array($stringDatasource),$nomeDatasource);
74   -
75   -if(empty($_GET["xmlesquema"])){
76   - $m = new Metaestat();
  60 +if(empty($saikuConfigDataSource['tabelaDimensaoTempo'])){
  61 + $saikuConfigDataSource['tabelaDimensaoTempo'] = "i3geo_metaestat.dim_tempo";
  62 +}
77 63  
78   - //
79   - //obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao
80   - //
81   - $selecaoRegiao = array();
  64 +$medidas = $m->listaMedidaVariavel();
  65 +
  66 +//
  67 +//formata o array de regioes colocando na chave o codigo da regiao
  68 +//
  69 +$chavesRegiao = array();
  70 +$todasAsRegioes = $m->listaTipoRegiao();
  71 +foreach($todasAsRegioes as $R){
  72 + $chavesRegiao[$R["codigo_tipo_regiao"]] = $R;
  73 +}
  74 +
  75 +//inicia montagem do XML
  76 +
  77 +//
  78 +//cria as dimensoes de tipo temporal
  79 +//
  80 +$xmlTempo = dimensoesTemporais();
  81 +
  82 +//
  83 +//dimensoes geograficas
  84 +//as dimensoes sao duplicadas
  85 +//uma delas contem o geocodigo que permite a geracao do mapa
  86 +//
  87 +//guarda as regioes filhas de uma determinada regiao (chave)
  88 +$filhosDaRegiao = array();
  89 +$VirtualCubeDimensionDaRegiao = array();
  90 +$VirtualCubeMeasureDaRegiao = array();
  91 +
  92 +$dimRegioes = dimensoesGeo();
  93 +
  94 +//var_dump(array_column($dimRegioes,"juncoes","codigo_tipo_regiao"));exit;
  95 +
  96 +$xmlRegioes = implode(" ",array_column($dimRegioes,"xml"));
  97 +
  98 +//
  99 +//outras dimensoes definidas nos parametros e que nao sejam do tipo tempo
  100 +//
  101 +$xmlOutrasDim = dimensoesOutras();
  102 +
  103 +//
  104 +//cria as dimensoes das medidas conforme o nome da tabela utilizada
  105 +//
  106 +$VirtualCubeDimension = array();
  107 +$VirtualCubeMeasure = array();
  108 +$xmlDimensoesTabelas = dimensoesTabelas();
  109 +
  110 +//
  111 +//cubo geral, com todas as dimensoes e medidas
  112 +//
  113 +$xmlCuboTodas = cuboTodas();
  114 +//
  115 +//cubos por regiao
  116 +//
  117 +$xmlCuboRegioes = cuboRegioes();
  118 +
  119 +$xml = "<Schema name='i3Geo Metaestat'>";
  120 +$xml .= $xmlTempo.$xmlRegioes.$xmlOutrasDim.$xmlDimensoesTabelas.$xmlCuboRegioes.$xmlCuboTodas;
  121 +$xml .= "</Schema>";
  122 +
  123 +//xml pronto!!!!!
  124 +
  125 +error_reporting(0);
  126 +ob_end_clean();
  127 +//
  128 +//grava os dados em um arquivo. O usuario pode evitar isso e imprimir direto na tela
  129 +//usando output "xml"
  130 +//
  131 +if($_GET["output"] != "xml"){
  132 + gravaDados(array($xml),$arquivoXmlEsquema);
  133 +}
  134 +imprimeEsquema();
  135 +
  136 +
  137 +//////////////////////////////////////////////////////////////////////////////////////////
  138 +function caminhoRegiao($hs,$chavesRegiao,$h,$regiaoInicial,$caminho)
  139 +{
  140 + foreach($hs as $n){
  141 + if($n["codigo_tipo_regiao"] == $regiaoInicial){
  142 + $caminho[] = array("a"=>$regiaoInicial,"join"=>$n["codigo_tipo_regiao_pai"],"ligacao"=>$n["colunaligacao_regiaopai"]);
  143 + $caminho = caminhoRegiao($hs,$chavesRegiao,$h, $n["codigo_tipo_regiao_pai"],$caminho);
  144 + }
  145 + else{
  146 + //$caminho = caminhoRegiao($hs,$chavesRegiao,$h, $n["codigo_tipo_regiao_pai"],$caminho);
  147 + }
  148 + }
  149 + return $caminho;
  150 +}
  151 +function converte($texto){
  152 + $texto = str_replace("&","&amp;",htmlentities($texto));
  153 + return $texto;
  154 +}
  155 +function imprimeEsquema(){
  156 + global $saikuUrl,$nomeConexao,$xml;
  157 + if($_GET["output"] == "xml"){
  158 + if(!empty($_GET["xmlesquema"])){
  159 + echo header("Content-type: application/xml");
  160 + header("Location:".$_GET["xmlesquema"]);
  161 + }
  162 + else{
  163 + imprimeXml($xml);
  164 + }
  165 + }
  166 + else{
  167 + header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]."&regiao=".$_GET["regiao"]);
  168 + }
  169 +}
  170 +function imprimeXml($xml){
  171 + echo header("Content-type: application/xml");
  172 + echo $xml;
  173 +}
  174 +function criaMapfileInicial(){
  175 + global $mapext;
  176 + if(empty($_GET["g_sid"])){
  177 + include(dirname(__FILE__)."/../../ms_configura.php");
  178 + $interface = "mashup";
  179 + include(dirname(__FILE__)."/../../ms_criamapa.php");
  180 +
  181 + //reinicia a url
  182 + $urln = "?g_sid=".session_id()."&locaplic=".$_GET["locaplic"]."&mapext=".$mapext."&origem=".$_GET["origem"]."&output=".$_GET["output"]."&xmlesquema=".$_GET["xmlesquema"]."&regiao=".$_GET["regiao"];
  183 + header("Location:".$urln);
  184 + exit;
  185 + }
  186 +}
  187 +function criaConexaoEsquema(){
  188 + global $dir_tmp, $urlXmlEsquema;
  189 + $nomeConexao = nomeRandomico();
  190 + //pega a sessao PHP aberta pelo i3Geo ou ms_criamapa.php
  191 + session_name("i3GeoPHP");
  192 + session_id($_GET["g_sid"]);
  193 + session_start();
  194 + $map_file = $_SESSION["map_file"];
  195 + if(empty($_GET["xmlesquema"])){
  196 + $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml";
  197 + }
  198 + else{
  199 + $urlXmlEsquema = $_GET["xmlesquema"];
  200 + //cria um nome de arquivo reaproveitável
  201 + $nomeConexao = md5($_GET["xmlesquema"]);
  202 + }
  203 + //$arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml";
  204 + return $nomeConexao;
  205 +}
  206 +function gravaDataSource(){
  207 + /*
  208 + $saikuConfigDataSource vem do ms_configura.php
  209 +
  210 + Exemplo de arquivo de fonte:
  211 + type=OLAP
  212 + name=i3geo
  213 + driver=mondrian.olap4j.MondrianOlap4jDriver
  214 + location=jdbc:mondrian:Jdbc=jdbc:postgresql://localhost:5432/i3geosaude;Catalog=http://localhost/i3geo/ferramentas/saiku/esquemaxml.php;JdbcDrivers=org.postgresql.Driver;
  215 + username=postgres
  216 + password=postgres
  217 +
  218 + Array com os parametros definidos em ms_configura:
  219 +
  220 + $saikuConfigDataSource = array(
  221 + "type"=>"OLAP",
  222 + "driver"=>"mondrian.olap4j.MondrianOlap4jDriver",
  223 + "location"=>"jdbc:mondrian:Jdbc=jdbc:postgresql",
  224 + "serverdb"=>"localhost",
  225 + "port"=>"5432",
  226 + "database"=>"i3geosaude",
  227 + "JdbcDrivers"=>"org.postgresql.Driver",
  228 + "username"=>"postgres",
  229 + "password"=>"postgres"
  230 + );
  231 + */
  232 + global $arquivoXmlEsquema,$saikuConfigDataSource,$nomeConexao,$urlXmlEsquema,$dir_tmp;
  233 + $nomeDatasource = $dir_tmp."/saiku-datasources/".$nomeConexao;
  234 + if(!file_exists($arquivoXmlEsquema)){
  235 + $stringDatasource = "
  236 + type={$saikuConfigDataSource["type"]}
  237 + name={$nomeConexao}
  238 + driver={$saikuConfigDataSource["driver"]}
  239 + location={$saikuConfigDataSource["location"]}://{$saikuConfigDataSource["serverdb"]}:{$saikuConfigDataSource["port"]}/{$saikuConfigDataSource["database"]};Catalog={$urlXmlEsquema};JdbcDrivers={$saikuConfigDataSource["JdbcDrivers"]};
  240 + username={$saikuConfigDataSource["username"]}
  241 + password={$saikuConfigDataSource["password"]}
  242 + ";
  243 + //salva o arquivo com a fonte
  244 + gravaDados(array($stringDatasource),$nomeDatasource);
  245 + }
  246 +}
  247 +function pegaSelecaoRegioes(){
  248 + global $m,$map_file,$postgis_mapa;
82 249 $codigo_tipo_regiao = "";
  250 + $selecaoRegiao = array();
  251 + $regiao = "";
  252 + $item = "";
  253 + $registros = "";
83 254 if($map_file != ""){
84 255 $mapa = ms_newMapObj($map_file);
85 256 $c = $mapa->numlayers;
... ... @@ -126,28 +297,18 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
126 297 }
127 298 }
128 299 }
  300 + return array(
  301 + "selecaoRegiao"=>$selecaoRegiao,
  302 + "codigo_tipo_regiao"=>$codigo_tipo_regiao
  303 + );
129 304 }
130   - if($codigo_tipo_regiao == ""){
131   - $regioes = $m->listaTipoRegiao();
132   - }
133   - else{
134   - $regioes = array($m->listaTipoRegiao($codigo_tipo_regiao));
135   - }
136   - //echo "<pre>";var_dump($regioes);exit;
137   - $regiao = "";
138   - $item = "";
139   - $registros = "";
140   - //echo "<pre>";var_dump($regioes);exit;
141   -
142   - $xml = "<Schema name='i3Geo Metaestat'>";
143   - //cria as dimensoes de tipo temporal
144   - if(empty($saikuConfigDataSource['tabelaDimensaoTempo'])){
145   - $saikuConfigDataSource['tabelaDimensaoTempo'] = "i3geo_metaestat.dim_tempo";
146   - }
  305 +}
  306 +function dimensoesTemporais(){
  307 + global $saikuConfigDataSource;
147 308 $sqlAno = "select nu_ano from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano order by nu_ano";
148 309 $sqlMes = "select nu_ano::text,nu_mes::text,ds_mes_abreviado as mes,COALESCE (nu_ano::text||'-'||nu_mes::text,nu_ano::text) as nu_anomes from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano,nu_mes,mes,nu_anomes order by nu_ano,nu_mes";
149 310 //dimensoes temporais
150   - $xml .= "
  311 + $xml = "
151 312 <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'>
152 313 <Hierarchy hasAll='true' primaryKey='nu_ano'>
153 314 <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view>
... ... @@ -169,113 +330,171 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
169 330 </Hierarchy>
170 331 </Dimension>
171 332 ";
172   - //global
173   - $medidas = $m->listaMedidaVariavel();
174   -
175   - //echo "<pre>";var_dump($regioesTabela);exit;
176   - //dimensoes geograficas
177   - //as dimensoes sao duplicadas
178   - //uma delas contem o geocodigo que permite a geracao do mapa
179   -
180   - //guarda as regioes filhas de uma determinada regiao (chave)
181   - $filhosDaRegiao = array();
182   - $VirtualCubeDimensionDaRegiao = array();
183   - $VirtualCubeMeasureDaRegiao = array();
  333 + return $xml;
  334 +}
  335 +function sqlDasRegioes($regiao,$caminho,$chavesRegiao){
  336 + $select = "SELECT tabela{$regiao["codigo_tipo_regiao"]}.{$regiao["identificador"]}::text as codigo, __COLUNAS__ FROM {$regiao['esquemadb']}.{$regiao['tabela']} as tabela{$regiao["codigo_tipo_regiao"]} \n";
  337 + $selectPrincipal = "";
  338 + $juncoes = "";
  339 + $colunas = array();
  340 + $nomesColunas = array();
  341 + $codRegioes = array();
  342 + $ncaminhos = count($caminho);
  343 + if($ncaminhos > 0){
  344 + foreach($caminho as $c){
  345 + $regiaoAnterior = $chavesRegiao[$c["a"]];
  346 + $tabelaAnterior = "tabela".$regiaoAnterior["codigo_tipo_regiao"];
  347 + $colunaLigacaoAnterior = $c["ligacao"];
  348 +
  349 + $colunas[] = $tabelaAnterior.".".$regiaoAnterior["identificador"]. "::text AS codigo".$regiaoAnterior["codigo_tipo_regiao"];
  350 + $colunas[] = $tabelaAnterior.".".$regiaoAnterior["colunanomeregiao"]. "::text AS nome".$regiaoAnterior["codigo_tipo_regiao"];
  351 +
  352 + $regiaoJoin = $chavesRegiao[$c["join"]];
  353 + $tabelaAtual = "tabela".$regiaoJoin["codigo_tipo_regiao"];
  354 + $colunaLigacaoAtual = $regiaoJoin["identificador"];
  355 +
  356 + $colunas[] = $tabelaAtual.".".$regiaoJoin["identificador"]. "::text AS codigo".$regiaoJoin["codigo_tipo_regiao"];
  357 + $colunas[] = $tabelaAtual.".".$regiaoJoin["colunanomeregiao"]. "::text AS nome".$regiaoJoin["codigo_tipo_regiao"];
  358 +
  359 + $nomesColunas[] = " codigo".$regiaoJoin["codigo_tipo_regiao"];
  360 + $nomesColunas[] = " nome".$regiaoJoin["codigo_tipo_regiao"];
  361 +
  362 + $juncoes .= " JOIN {$regiaoJoin['esquemadb']}.{$regiaoJoin['tabela']} as $tabelaAtual ON
  363 + $tabelaAtual.$colunaLigacaoAtual::text = $tabelaAnterior.$colunaLigacaoAnterior::text
  364 + ";
  365 + $codRegioes[] = $regiaoJoin["codigo_tipo_regiao"];
  366 + }
  367 + $colunas = array_unique($colunas);
  368 + }
  369 + else{
  370 + $colunas[] = $regiao["identificador"]. "::text AS codigo".$regiao["codigo_tipo_regiao"];
  371 + $colunas[] = $regiao["colunanomeregiao"]. "::text AS nome".$regiao["codigo_tipo_regiao"];
  372 +
  373 + $nomesColunas[] = " codigo".$regiao["codigo_tipo_regiao"];
  374 + $nomesColunas[] = " nome".$regiao["codigo_tipo_regiao"];
  375 +
  376 + $codRegioes[] = $regiao["codigo_tipo_regiao"];
  377 + }
  378 + $mascara = $select;
  379 + $select = str_replace("__COLUNAS__",implode(",",$colunas),$select);
  380 + $selectPricipal = $select;
  381 + $select .= $juncoes;
  382 + return array("codRegioes"=>$codRegioes,"juncoes"=>$juncoes,"mascara"=>$mascara,"principal"=>$selectPricipal,"select"=>$select,"colunas"=>$colunas,"nomesColunas"=>$nomesColunas);
  383 +}
  384 +
  385 +function dimensoesGeo(){
  386 + global $chavesRegiao, $m, $selecaoRegiao, $regioes, $filhosDaRegiao, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao;
  387 + //essas variaveis sao globais e usadas em outras funcoes
184 388 foreach($regioes as $regiao){
185 389 $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array();
186 390 $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array();
187 391 $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array();
188 392 }
  393 + //xml normal
189 394 $xml1 = "";
  395 + //xml geocodigo
190 396 $xml2 = "";
191   -
192   - foreach($regioes as $regiao){
  397 + //
  398 + //sera que e todas mesmo ou so a escolhida?????
  399 + //
  400 + $todasRegioes = $m->listaTipoRegiao();
  401 + $xmlRegioes = array();
  402 + foreach($todasRegioes as $regiao){
193 403 $sqls = array();
194   - $xml1 .= "
195   - <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde:".converte($regiao["nome_tipo_regiao"])."'>
196   - <Hierarchy hasAll='true' primaryKey='codigo'>
  404 + $temp = converte($regiao["nome_tipo_regiao"]);
  405 + $xml1 = "
  406 + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde:".$temp."'>
  407 + <Hierarchy hasAll='true' primaryKey='codigo{$regiao["codigo_tipo_regiao"]}'>
197 408 ";
198   - $xml2 .= "
199   - <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_geocod' caption='GeoCod:".converte($regiao["nome_tipo_regiao"])."'>
200   - <Hierarchy hasAll='true' primaryKey='codigo'>
  409 + $xml2 = "
  410 + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_geocod' caption='GeoCod:".$temp."'>
  411 + <Hierarchy hasAll='true' primaryKey='codigo{$regiao["codigo_tipo_regiao"]}'>
201 412 ";
  413 + //
202 414 //cria uma view juntando as tabelas da hierarquia de regioes
203   - $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]);
204   - //$caminho[] = $regiao["codigo_tipo_regiao"];
205   -
206   - $n = count($caminho);
207   - $regiaoAtual = $regiao;
208   - $niveis1 = array();
209   - $niveis2 = array();
210   - $unico = "true";
211   - for($j=0;$j<=$n;$j++){
212   - $colunas = array();
213   - $sql = "SELECT __COLUNAS__ FROM {$regiaoAtual['esquemadb']}.{$regiaoAtual['tabela']} as a$j ";
214   - $colunas[] = "a$j.{$regiaoAtual['identificador']}::text as codigo ";
215   - //inclui campos vazios na sequencia de campos
216   - for($k=0;$k<$j;$k++){
217   - $colunas[] = "''";
218   - $colunas[] = "''";
  415 + //
  416 + $hs = $m->listaHierarquia();
  417 + //$regiao["codigo_tipo_regiao"] = 2;
  418 + foreach($hs as $h){
  419 + if($h["codigo_tipo_regiao"] == $regiao["codigo_tipo_regiao"]){
  420 + $caminho = caminhoRegiao($hs,$chavesRegiao,$h,$regiao["codigo_tipo_regiao"]);
219 421 }
  422 + }
  423 + //
  424 + //sql da tabela principal da regiao
  425 + //
  426 + $dadosSelect = sqlDasRegioes($regiao,$caminho,$chavesRegiao);
  427 + //
  428 + //pega os dados das demais tabelas associadas, menos da primeira
  429 + //para unir os dados
  430 + //
  431 + $niveisXml1 = array();
  432 + $niveisXml2 = array();
  433 +
  434 + $temp = converte($regiao["nome_tipo_regiao"]);
  435 + $niveisXml1[] = "
  436 + <Level name='".$temp."' column='codigo{$regiao["codigo_tipo_regiao"]}' nameColumn='nome".$regiao["codigo_tipo_regiao"]."'
  437 + uniqueMembers='true' />
  438 + ";
  439 + $niveisXml2[] = "
  440 + <Level name='".$temp." - GeoCod #".$regiao["codigo_tipo_regiao"]."' column='codigo{$regiao["codigo_tipo_regiao"]}' nameColumn='nome".$regiao["codigo_tipo_regiao"]."'
  441 + uniqueMembers='true' />
  442 + ";
  443 + //juncoes
  444 + while($caminho){
  445 + $a = array_shift($caminho);
  446 + $u = sqlDasRegioes($chavesRegiao[$a["join"]],array(),$chavesRegiao);
  447 + //substitui as colunas para obter dados vazios
  448 + $colunasVazias = array();
  449 + foreach($dadosSelect["nomesColunas"] as $nomesPrincipais){
  450 + $colunasVazias[$nomesPrincipais] = "'' AS $nomesPrincipais";
  451 + }
  452 + $n = count($u["colunas"]);
  453 + for($q = 0; $q < $n; $q++){
  454 + $colunasVazias[$u["nomesColunas"][$q]] = $u["colunas"][$q];
  455 + }
  456 + //
  457 + //inclui as colunas da primeira tabela
  458 + //
  459 + $colunasPrimeiraTabela = "'' as codigo".$regiao["codigo_tipo_regiao"].","."'' as nome".$regiao["codigo_tipo_regiao"].",";
220 460  
221   - $colunas[] = "a$j.{$regiaoAtual['identificador']}::text AS {$regiaoAtual['identificador']} ";
222   - $colunas[] = "a$j.{$regiaoAtual['colunanomeregiao']}::text AS {$regiaoAtual['colunanomeregiao']} ";
  461 + $mascara = str_replace("__COLUNAS__",$colunasPrimeiraTabela."__COLUNAS__",$u["mascara"]);
223 462  
224   - for($i=$j;$i<$n;$i++){
225   - $r = $m->listaTipoRegiao($caminho[$i]);
  463 + $u["select"] = str_replace("__COLUNAS__",implode(",",$colunasVazias),$mascara);
226 464  
227   - if(count($colunas) > ($j + 4)){
228   - $colunas[] = "''::text AS {$r['identificador']} ";
229   - $colunas[] = "''::text AS {$r['colunanomeregiao']} ";
230   - }
231   - else{
232   - $colunas[] = "b$i.{$r['identificador']}::text AS {$r['identificador']} ";
233   - $colunas[] = "b$i.{$r['colunanomeregiao']}::text AS {$r['colunanomeregiao']} ";
234   - }
235   - //descobre a coluna de ligacao da regiao
236   - $agr = $m->listaAgregaRegiaoFilho($regiaoAtual['codigo_tipo_regiao'],$r['codigo_tipo_regiao']);
  465 + $temp = converte($chavesRegiao[$a["join"]]["nome_tipo_regiao"]);
237 466  
238   - $sql .= " JOIN {$r['esquemadb']}.{$r['tabela']} as b$i ON
239   - a$j.{$agr['colunaligacao_regiaopai']}::text = b$i.{$r['identificador']}::text
240   - ";
241   - }
242   -
243   - $colunas = implode($colunas,",");
244   - $sql = str_replace("__COLUNAS__",$colunas,$sql);
245   - //inclui a selecao se houver
246   - if(!empty($selecaoRegiao[$regiaoAtual["codigo_tipo_regiao"]])){
247   - $rs = $selecaoRegiao[$regiaoAtual["codigo_tipo_regiao"]];
248   - }
249   - $pos = strpos($sql, "regiao.".$rs["item"]." ");
250   - if($rs != "" || !$pos === false){
251   - $sql .= " WHERE regiao.".$rs["sql"];
252   - }
253   - $sqls[] = $sql;
254   -
255   - $niveis1[] = "
256   - <Level name='".converte($regiaoAtual["nome_tipo_regiao"])."' column='".$regiaoAtual["colunanomeregiao"]."' nameColumn='".$regiaoAtual["colunanomeregiao"]."'
257   - uniqueMembers='".$unico."' />
  467 + $niveisXml1[] = "
  468 + <Level name='".$temp."' column='codigo{$a["join"]}' nameColumn='nome".$a["join"]."'
  469 + uniqueMembers='false' />
258 470 ";
259   - $niveis2[] = "
260   - <Level name='".$regiaoAtual["nome_tipo_regiao"]." - GeoCod #".$regiaoAtual["codigo_tipo_regiao"]."' column='".$regiaoAtual["identificador"]."' nameColumn='".$regiaoAtual["colunanomeregiao"]."'
261   - uniqueMembers='".$unico."' />
  471 + $niveisXml2[] = "
  472 + <Level name='".$temp." - GeoCod #".$a["join"]."' column='codigo{$a["join"]}' nameColumn='nome".$a["join"]."'
  473 + uniqueMembers='false' />
262 474 ";
263 475 $unico = "false";
264   -
265   - $regiaoAtual = $m->listaTipoRegiao($caminho[$j]);
266 476 }
267   - //echo "<pre>";echo implode("UNION\n\n",$sqls);exit;
268 477  
  478 + //inclui a selecao se houver
  479 + $sqlreg = "";
  480 + if(!empty($selecaoRegiao[$regiao["codigo_tipo_regiao"]])){
  481 + $rs = $selecaoRegiao[$regiao["codigo_tipo_regiao"]];
  482 + $sqlreg = " WHERE regiao.".$rs["sql"];
  483 + }
269 484 $xml1 .= "
270   - <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' ><SQL dialect='generic' >".implode(" UNION ",$sqls)."</SQL></view>
  485 + <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' >
  486 + <SQL dialect='generic' >".$dadosSelect["select"]."</SQL>
  487 + </view>
271 488 ";
272 489 $xml2 .= "
273   - <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_GeoCod' ><SQL dialect='generic' >".implode(" UNION ",$sqls)."</SQL></view>
  490 + <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_GeoCod' >
  491 + <SQL dialect='generic' >".$dadosSelect["select"]."</SQL>
  492 + </view>
274 493 ";
275   - $niveis1 = array_reverse($niveis1);
276   - $niveis2 = array_reverse($niveis2);
277   - $xml1 .= implode(" ",$niveis1);
278   - $xml2 .= implode(" ",$niveis2);
  494 + $niveisXml1 = array_reverse($niveisXml1);
  495 + $niveisXml2 = array_reverse($niveisXml2);
  496 + $xml1 .= implode(" ",$niveisXml1);
  497 + $xml2 .= implode(" ",$niveisXml2);
279 498 $xml1 .= "
280 499 </Hierarchy>
281 500 </Dimension>
... ... @@ -284,11 +503,19 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
284 503 </Hierarchy>
285 504 </Dimension>
286 505 ";
  506 + $xmlRegioes[$regiao["codigo_tipo_regiao"]] = array(
  507 + "xml" => $xml1.$xml2,
  508 + "juncoes" => $dadosSelect["juncoes"],
  509 + "codigo_tipo_regiao"=> $regiao["codigo_tipo_regiao"],
  510 + "colunas" => $dadosSelect["colunas"],
  511 + "nomesColunas"=> $dadosSelect["nomesColunas"],
  512 + "codRegioes"=>$dadosSelect["codRegioes"]
  513 + );
287 514 }
288   - //echo header("Content-type: application/xml");
289   - //echo $xml.$xml1.$xml2;exit;
290   - //echo "<pre>";var_dump($filhosDaRegiao);exit;
291   - //outras dimensoes definidas nos parametros e que nao sejam do tipo tempo
  515 + return $xmlRegioes;
  516 +}
  517 +function dimensoesOutras(){
  518 + global $m;
292 519 $parametros = $m->listaTodosParametros();
293 520 $dimOutras = array();
294 521 foreach($parametros as $p){
... ... @@ -305,7 +532,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
305 532 }
306 533 $xml3 = "";
307 534 foreach($dimOutras as $d){
308   - $k = $p["esquemadb"]."_".$d["tabela"]."_".$d["coluna"];
  535 + $k = $d["esquemadb"]."_".$d["tabela"]."_".$d["coluna"];
309 536 $xml3 .= "
310 537 <Dimension name='".$k."' caption='".converte($d["nome"])."'>
311 538 <Hierarchy hasAll='true' primaryKey='codigo'>
... ... @@ -322,16 +549,17 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
322 549 $xml3 .= "</Hierarchy>
323 550 </Dimension>";
324 551 }
325   - $xml .= $xml1.$xml2.$xml3;
326   - //junta as medidas conforme o nome da tabela utilizada
  552 + return $xml3;
  553 +}
  554 +function dimensoesTabelas(){
  555 + global $dimRegioes, $filhosDaRegiao, $m, $VirtualCubeDimension, $VirtualCubeMeasure, $chavesRegiao, $medidas, $codigo_tipo_regiao, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao;
327 556  
328   - //var_dump($medidas);exit;
  557 + $xml = "";
329 558 $tbs = array();
330   - //echo $codigo_tipo_regiao;exit;
331 559 foreach($medidas as $medida){
332 560 if($codigo_tipo_regiao == "" || $medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){
333 561 $k = $medida["esquemadb"].$medida["tabela"];
334   - //echo "<pre>".$k;
  562 +
335 563 if(empty($tbs[$k])){
336 564 $tbs[$k] = array($medida);
337 565 }
... ... @@ -341,13 +569,9 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
341 569 }
342 570 }
343 571 //monta os cubos para cada esquema.tabela diferente
344   - $VirtualCubeDimension = array();
345   - $VirtualCubeMeasure = array();
346   -
347 572 foreach($tbs as $tb){
348 573 //cabecalho de cada cubo obtido da primeira medida
349 574 $c = $tb[0];
350   -
351 575 $VirtualCubeDimension[] = "
352 576 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />
353 577 ";
... ... @@ -356,18 +580,17 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
356 580 ";
357 581  
358 582 array_push(
359   - $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
360   - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />"
361   - );
  583 + $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
  584 + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />"
  585 + );
362 586 array_push(
363   - $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
364   - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />"
365   - );
  587 + $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
  588 + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />"
  589 + );
366 590 //verifica as dimensoes do tipo tempo
367 591 $dimEnsoes = array();
368   - //echo "<pre>";var_dump($tb)."<br>";
  592 +
369 593 foreach($tb as $medida){
370   - //echo "<pre>";var_dump($medida)."<br>";
371 594 $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false);
372 595 $parComposto = array(); //guarda a composicao da chave que liga com a dimensao
373 596 $colunaAdicionais = array();
... ... @@ -389,7 +612,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
389 612 }
390 613 //outros parametros
391 614 $outrosParametros = array();
392   - //echo "<pre>";var_dump($parametros);
  615 +
393 616 foreach($parametros as $parametro){
394 617 $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"];
395 618 if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){
... ... @@ -404,8 +627,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
404 627 //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>';
405 628  
406 629 $xml .= "<Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>";
407   - $incluirChaves = array("*");
408   -
  630 + $incluirChaves = array("tabelamedida{$c["id_medida_variavel"]}.*");
409 631 if(count($parComposto) > 0){
410 632 //$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}";
411 633 $incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_";
... ... @@ -416,18 +638,39 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
416 638 }
417 639 }
418 640  
419   - $sql = "select ".implode(",",$incluirChaves).",{$c["colunaidgeo"]}::text as codigodim from {$c["esquemadb"]}.{$c["tabela"]}";
420   - //a tabela pode ter dimensoes em diferentes hierarquias
  641 +
  642 + $r = $chavesRegiao[$c["codigo_tipo_regiao"]];
  643 + $sql = "
  644 + select ".implode(",",$incluirChaves).", tabelamedida{$c["id_medida_variavel"]}.{$c["colunaidgeo"]}::text as codigoreg
  645 + ";
  646 + if(count($dimRegioes[$c["codigo_tipo_regiao"]]["colunas"]) > 0){
  647 + $sql .= ",".implode(",",$dimRegioes[$c["codigo_tipo_regiao"]]["colunas"]);
  648 + }
  649 +
  650 + $sql .= "
  651 + from {$c["esquemadb"]}.{$c["tabela"]} as tabelamedida{$c["id_medida_variavel"]}
  652 + JOIN {$r["esquemadb"]}.{$r["tabela"]} as tabela{$r["codigo_tipo_regiao"]}
  653 + ON tabela{$r["codigo_tipo_regiao"]}.{$r["identificador"]}::text = tabelamedida{$c["id_medida_variavel"]}.{$c["colunaidgeo"]}::text
  654 + ";
  655 + $sql .= $dimRegioes[$c["codigo_tipo_regiao"]]["juncoes"];
  656 +
421 657 $xml .= "
422   - <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view>
423   - <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/>
424   - <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod'/>
  658 + <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view>
425 659 ";
  660 + //dimensoes vinculadas
  661 + $temp = $dimRegioes[$c["codigo_tipo_regiao"]]["codRegioes"];
  662 + $temp[] = $c["codigo_tipo_regiao"];
  663 + foreach($temp as $cod){
  664 + $xml .= "
  665 + <DimensionUsage foreignKey='codigo{$cod}' name='codigo_tipo_regiao_{$cod}' source='codigo_tipo_regiao_{$cod}'/>
  666 + <DimensionUsage foreignKey='codigo{$cod}' name='codigo_tipo_regiao_{$cod}_geocod' source='codigo_tipo_regiao_{$cod}_geocod'/>
  667 + ";
  668 + }
426 669 //inclui as dimensoes filhas
427 670 foreach($filhosDaRegiao[$c["codigo_tipo_regiao"]] as $fr){
428 671 $xml .= "
429   - <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$fr."' source='codigo_tipo_regiao_".$fr."'/>
430   - <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$fr."_geocod' source='codigo_tipo_regiao_".$fr."_geocod'/>
  672 + <DimensionUsage foreignKey='codigoreg' name='codigo_tipo_regiao_".$fr."' source='codigo_tipo_regiao_".$fr."'/>
  673 + <DimensionUsage foreignKey='codigoreg' name='codigo_tipo_regiao_".$fr."_geocod' source='codigo_tipo_regiao_".$fr."_geocod'/>
431 674 ";
432 675 }
433 676  
... ... @@ -454,60 +697,36 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
454 697 $xml .= "
455 698 </Cube>
456 699 ";
457   -
458 700 }
459   -
460   - $xml .= '<VirtualCube name="Todas as medidas" >';
  701 + return $xml;
  702 +}
  703 +function cuboTodas(){
  704 + global $VirtualCubeDimension, $VirtualCubeMeasure;
  705 + $xml = '<VirtualCube name="Todas as medidas" >';
461 706 $VirtualCubeDimension = array_unique($VirtualCubeDimension);
462 707 $VirtualCubeMeasure = array_unique($VirtualCubeMeasure);
463 708 $xml .= implode(" ",$VirtualCubeDimension);
464 709 $xml .= implode(" ",$VirtualCubeMeasure);
465 710 $xml .= '</VirtualCube>';
466   - //
467   - //cubos por regiao
468   - //
469   - //$filhosDaRegiao = array();
470   - //$VirtualCubeDimensionDaRegiao = array();
471   - //$VirtualCubeMeasureDaRegiao = array();
472   -
  711 + return $xml;
  712 +}
  713 +function cuboRegioes(){
  714 + global $regioes, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao, $filhosDaRegiao;
  715 + $xml = "";
473 716 foreach($regioes as $regiao){
474 717 //inclui os parametros para a regiao de acordo com os filhos que possui
475 718 $d = $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]];
476   - $m = $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]];
  719 + $mm = $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]];
477 720 foreach($filhosDaRegiao[$regiao["codigo_tipo_regiao"]] as $f){
478   - //$d = array_merge($d,$VirtualCubeDimensionDaRegiao[$f]);
479   - $m = array_merge($m,$VirtualCubeMeasureDaRegiao[$f]);
  721 + $mm = array_merge($mm,$VirtualCubeMeasureDaRegiao[$f]);
480 722 }
481   - if(count(array_unique($m)) > 0){
  723 + if(count(array_unique($mm)) > 0){
482 724 $xml .= '<VirtualCube name="Regi&amp;atilde;o: '.converte($regiao["nome_tipo_regiao"]).'" >';
483 725 $xml .= implode(" ",array_unique($d));
484   - $xml .= implode(" ",array_unique($m));
  726 + $xml .= implode(" ",array_unique($mm));
485 727 $xml .= '</VirtualCube>';
486 728 }
487 729 }
488   - $xml .= "</Schema>";
489   - error_reporting(0);
490   - ob_end_clean();
491   -
492   - if($_GET["output"] == "xml"){
493   - echo header("Content-type: application/xml");
494   - echo $xml;exit;
495   - }
496   - gravaDados(array($xml),$arquivoXmlEsquema);
497   -}
498   -if($_GET["output"] == "xml"){
499   - echo header("Content-type: application/xml");
500   - header("Location:".$_GET["xmlesquema"]);
501   -}
502   -else{
503   - header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]);
504   -}
505   -function converte($texto){
506   - $texto = str_replace("&","&amp;",htmlentities($texto));
507   - //$texto = htmlentities($texto);
508   - //$texto = mb_convert_encoding($texto, 'ISO-8859-1', "auto");
509   - //$texto = utf8_encode($texto);
510   - //$textox = mb_convert_encoding($texto, "UTF-8", mb_detect_encoding($texto, "UTF-8, ISO-8859-1, ISO-8859-15", true));
511   - return $texto;
  730 + return $xml;
512 731 }
513 732 ?>
... ...
ms_criamapa.php
... ... @@ -214,7 +214,7 @@ Cria os diretorios tempor&amp;aacute;rios que ser&amp;atilde;o utilizados pelo i3geo par
214 214 $diretorios = criaDirMapa($dir_tmp,$cachedir);
215 215 if(!$diretorios)
216 216 {echo "<p style=color:red ><b>N&atilde;o foi poss&iacute;vel criar os diret&oacute;rios tempor&aacute;rios em $dir_tmp.</b></p>";exit;}
217   -criaIndex();
  217 +criaIndex($dir_tmp,$diretorios);
218 218 $tmpfname = $diretorios[0];
219 219 $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
220 220 /*
... ... @@ -329,7 +329,6 @@ $_SESSION[&quot;contadorsalva&quot;] = 0;//essa variavel e utilizada pela ferramenta telar
329 329 $_SESSION["i3georendermode"] = $i3georendermode_;
330 330 $_SESSION["saikuUrl"] = $saikuUrl_;
331 331  
332   -
333 332 //
334 333 //pega todas as vari&aacute;veis da sess&atilde;o, mesmo as que foram definidas anteriormente
335 334 //
... ... @@ -450,6 +449,7 @@ else{
450 449 //algumas aplicacoes usam essa variavel (SAIKU)
451 450 $mapext = $ext->minx." ".$ext->miny." ".$ext->maxx." ".$ext->maxy;
452 451 }
  452 +
453 453 /*
454 454 Configura os endere&ccedil;os corretos no mapfile.
455 455  
... ... @@ -490,20 +490,20 @@ if(isset($poligonos))
490 490 if(isset($url_wms))
491 491 {incluiTemaWms();}
492 492  
493   -adaptaLayers();
  493 +adaptaLayers($tmpfname,$versao);
494 494  
495 495 if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat"))
496 496 {require_once(dirname(__FILE__)."/ms_registraip.php");}
497 497 //echo $tmpfname;exit;
498 498 if ($interface != "mashup")
499 499 {abreInterface($interface,$caminho,$tempo);}
  500 +
500 501 /*
501 502 Adapta os dados de cada layer.
502 503  
503 504 Faz altera&ccedil;&otilde;es em cada layer caso sejam necess&aacute;rias.
504 505 */
505   -function adaptaLayers(){
506   - global $tmpfname,$versao;
  506 +function adaptaLayers($tmpfname,$versao){
507 507 $mapa = ms_newMapObj($tmpfname);
508 508 $path = $mapa->shapepath;
509 509 $numlayers = $mapa->numlayers;
... ... @@ -749,11 +749,10 @@ function incluiTemasIniciais(){
749 749 erroCriacao();
750 750 }
751 751 /*
752   -Cria os arquivos vazios index.htm e index.html nos diretrios tempor&aacute;rios
  752 +Cria os arquivos vazios index.htm e index.html nos diretorios tempor&aacute;rios
753 753 */
754   -function criaIndex()
  754 +function criaIndex($dir_tmp,$diretorios)
755 755 {
756   - global $dir_tmp,$diretorios;
757 756 if (!file_exists($dir_tmp."/index.htm"))
758 757 {
759 758 $f = fopen($dir_tmp."/index.htm","x");
... ... @@ -771,7 +770,7 @@ function criaIndex()
771 770 }
772 771 if (!file_exists($dir_tmp."/index.htm"))
773 772 {
774   - echo "Erro. N&atilde;o foi poss&iacute;vel gravar no diretrio tempor&aacute;rio";
  773 + echo "Erro. N&atilde;o foi poss&iacute;vel gravar no diret&oacute;rio tempor&aacute;rio";
775 774 exit;
776 775 }
777 776 }
... ...