Commit bb13277c13e7aadd46ba4e880d7d75a2abf73302

Authored by Edmar Moretti
1 parent ea5d9965

Inclusão do link para o curso de i3Geo na página inicial

Ajustes na geração do xml esquema para SAIKU
ferramentas/saiku/esquemaxml.php
1 <?php 1 <?php
2 -//utilize output=xml para debug 2 +//
  3 +//utilize &output=xml para ver o xml
  4 +//
  5 +//utilize &xmlesquema= caso o XML ja exista
  6 +//
  7 +//http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=&xmlesquema=http://localhost/testemondrian.xml
  8 +//
3 //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas 9 //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas
4 if(empty($_GET["g_sid"])){ 10 if(empty($_GET["g_sid"])){
5 include(dirname(__FILE__)."/../../ms_criamapa.php"); 11 include(dirname(__FILE__)."/../../ms_criamapa.php");
6 //reinicia a url 12 //reinicia a url
7 - $urln = "?g_sid=".session_id()."&locaplic=".$_GET["locaplic"]."&mapext=".$mapext."&origem=".$_GET["origem"]."&output=".$_GET["output"]; 13 + $urln = "?g_sid=".session_id()."&locaplic=".$_GET["locaplic"]."&mapext=".$mapext."&origem=".$_GET["origem"]."&output=".$_GET["output"]."&xmlesquema=".$_GET["xmlesquema"];
8 header("Location:".$urln); 14 header("Location:".$urln);
9 exit; 15 exit;
10 } 16 }
@@ -22,11 +28,16 @@ session_name(&quot;i3GeoPHP&quot;); @@ -22,11 +28,16 @@ session_name(&quot;i3GeoPHP&quot;);
22 session_id($_GET["g_sid"]); 28 session_id($_GET["g_sid"]);
23 session_start(); 29 session_start();
24 $map_file = $_SESSION["map_file"]; 30 $map_file = $_SESSION["map_file"];
25 -$urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml"; 31 +if(empty($_GET["xmlesquema"])){
  32 + $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml";
  33 +}
  34 +else{
  35 + $urlXmlEsquema = $_GET["xmlesquema"];
  36 +}
26 $arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml"; 37 $arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml";
27 38
28 /* 39 /*
29 -$saikuConfigDataSource vem do ms_configura.php 40 + $saikuConfigDataSource vem do ms_configura.php
30 41
31 Exemplo de arquivo de fonte: 42 Exemplo de arquivo de fonte:
32 type=OLAP 43 type=OLAP
@@ -39,15 +50,15 @@ password=postgres @@ -39,15 +50,15 @@ password=postgres
39 Array com os parametros definidos em ms_configura: 50 Array com os parametros definidos em ms_configura:
40 51
41 $saikuConfigDataSource = array( 52 $saikuConfigDataSource = array(
42 - "type"=>"OLAP",  
43 - "driver"=>"mondrian.olap4j.MondrianOlap4jDriver",  
44 - "location"=>"jdbc:mondrian:Jdbc=jdbc:postgresql",  
45 - "serverdb"=>"localhost",  
46 - "port"=>"5432",  
47 - "database"=>"i3geosaude",  
48 - "JdbcDrivers"=>"org.postgresql.Driver",  
49 - "username"=>"postgres",  
50 - "password"=>"postgres" 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"
51 ); 62 );
52 */ 63 */
53 $stringDatasource = " 64 $stringDatasource = "
@@ -60,395 +71,415 @@ password={$saikuConfigDataSource[&quot;password&quot;]} @@ -60,395 +71,415 @@ password={$saikuConfigDataSource[&quot;password&quot;]}
60 "; 71 ";
61 //salva o arquivo com a fonte 72 //salva o arquivo com a fonte
62 gravaDados(array($stringDatasource),$nomeDatasource); 73 gravaDados(array($stringDatasource),$nomeDatasource);
63 -$m = new Metaestat();  
64 -$selecaoRegiao = array();  
65 -//obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao  
66 -$codigo_tipo_regiao = "";  
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]); 74 +
  75 +if(empty($_GET["xmlesquema"])){
  76 + $m = new Metaestat();
  77 +
  78 + //
  79 + //obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao
  80 + //
  81 + $selecaoRegiao = array();
  82 + $codigo_tipo_regiao = "";
  83 + if($map_file != ""){
  84 + $mapa = ms_newMapObj($map_file);
  85 + $c = $mapa->numlayers;
  86 + for ($i=0;$i < $c;++$i){
  87 + $l = $mapa->getlayer($i);
  88 + //verifica o alias na conexao
  89 + if (!empty($postgis_mapa)){
  90 + if ($l->connectiontype == MS_POSTGIS){
  91 + $lcon = $l->connection;
  92 + if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){
  93 + if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade
  94 + {$l->set("connection",$postgis_mapa);
  95 + }
  96 + else{
  97 + $l->set("connection",$postgis_mapa[$lcon]);
  98 + }
81 } 99 }
82 } 100 }
83 } 101 }
84 - }  
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]; 102 + //
  103 + $registros = array();
  104 + if($l->status == MS_DEFAULT && $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO") != ""){
  105 + //verifica se tem selecao
  106 + $qyfile = dirname($map_file)."/".$l->name.".php";
  107 + if(file_exists($qyfile)){
  108 + $codigo_tipo_regiao = $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO");
  109 + //pega os registros
  110 + $shapes = retornaShapesSelecionados($l,$map_file,$mapa);
  111 + //pega o nome da coluna que identifica cada registro
  112 + $regiao = $m->listaTipoRegiao($codigo_tipo_regiao);
  113 + $item = $regiao["identificador"];
  114 + foreach($shapes as $shape){
  115 + $registros[] = $shape->values[$item];
  116 + }
  117 + $reg = $item." IN ('".implode("','",$registros)."') ";
  118 + $selecaoRegiao[$codigo_tipo_regiao] = array(
  119 + "item" => $item,
  120 + "sql" => $reg
  121 + );
  122 + break; //mantem a primeira ocorrencia de regiao que possui selecao
  123 + }
  124 + else{
  125 + $selecaoRegiao[$codigo_tipo_regiao] = "";
99 } 126 }
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] = "";  
109 } 127 }
110 } 128 }
111 } 129 }
112 -}  
113 -if($codigo_tipo_regiao == ""){  
114 - $regioes = $m->listaTipoRegiao();  
115 -}  
116 -else{  
117 - $regioes = array($m->listaTipoRegiao($codigo_tipo_regiao));  
118 -}  
119 -//echo "<pre>";var_dump($regioes);exit;  
120 -$regiao = "";  
121 -$item = "";  
122 -$registros = "";  
123 -//echo "<pre>";var_dump($regioes);exit;  
124 -  
125 -$xml = "<Schema name='i3Geo Metaestat'>";  
126 -//cria as dimensoes de tipo temporal  
127 -if(empty($saikuConfigDataSource['tabelaDimensaoTempo'])){  
128 - $saikuConfigDataSource['tabelaDimensaoTempo'] = "i3geo_metaestat.dim_tempo";  
129 -}  
130 -$sqlAno = "select nu_ano from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano order by nu_ano";  
131 -$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";  
132 -//dimensoes temporais  
133 -$xml .= " 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 + }
  147 + $sqlAno = "select nu_ano from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano order by nu_ano";
  148 + $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 + //dimensoes temporais
  150 + $xml .= "
134 <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'> 151 <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'>
135 - <Hierarchy hasAll='true' primaryKey='nu_ano'>  
136 - <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view>  
137 - <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/>  
138 - </Hierarchy> 152 + <Hierarchy hasAll='true' primaryKey='nu_ano'>
  153 + <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view>
  154 + <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/>
  155 + </Hierarchy>
139 </Dimension> 156 </Dimension>
140 <Dimension name='Mensal' type='TimeDimension' caption='Tempo: Mensal'> 157 <Dimension name='Mensal' type='TimeDimension' caption='Tempo: Mensal'>
141 - <Hierarchy hasAll='true' primaryKey='nu_anomes'>  
142 - <view alias='tempo_ano' ><SQL dialect='generic' >$sqlMes</SQL></view>  
143 - <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/>  
144 - <Level nameColumn='mes' name='Mes' column='nu_mes' type='Numeric' uniqueMembers='false' levelType='TimeMonths'/>  
145 - </Hierarchy> 158 + <Hierarchy hasAll='true' primaryKey='nu_anomes'>
  159 + <view alias='tempo_ano' ><SQL dialect='generic' >$sqlMes</SQL></view>
  160 + <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/>
  161 + <Level nameColumn='mes' name='Mes' column='nu_mes' type='Numeric' uniqueMembers='false' levelType='TimeMonths'/>
  162 + </Hierarchy>
146 </Dimension> 163 </Dimension>
147 <Dimension name='Tempo' type='TimeDimension' caption='Tempo'> 164 <Dimension name='Tempo' type='TimeDimension' caption='Tempo'>
148 - <Hierarchy hasAll='true' primaryKey='nu_anomes'>  
149 - <view alias='tempo' ><SQL dialect='generic' >$sqlMes</SQL></view>  
150 - <Level name='Ano' column='nu_ano' type='String' uniqueMembers='true' levelType='TimeYears'/>  
151 - <Level nameColumn='mes' name='Mes' column='nu_mes' type='String' uniqueMembers='false' levelType='TimeMonths'/>  
152 - </Hierarchy> 165 + <Hierarchy hasAll='true' primaryKey='nu_anomes'>
  166 + <view alias='tempo' ><SQL dialect='generic' >$sqlMes</SQL></view>
  167 + <Level name='Ano' column='nu_ano' type='String' uniqueMembers='true' levelType='TimeYears'/>
  168 + <Level nameColumn='mes' name='Mes' column='nu_mes' type='String' uniqueMembers='false' levelType='TimeMonths'/>
  169 + </Hierarchy>
153 </Dimension> 170 </Dimension>
154 -";  
155 -//dimensoes geograficas  
156 -//as dimensoes sao duplicadas  
157 -//uma delas contem o geocodigo que permite a geracao do mapa  
158 -  
159 -//guarda as regioes filhas de uma determinada regiao (chave)  
160 -$filhosDaRegiao = array();  
161 -$VirtualCubeDimensionDaRegiao = array();  
162 -$VirtualCubeMeasureDaRegiao = array();  
163 -foreach($regioes as $regiao){  
164 - $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array();  
165 - $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array();  
166 - $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array();  
167 -}  
168 -$xml1 = "";  
169 -$xml2 = "";  
170 -foreach($regioes as $regiao){  
171 - $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]);  
172 - $xml1 .= "  
173 - <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde:".converte($regiao["nome_tipo_regiao"])."'>  
174 - <Hierarchy hasAll='true' primaryKey='codigo'>  
175 "; 171 ";
176 - $xml2 .= " 172 + //dimensoes geograficas
  173 + //as dimensoes sao duplicadas
  174 + //uma delas contem o geocodigo que permite a geracao do mapa
  175 +
  176 + //guarda as regioes filhas de uma determinada regiao (chave)
  177 + $filhosDaRegiao = array();
  178 + $VirtualCubeDimensionDaRegiao = array();
  179 + $VirtualCubeMeasureDaRegiao = array();
  180 + foreach($regioes as $regiao){
  181 + $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array();
  182 + $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array();
  183 + $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array();
  184 + }
  185 + $xml1 = "";
  186 + $xml2 = "";
  187 + foreach($regioes as $regiao){
  188 + $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]);
  189 + $xml1 .= "
  190 + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde:".converte($regiao["nome_tipo_regiao"])."'>
  191 + <Hierarchy hasAll='true' primaryKey='{$regiao['identificador']}'>
  192 + ";
  193 + $xml2 .= "
177 <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_geocod' caption='GeoCod:".converte($regiao["nome_tipo_regiao"])."'> 194 <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_geocod' caption='GeoCod:".converte($regiao["nome_tipo_regiao"])."'>
178 - <Hierarchy hasAll='true' primaryKey='codigo'>  
179 - ";  
180 - //cria uma view juntando as tabelas da hierarquia de regioes  
181 - $n = count($caminho);  
182 - $colunas = array();  
183 - $niveis1 = array();  
184 - $niveis2 = array();  
185 - $sql = "SELECT __COLUNAS__ FROM {$regiao['esquemadb']}.{$regiao['tabela']} AS regiao ";  
186 - $colunas[] = "regiao.{$regiao['identificador']} AS codigo ";  
187 - $colunas[] = "regiao.{$regiao['colunanomeregiao']} AS nome";  
188 - //$colunas[] = "regiao".$regiao['identificador'];  
189 - $tabelaAnt = "regiao";  
190 -  
191 - for($i=0;$i<$n;$i++){  
192 - $r = $m->listaTipoRegiao($caminho[$i]);  
193 -  
194 - array_push($filhosDaRegiao[$caminho[$i]],$regiao["codigo_tipo_regiao"]);  
195 -  
196 - $colunas[] = "j$i.{$r['colunanomeregiao']} AS j$i{$r['colunanomeregiao']}";  
197 - $colunas[] = "j$i.{$r['identificador']} AS j$i{$r['identificador']}";  
198 - $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']}  
199 - AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text 195 + <Hierarchy hasAll='true' primaryKey='{$regiao['identificador']}'>
200 "; 196 ";
201 - $tabelaAnt = "j".$i;  
202 - $niveis1[] = " 197 + //cria uma view juntando as tabelas da hierarquia de regioes
  198 + $n = count($caminho);
  199 + $colunas = array();
  200 + $niveis1 = array();
  201 + $niveis2 = array();
  202 + $sql = "SELECT __COLUNAS__ FROM {$regiao['esquemadb']}.{$regiao['tabela']} AS regiao ";
  203 + $colunas[] = "regiao.{$regiao['identificador']} as codigo ";
  204 + $colunas[] = "regiao.{$regiao['colunanomeregiao']} AS nome";
  205 + //$colunas[] = "regiao".$regiao['identificador'];
  206 + $tabelaAnt = "regiao";
  207 +
  208 + for($i=0;$i<$n;$i++){
  209 + $r = $m->listaTipoRegiao($caminho[$i]);
  210 +
  211 + array_push($filhosDaRegiao[$caminho[$i]],$regiao["codigo_tipo_regiao"]);
  212 +
  213 + $colunas[] = "j$i.{$r['colunanomeregiao']} AS j$i{$r['colunanomeregiao']}";
  214 + $colunas[] = "j$i.{$r['identificador']} AS j$i{$r['identificador']}";
  215 + $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']}
  216 + AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text
  217 + ";
  218 + $tabelaAnt = "j".$i;
  219 + $niveis1[] = "
203 <Level name='".converte($r["nome_tipo_regiao"])."' 220 <Level name='".converte($r["nome_tipo_regiao"])."'
204 - column='{$r['identificador']}'  
205 - nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/>  
206 - ";  
207 - $niveis2[] = " 221 + column='j$i{$r['identificador']}'
  222 + nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/>
  223 + ";
  224 + $niveis2[] = "
208 <Level name='".converte($r["nome_tipo_regiao"])." - GeoCod #{$caminho[$i]}' 225 <Level name='".converte($r["nome_tipo_regiao"])." - GeoCod #{$caminho[$i]}'
209 - column='{$r['identificador']}'  
210 - nameColumn='j$i{$r["identificador"]}' uniqueMembers='false'/>  
211 - ";  
212 - }  
213 - $niveis1[] = " 226 + column='j$i{$r['identificador']}'
  227 + nameColumn='j$i{$r["identificador"]}' uniqueMembers='false'/>
  228 + ";
  229 + }
  230 + $niveis1[] = "
214 <Level name='".converte($regiao["nome_tipo_regiao"])."' 231 <Level name='".converte($regiao["nome_tipo_regiao"])."'
215 - column='codigo'  
216 - nameColumn='nome' uniqueMembers='true' > 232 + column='codigo'
  233 + nameColumn='nome' uniqueMembers='true' >
217 </Level> 234 </Level>
218 - ";  
219 - $niveis2[] = " 235 + ";
  236 + $niveis2[] = "
220 <Level name='".converte($regiao["nome_tipo_regiao"])." - GeoCod #{$regiao["codigo_tipo_regiao"]}' 237 <Level name='".converte($regiao["nome_tipo_regiao"])." - GeoCod #{$regiao["codigo_tipo_regiao"]}'
221 - column='codigo'  
222 - nameColumn='codigo' uniqueMembers='true' />  
223 - ";  
224 - //verifica outras colunas  
225 - $vis = $regiao['colunasvisiveis'];  
226 - if($vis != ""){  
227 - $vis = str_replace(";",",",$vis);  
228 - $vis = str_replace(",,",",",$vis);  
229 - $vis = explode(",",$vis);  
230 - foreach($vis as $v){  
231 - $colunas[] = "regiao.".$v." as ".$v; 238 + column='codigo'
  239 + nameColumn='codigo' uniqueMembers='true' />
  240 + ";
  241 + //verifica outras colunas
  242 + $vis = $regiao['colunasvisiveis'];
  243 + if($vis != ""){
  244 + $vis = str_replace(";",",",$vis);
  245 + $vis = str_replace(",,",",",$vis);
  246 + $vis = explode(",",$vis);
  247 + foreach($vis as $v){
  248 + $colunas[] = "regiao.".$v." as ".$v;
  249 + }
  250 + $colunas = array_unique($colunas);
232 } 251 }
233 - $colunas = array_unique($colunas);  
234 - }  
235 - $colunas = implode($colunas,",");  
236 - $sql = str_replace("__COLUNAS__",$colunas,$sql);  
237 - //inclui a selecao se houver  
238 - if(!empty($selecaoRegiao[$regiao["codigo_tipo_regiao"]]))  
239 - $rs = $selecaoRegiao[$regiao["codigo_tipo_regiao"]];  
240 - $pos = strpos($sql, "regiao.".$rs["item"]." ");  
241 - if($rs != "" || !$pos === false){  
242 - $sql .= " WHERE regiao.".$rs["sql"];  
243 - }  
244 -  
245 - $xml1 .= "  
246 - <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' ><SQL dialect='generic' >$sql</SQL></view>  
247 - ";  
248 - $xml2 .= "  
249 - <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_GeoCod' ><SQL dialect='generic' >$sql</SQL></view>  
250 - ";  
251 - $xml1 .= implode(" ",$niveis1);  
252 - $xml2 .= implode(" ",$niveis2);  
253 - $xml1 .= "  
254 - </Hierarchy> 252 + $colunas = implode($colunas,",");
  253 + $sql = str_replace("__COLUNAS__",$colunas,$sql);
  254 + //inclui a selecao se houver
  255 + if(!empty($selecaoRegiao[$regiao["codigo_tipo_regiao"]]))
  256 + $rs = $selecaoRegiao[$regiao["codigo_tipo_regiao"]];
  257 + $pos = strpos($sql, "regiao.".$rs["item"]." ");
  258 + if($rs != "" || !$pos === false){
  259 + $sql .= " WHERE regiao.".$rs["sql"];
  260 + }
  261 +
  262 + $xml1 .= "
  263 + <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' ><SQL dialect='generic' >$sql</SQL></view>
  264 + ";
  265 + $xml2 .= "
  266 + <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_GeoCod' ><SQL dialect='generic' >$sql</SQL></view>
  267 + ";
  268 + $xml1 .= implode(" ",$niveis1);
  269 + $xml2 .= implode(" ",$niveis2);
  270 + $xml1 .= "
  271 + </Hierarchy>
255 </Dimension> 272 </Dimension>
256 - ";  
257 - $xml2 .= "  
258 - </Hierarchy> 273 + ";
  274 + $xml2 .= "
  275 + </Hierarchy>
259 </Dimension> 276 </Dimension>
260 - ";  
261 -}  
262 -//echo "<pre>";var_dump($filhosDaRegiao);exit;  
263 -//outras dimensoes definidas nos parametros e que nao sejam do tipo tempo  
264 -$parametros = $m->listaTodosParametros();  
265 -$dimOutras = array();  
266 -foreach($parametros as $p){  
267 - //apenas as nao tempo  
268 - if($p["tipo"] < 1 || $p["tipo"] > 5){  
269 - $k = $p["esquema"]."_".$p["tabela"]."_".$p["coluna"];  
270 - if(empty($tbs[$k])){  
271 - $dimOutras[$k] = $p;  
272 - }  
273 - else{  
274 - array_push($dimOutras[$k],$p); 277 + ";
  278 + }
  279 + //echo "<pre>";var_dump($filhosDaRegiao);exit;
  280 + //outras dimensoes definidas nos parametros e que nao sejam do tipo tempo
  281 + $parametros = $m->listaTodosParametros();
  282 + $dimOutras = array();
  283 + foreach($parametros as $p){
  284 + //apenas as nao tempo
  285 + if($p["tipo"] < 1 || $p["tipo"] > 5){
  286 + $k = $p["esquema"]."_".$p["tabela"]."_".$p["coluna"];
  287 + if(empty($tbs[$k])){
  288 + $dimOutras[$k] = $p;
  289 + }
  290 + else{
  291 + array_push($dimOutras[$k],$p);
  292 + }
275 } 293 }
276 } 294 }
277 -}  
278 -$xml3 = "";  
279 -foreach($dimOutras as $d){  
280 - $k = $p["esquemadb"]."_".$d["tabela"]."_".$d["coluna"];  
281 - $xml3 .= " 295 + $xml3 = "";
  296 + foreach($dimOutras as $d){
  297 + $k = $p["esquemadb"]."_".$d["tabela"]."_".$d["coluna"];
  298 + $xml3 .= "
282 <Dimension name='".$k."' caption='".converte($d["nome"])."'> 299 <Dimension name='".$k."' caption='".converte($d["nome"])."'>
283 - <Hierarchy hasAll='true' primaryKey='codigo'>  
284 - ";  
285 - //cria uma view juntando as tabelas da hierarquia de regioes  
286 - $colunas = "dim.{$d['coluna']} as codigo, ";  
287 - $colunas .= "dim.{$d['coluna']} AS nome";  
288 - $sql = "SELECT {$colunas} FROM ".$d['esquemadb'].".".$d['tabela']." as dim group by codigo";  
289 - $xml3 .= "<view alias='".$k."' ><SQL dialect='generic' >$sql</SQL></view>";  
290 - $xml3 .= "<Level name='".converte($d["nome"])."'  
291 - column='codigo'  
292 - nameColumn='nome' uniqueMembers='true' />  
293 - ";  
294 - $xml3 .= "</Hierarchy> 300 + <Hierarchy hasAll='true' primaryKey='codigo'>
  301 + ";
  302 + //cria uma view juntando as tabelas da hierarquia de regioes
  303 + $colunas = "dim.{$d['coluna']} as codigo, ";
  304 + $colunas .= "dim.{$d['coluna']} AS nome";
  305 + $sql = "SELECT {$colunas} FROM ".$d['esquemadb'].".".$d['tabela']." as dim group by codigo";
  306 + $xml3 .= "<view alias='".$k."' ><SQL dialect='generic' >$sql</SQL></view>";
  307 + $xml3 .= "<Level name='".converte($d["nome"])."'
  308 + column='codigo'
  309 + nameColumn='nome' uniqueMembers='true' />
  310 + ";
  311 + $xml3 .= "</Hierarchy>
295 </Dimension>"; 312 </Dimension>";
296 -}  
297 -$xml .= $xml1.$xml2.$xml3;  
298 -//junta as medidas conforme o nome da tabela utilizada  
299 -$medidas = $m->listaMedidaVariavel();  
300 -//var_dump($medidas);exit;  
301 -$tbs = array();  
302 -//echo $codigo_tipo_regiao;exit;  
303 -foreach($medidas as $medida){  
304 - if($codigo_tipo_regiao == "" || $medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){  
305 - $k = $medida["esquemadb"].$medida["tabela"];  
306 - //echo "<pre>".$k;  
307 - if(empty($tbs[$k])){  
308 - $tbs[$k] = array($medida);  
309 - }  
310 - else{  
311 - array_push($tbs[$k],$medida); 313 + }
  314 + $xml .= $xml1.$xml2.$xml3;
  315 + //junta as medidas conforme o nome da tabela utilizada
  316 + $medidas = $m->listaMedidaVariavel();
  317 + //var_dump($medidas);exit;
  318 + $tbs = array();
  319 + //echo $codigo_tipo_regiao;exit;
  320 + foreach($medidas as $medida){
  321 + if($codigo_tipo_regiao == "" || $medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){
  322 + $k = $medida["esquemadb"].$medida["tabela"];
  323 + //echo "<pre>".$k;
  324 + if(empty($tbs[$k])){
  325 + $tbs[$k] = array($medida);
  326 + }
  327 + else{
  328 + array_push($tbs[$k],$medida);
  329 + }
312 } 330 }
313 } 331 }
314 -}  
315 -//monta os cubos para cada esquema.tabela diferente  
316 -$VirtualCubeDimension = array();  
317 -$VirtualCubeMeasure = array();  
318 -//echo "<pre>";var_dump($tbs)."<br>";exit;  
319 -foreach($tbs as $tb){  
320 - //cabecalho de cada cubo obtido da primeira medida  
321 - $c = $tb[0];  
322 - $VirtualCubeDimension[] = " 332 + //monta os cubos para cada esquema.tabela diferente
  333 + $VirtualCubeDimension = array();
  334 + $VirtualCubeMeasure = array();
  335 + //echo "<pre>";var_dump($tbs)."<br>";exit;
  336 + foreach($tbs as $tb){
  337 + //cabecalho de cada cubo obtido da primeira medida
  338 + $c = $tb[0];
  339 + $VirtualCubeDimension[] = "
323 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' /> 340 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />
324 - ";  
325 - $VirtualCubeDimension[] = " 341 + ";
  342 + $VirtualCubeDimension[] = "
326 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' /> 343 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />
327 - ";  
328 - array_push(  
329 - $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],  
330 - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />"  
331 - );  
332 - array_push(  
333 - $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],  
334 - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />"  
335 - );  
336 - //verifica as dimensoes do tipo tempo  
337 - $dimEnsoes = array();  
338 - //echo "<pre>";var_dump($tb)."<br>";  
339 - foreach($tb as $medida){  
340 - //echo "<pre>";var_dump($medida)."<br>";  
341 - $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false);  
342 - $parComposto = array(); //guarda a composicao da chave que liga com a dimensao  
343 - $colunaAdicionais = array();  
344 - //parametro do tipo tempo  
345 - if(count($parametros) > 0){  
346 - foreach($parametros as $parametro){  
347 - if($parametro["tipo"] < 5 && $parametro["tipo"] > 0){  
348 - $parComposto[] = $parametro["coluna"]; 344 + ";
  345 + array_push(
  346 + $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
  347 + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />"
  348 + );
  349 + array_push(
  350 + $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
  351 + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />"
  352 + );
  353 + //verifica as dimensoes do tipo tempo
  354 + $dimEnsoes = array();
  355 + //echo "<pre>";var_dump($tb)."<br>";
  356 + foreach($tb as $medida){
  357 + //echo "<pre>";var_dump($medida)."<br>";
  358 + $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false);
  359 + $parComposto = array(); //guarda a composicao da chave que liga com a dimensao
  360 + $colunaAdicionais = array();
  361 + //parametro do tipo tempo
  362 + if(count($parametros) > 0){
  363 + foreach($parametros as $parametro){
  364 + if($parametro["tipo"] < 5 && $parametro["tipo"] > 0){
  365 + $parComposto[] = $parametro["coluna"];
  366 + }
349 } 367 }
350 - }  
351 - $VirtualCubeDimension[] = " 368 + $VirtualCubeDimension[] = "
352 <VirtualCubeDimension name='Tempo' /> 369 <VirtualCubeDimension name='Tempo' />
353 - ";  
354 - $u = " 370 + ";
  371 + $u = "
355 <DimensionUsage foreignKey='".implode("_",$parComposto)."_' name='Tempo' source='Tempo'/> 372 <DimensionUsage foreignKey='".implode("_",$parComposto)."_' name='Tempo' source='Tempo'/>
356 - ";  
357 - $dimEnsoes[] = $u;  
358 - array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='Tempo' />");  
359 - }  
360 - //outros parametros  
361 - $outrosParametros = array();  
362 - //TODO criar as dimensoes aqui  
363 - //echo "<pre>";var_dump($parametros);  
364 - foreach($parametros as $parametro){  
365 - $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"];  
366 - if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){  
367 - $outrosParametros[] = $k;  
368 - $VirtualCubeDimension[] = "<VirtualCubeDimension name='{$k}' />";  
369 - $u = "<DimensionUsage foreignKey='{$parametro["coluna"]}' name='nome' source='{$k}'/>"; 373 + ";
370 $dimEnsoes[] = $u; 374 $dimEnsoes[] = $u;
371 - array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='{$k}' />"); 375 + array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='Tempo' />");
  376 + }
  377 + //outros parametros
  378 + $outrosParametros = array();
  379 + //echo "<pre>";var_dump($parametros);
  380 + foreach($parametros as $parametro){
  381 + $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"];
  382 + if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){
  383 + $outrosParametros[] = $k;
  384 + $VirtualCubeDimension[] = "<VirtualCubeDimension name='{$k}' />";
  385 + $u = "<DimensionUsage foreignKey='{$parametro["coluna"]}' name='nome' source='{$k}'/>";
  386 + $dimEnsoes[] = $u;
  387 + array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='{$k}' />");
  388 + }
372 } 389 }
373 } 390 }
374 - }  
375 - //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>';  
376 - $xml .= "  
377 - <Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>";  
378 - $incluirChaves = array("*");  
379 -  
380 - if(count($parComposto) > 0){  
381 - //$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}";  
382 - $incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_";  
383 - }  
384 - if(count($outrosParametros) > 0){  
385 - foreach($outrosParametros as $o){  
386 - //$incluirChaves[] = $o."::text as ".$o."_";  
387 - }  
388 - }  
389 -  
390 - $sql = "select ".implode(",",$incluirChaves)." from {$c["esquemadb"]}.{$c["tabela"]}";  
391 -  
392 - $xml .= "  
393 - <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view>  
394 - <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/>  
395 - <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod'/>  
396 - ";  
397 -  
398 - $xml .= implode(" ",array_unique($dimEnsoes));  
399 -  
400 - //inclui cada elemento em medida  
401 - foreach($tb as $medida){  
402 - $agregador = "sum";  
403 - if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){  
404 - $agregador = "avg"; 391 + //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>';
  392 + $xml .= "
  393 + <Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>";
  394 + $incluirChaves = array("*");
  395 +
  396 + if(count($parComposto) > 0){
  397 + //$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}";
  398 + $incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_";
405 } 399 }
406 - if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){  
407 - $agregador = "count"; 400 + if(count($outrosParametros) > 0){
  401 + foreach($outrosParametros as $o){
  402 + //$incluirChaves[] = $o."::text as ".$o."_";
  403 + }
408 } 404 }
  405 +
  406 + $sql = "select ".implode(",",$incluirChaves)." from {$c["esquemadb"]}.{$c["tabela"]}";
  407 +
409 $xml .= " 408 $xml .= "
410 - <Measure name='id_medida_variavel_".$medida["id_medida_variavel"]."' caption='".converte($medida["nomemedida"])."' column='".$medida["colunavalor"]."' aggregator='".$agregador."' /> 409 + <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view>
  410 + <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/>
  411 + <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod'/>
411 "; 412 ";
412 - $u = " 413 +
  414 + $xml .= implode(" ",array_unique($dimEnsoes));
  415 +
  416 + //inclui cada elemento em medida
  417 + foreach($tb as $medida){
  418 + $agregador = "sum";
  419 + if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){
  420 + $agregador = "avg";
  421 + }
  422 + if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){
  423 + $agregador = "count";
  424 + }
  425 + $xml .= "
  426 + <Measure name='id_medida_variavel_".$medida["id_medida_variavel"]."' caption='".converte($medida["nomemedida"])."' column='".$medida["colunavalor"]."' aggregator='".$agregador."' />
  427 + ";
  428 + $u = "
413 <VirtualCubeMeasure cubeName='Tabela: {$c["esquemadb"]}{$c["tabela"]}' name='[Measures].[id_medida_variavel_".$medida["id_medida_variavel"]."]'/> 429 <VirtualCubeMeasure cubeName='Tabela: {$c["esquemadb"]}{$c["tabela"]}' name='[Measures].[id_medida_variavel_".$medida["id_medida_variavel"]."]'/>
414 - ";  
415 - $VirtualCubeMeasure[] = $u;  
416 - array_push($VirtualCubeMeasureDaRegiao[$c["codigo_tipo_regiao"]],$u);  
417 - }  
418 - $xml .= " 430 + ";
  431 + $VirtualCubeMeasure[] = $u;
  432 + array_push($VirtualCubeMeasureDaRegiao[$c["codigo_tipo_regiao"]],$u);
  433 + }
  434 + $xml .= "
419 </Cube> 435 </Cube>
420 "; 436 ";
421 -}  
422 -$xml .= '<VirtualCube name="Todas as medidas" >';  
423 -$VirtualCubeDimension = array_unique($VirtualCubeDimension);  
424 -$VirtualCubeMeasure = array_unique($VirtualCubeMeasure);  
425 -$xml .= implode(" ",$VirtualCubeDimension);  
426 -$xml .= implode(" ",$VirtualCubeMeasure);  
427 -$xml .= '</VirtualCube>';  
428 -//  
429 -//cubos por regiao  
430 -//  
431 -//$filhosDaRegiao = array();  
432 -//$VirtualCubeDimensionDaRegiao = array();  
433 -//$VirtualCubeMeasureDaRegiao = array();  
434 -foreach($regioes as $regiao){  
435 - $xml .= '<VirtualCube name="'.converte($regiao["nome_tipo_regiao"]).'" >';  
436 - $xml .= implode(" ",array_unique($VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]]));  
437 - $xml .= implode(" ",array_unique($VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]])); 437 + }
  438 + $xml .= '<VirtualCube name="Todas as medidas" >';
  439 + $VirtualCubeDimension = array_unique($VirtualCubeDimension);
  440 + $VirtualCubeMeasure = array_unique($VirtualCubeMeasure);
  441 + $xml .= implode(" ",$VirtualCubeDimension);
  442 + $xml .= implode(" ",$VirtualCubeMeasure);
438 $xml .= '</VirtualCube>'; 443 $xml .= '</VirtualCube>';
  444 + //
  445 + //cubos por regiao
  446 + //
  447 + //$filhosDaRegiao = array();
  448 + //$VirtualCubeDimensionDaRegiao = array();
  449 + //$VirtualCubeMeasureDaRegiao = array();
  450 +
  451 + foreach($regioes as $regiao){
  452 + //inclui os parametros para a regiao de acordo com os filhos que possui
  453 + $d = $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]];
  454 + $m = $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]];
  455 + foreach($filhosDaRegiao[$regiao["codigo_tipo_regiao"]] as $f){
  456 + //$d = array_merge($d,$VirtualCubeDimensionDaRegiao[$f]);
  457 + $m = array_merge($m,$VirtualCubeMeasureDaRegiao[$f]);
  458 + }
  459 + if(count(array_unique($m)) > 0){
  460 + $xml .= '<VirtualCube name="Regi&amp;atilde;o: '.converte($regiao["nome_tipo_regiao"]).'" >';
  461 + $xml .= implode(" ",array_unique($d));
  462 + $xml .= implode(" ",array_unique($m));
  463 + $xml .= '</VirtualCube>';
  464 + }
  465 + }
  466 + $xml .= "</Schema>";
  467 + error_reporting(0);
  468 + ob_end_clean();
  469 +
  470 + if($_GET["output"] == "xml"){
  471 + echo header("Content-type: application/xml");
  472 + echo $xml;exit;
  473 + }
  474 + gravaDados(array($xml),$arquivoXmlEsquema);
439 } 475 }
440 -$xml .= "</Schema>";  
441 -error_reporting(0);  
442 -ob_end_clean();  
443 -  
444 -if($_GET["output"] == "xml"){  
445 - echo header("Content-type: application/xml");  
446 - echo $xml;exit; 476 +if($_GET["output"] == "xml"){
  477 + echo header("Content-type: application/xml");
  478 + header("Location:".$_GET["xmlesquema"]);
  479 +}
  480 +else{
  481 + header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]);
447 } 482 }
448 -gravaDados(array($xml),$arquivoXmlEsquema);  
449 -  
450 -header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]);  
451 -  
452 function converte($texto){ 483 function converte($texto){
453 $texto = str_replace("&","&amp;",htmlentities($texto)); 484 $texto = str_replace("&","&amp;",htmlentities($texto));
454 //$texto = htmlentities($texto); 485 //$texto = htmlentities($texto);
init/dicionario.js
1 -g_traducao_init = {  
2 -1: [  
3 -{  
4 -pt:"Remover essa tela de apresenta&ccedil;&atilde;o (depois voc&ecirc; poder&aacute; ir direto para http:// localhost/i3geo/init)",  
5 -en:"",  
6 -es:""  
7 -}],  
8 -2: [  
9 -{  
10 -pt:"Teste da instala&ccedil;&atilde;o",  
11 -en:"",  
12 -es:""  
13 -}],  
14 -3: [  
15 -{  
16 -pt:"Sistema de administra&ccedil;&atilde;o",  
17 -en:"",  
18 -es:""  
19 -}],  
20 -4: [  
21 -{  
22 -pt:"Mapa com interface Openlayers",  
23 -en:"",  
24 -es:""  
25 -}],  
26 -5: [  
27 -{  
28 -pt:"Mapa com interface Openlayers (modo debug)",  
29 -en:"",  
30 -es:""  
31 -}],  
32 -6: [  
33 -{  
34 -pt:"Mapa com interface Google Maps",  
35 -en:"",  
36 -es:""  
37 -}],  
38 -7: [  
39 -{  
40 -pt:"Mapa com interface Google Earth",  
41 -en:"",  
42 -es:""  
43 -}],  
44 -8: [  
45 -{  
46 -pt:"Cartogramas (METAESTAT)",  
47 -en:"",  
48 -es:""  
49 -}],  
50 -9: [  
51 -{  
52 -pt:"Editor de regi&otilde;es (METAESTAT)",  
53 -en:"",  
54 -es:""  
55 -}],  
56 -10: [  
57 -{  
58 -pt:"Download de dados geo",  
59 -en:"",  
60 -es:""  
61 -}],  
62 -11: [  
63 -{  
64 -pt:"Servi&ccedil;os OGC (WMS e WFS)",  
65 -en:"",  
66 -es:""  
67 -}],  
68 -12: [  
69 -{  
70 -pt:"Cat&aacute;logo de temas no formato KML",  
71 -en:"",  
72 -es:""  
73 -}],  
74 -13: [  
75 -{  
76 -pt:"Gerador de links permanentes",  
77 -en:"",  
78 -es:""  
79 -}],  
80 -14: [  
81 -{  
82 -pt:"Exemplos de customiza&ccedil;&atilde;o da interface de mapas",  
83 -en:"",  
84 -es:""  
85 -}],  
86 -15: [  
87 -{  
88 -pt:"Manual de uso",  
89 -en:"",  
90 -es:""  
91 -}],  
92 -16: [  
93 -{  
94 -pt:"Registro de bugs",  
95 -en:"",  
96 -es:""  
97 -}],  
98 -17: [  
99 -{  
100 -pt:"Guia de migra&ccedil;&atilde;o",  
101 -en:"",  
102 -es:""  
103 -}],  
104 -18: [  
105 -{  
106 -pt:"Integre mapas em outras aplica&ccedil;&otilde;es",  
107 -en:"",  
108 -es:""  
109 -}],  
110 -19: [  
111 -{  
112 -pt:"ATEN&Ccedil;&Atilde;O!!! Essa instala&ccedil;&atilde;o est&aacute; vulner&aacute;vel: edite o arquivo i3geo/ms_configura.php e altere o login e senha definidos na vari&aacute;vel $i3geomaster.<br>Ao acessar o i3Geo em um servidor que n&atilde;o seja o localhost os mapas ficar&atilde;o bloqueados at&eacute; que essa edi&ccedil;&atilde;o seja feita.",  
113 -en:"",  
114 -es:""  
115 -}],  
116 -20: [  
117 -{  
118 -pt:"Incluia um link apenas na sua p&aacute;gina",  
119 -en:"",  
120 -es:""  
121 -}],  
122 -21: [  
123 -{  
124 -pt:"Manual de administra&ccedil;&atilde;o",  
125 -en:"",  
126 -es:""  
127 -}],  
128 -22: [  
129 -{  
130 -pt:"Google Maps com aplica&ccedil;&atilde;o de estilo",  
131 -en:"",  
132 -es:""  
133 -}],  
134 -23: [  
135 -{  
136 -pt:"Mapa com Open Street Map (OSM)",  
137 -en:"",  
138 -es:""  
139 -}],  
140 -24: [  
141 -{  
142 -pt:"Documenta&ccedil;&atilde;o da API",  
143 -en:"",  
144 -es:""  
145 -}],  
146 -25: [  
147 -{  
148 -pt:"SAIKU - an&aacute;lise de dados estat&iacute;sticos",  
149 -en:"",  
150 -es:""  
151 -}],  
152 -26: [  
153 -{  
154 -pt:"Teste do conversor de projeto GVP para Mapfile",  
155 -en:"",  
156 -es:""  
157 -}],  
158 -27: [  
159 -{  
160 -pt:"Lista de Atlas cadastrados",  
161 -en:"",  
162 -es:""  
163 -}]  
164 -}; 1 +g_traducao_init =
  2 + {
  3 + 1 : [
  4 + {
  5 + pt : "Remover essa tela de apresenta&ccedil;&atilde;o (depois voc&ecirc; poder&aacute; ir direto para http:// localhost/i3geo/init)",
  6 + en : "",
  7 + es : ""
  8 + }
  9 + ],
  10 + 2 : [
  11 + {
  12 + pt : "Teste da instala&ccedil;&atilde;o",
  13 + en : "",
  14 + es : ""
  15 + }
  16 + ],
  17 + 3 : [
  18 + {
  19 + pt : "Sistema de administra&ccedil;&atilde;o",
  20 + en : "",
  21 + es : ""
  22 + }
  23 + ],
  24 + 4 : [
  25 + {
  26 + pt : "Mapa com interface Openlayers",
  27 + en : "",
  28 + es : ""
  29 + }
  30 + ],
  31 + 5 : [
  32 + {
  33 + pt : "Mapa com interface Openlayers (modo debug)",
  34 + en : "",
  35 + es : ""
  36 + }
  37 + ],
  38 + 6 : [
  39 + {
  40 + pt : "Mapa com interface Google Maps",
  41 + en : "",
  42 + es : ""
  43 + }
  44 + ],
  45 + 7 : [
  46 + {
  47 + pt : "Mapa com interface Google Earth",
  48 + en : "",
  49 + es : ""
  50 + }
  51 + ],
  52 + 8 : [
  53 + {
  54 + pt : "Cartogramas (METAESTAT)",
  55 + en : "",
  56 + es : ""
  57 + }
  58 + ],
  59 + 9 : [
  60 + {
  61 + pt : "Editor de regi&otilde;es (METAESTAT)",
  62 + en : "",
  63 + es : ""
  64 + }
  65 + ],
  66 + 10 : [
  67 + {
  68 + pt : "Download de dados geo",
  69 + en : "",
  70 + es : ""
  71 + }
  72 + ],
  73 + 11 : [
  74 + {
  75 + pt : "Servi&ccedil;os OGC (WMS e WFS)",
  76 + en : "",
  77 + es : ""
  78 + }
  79 + ],
  80 + 12 : [
  81 + {
  82 + pt : "Cat&aacute;logo de temas no formato KML",
  83 + en : "",
  84 + es : ""
  85 + }
  86 + ],
  87 + 13 : [
  88 + {
  89 + pt : "Gerador de links permanentes",
  90 + en : "",
  91 + es : ""
  92 + }
  93 + ],
  94 + 14 : [
  95 + {
  96 + pt : "Exemplos de customiza&ccedil;&atilde;o da interface de mapas",
  97 + en : "",
  98 + es : ""
  99 + }
  100 + ],
  101 + 15 : [
  102 + {
  103 + pt : "Manual de uso",
  104 + en : "",
  105 + es : ""
  106 + }
  107 + ],
  108 + 16 : [
  109 + {
  110 + pt : "Registro de bugs",
  111 + en : "",
  112 + es : ""
  113 + }
  114 + ],
  115 + 17 : [
  116 + {
  117 + pt : "Guia de migra&ccedil;&atilde;o",
  118 + en : "",
  119 + es : ""
  120 + }
  121 + ],
  122 + 18 : [
  123 + {
  124 + pt : "Integre mapas em outras aplica&ccedil;&otilde;es",
  125 + en : "",
  126 + es : ""
  127 + }
  128 + ],
  129 + 19 : [
  130 + {
  131 + pt : "ATEN&Ccedil;&Atilde;O!!! Essa instala&ccedil;&atilde;o est&aacute; vulner&aacute;vel: edite o arquivo i3geo/ms_configura.php e altere o login e senha definidos na vari&aacute;vel $i3geomaster.<br>Ao acessar o i3Geo em um servidor que n&atilde;o seja o localhost os mapas ficar&atilde;o bloqueados at&eacute; que essa edi&ccedil;&atilde;o seja feita.",
  132 + en : "",
  133 + es : ""
  134 + }
  135 + ],
  136 + 20 : [
  137 + {
  138 + pt : "Incluia um link apenas na sua p&aacute;gina",
  139 + en : "",
  140 + es : ""
  141 + }
  142 + ],
  143 + 21 : [
  144 + {
  145 + pt : "Manual de administra&ccedil;&atilde;o",
  146 + en : "",
  147 + es : ""
  148 + }
  149 + ],
  150 + 22 : [
  151 + {
  152 + pt : "Google Maps com aplica&ccedil;&atilde;o de estilo",
  153 + en : "",
  154 + es : ""
  155 + }
  156 + ],
  157 + 23 : [
  158 + {
  159 + pt : "Mapa com Open Street Map (OSM)",
  160 + en : "",
  161 + es : ""
  162 + }
  163 + ],
  164 + 24 : [
  165 + {
  166 + pt : "Documenta&ccedil;&atilde;o da API",
  167 + en : "",
  168 + es : ""
  169 + }
  170 + ],
  171 + 25 : [
  172 + {
  173 + pt : "SAIKU - an&aacute;lise de dados estat&iacute;sticos",
  174 + en : "",
  175 + es : ""
  176 + }
  177 + ],
  178 + 26 : [
  179 + {
  180 + pt : "Teste do conversor de projeto GVP para Mapfile",
  181 + en : "",
  182 + es : ""
  183 + }
  184 + ],
  185 + 27 : [
  186 + {
  187 + pt : "Lista de Atlas cadastrados",
  188 + en : "",
  189 + es : ""
  190 + }
  191 + ],
  192 + 28 : [
  193 + {
  194 + pt : "Curso de i3Geo em Gvsig-training",
  195 + en : "",
  196 + es : ""
  197 + }
  198 + ]
  199 + };
init/index.php
@@ -212,6 +212,10 @@ botoesIni.push({ @@ -212,6 +212,10 @@ botoesIni.push({
212 "href":"../documentacao", 212 "href":"../documentacao",
213 "titulo":$trad(24,g_traducao_init) 213 "titulo":$trad(24,g_traducao_init)
214 },{ 214 },{
  215 + "img":"accessories-dictionary.png",
  216 + "href":"http://moodle.gvsig-training.com/course/view.php?id=11",
  217 + "titulo":$trad(28,g_traducao_init)
  218 + },{
215 "img":"tools-report-bug.png", 219 "img":"tools-report-bug.png",
216 "href":"http://svn.softwarepublico.gov.br/trac/i3geo", 220 "href":"http://svn.softwarepublico.gov.br/trac/i3geo",
217 "titulo":$trad(16,g_traducao_init) 221 "titulo":$trad(16,g_traducao_init)