Commit b673de611af68272fd3c46315609f7ee9044e709
1 parent
cae55a29
Exists in
master
and in
7 other branches
Aprimoramento do gerador de cubos para o SAIKU
Showing
4 changed files
with
466 additions
and
241 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/php/classe_metaestat.php
| @@ -528,6 +528,7 @@ class Metaestat{ | @@ -528,6 +528,7 @@ class Metaestat{ | ||
| 528 | return array("caminho"=>$caminho,"colunas"=>$colunas); | 528 | return array("caminho"=>$caminho,"colunas"=>$colunas); |
| 529 | } | 529 | } |
| 530 | } | 530 | } |
| 531 | + return array("caminho"=>$caminho,"colunas"=>$colunas); | ||
| 531 | } | 532 | } |
| 532 | function hierarquiaPath($node){ | 533 | function hierarquiaPath($node){ |
| 533 | $query="select codigo_tipo_regiao_pai as parent from ".$this->esquemaadmin."i3geoestat_agregaregiao WHERE codigo_tipo_regiao = $node"; | 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,6 +2057,10 @@ class Metaestat{ | ||
| 2056 | } | 2057 | } |
| 2057 | return $this->execSQL($sql,""); | 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 | * Lista os registros de um tipo de regiao | 2065 | * Lista os registros de um tipo de regiao |
| 2061 | * Se for definido o pai, lista os valores da regiao que e filha | 2066 | * Se for definido o pai, lista os valores da regiao que e filha |
| @@ -2132,7 +2137,9 @@ class Metaestat{ | @@ -2132,7 +2137,9 @@ class Metaestat{ | ||
| 2132 | function listaAgregaRegiaoFilho($codigo_tipo_regiao,$codigo_tipo_regiao_pai){ | 2137 | function listaAgregaRegiaoFilho($codigo_tipo_regiao,$codigo_tipo_regiao_pai){ |
| 2133 | $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao "; | 2138 | $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao "; |
| 2134 | $sql .= "WHERE codigo_tipo_regiao_pai = $codigo_tipo_regiao_pai "; | 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 | return $this->execSQL($sql,$codigo_tipo_regiao_pai); | 2143 | return $this->execSQL($sql,$codigo_tipo_regiao_pai); |
| 2137 | } | 2144 | } |
| 2138 | /** | 2145 | /** |
ferramentas/saiku/esquemaxml.php
| @@ -4,82 +4,253 @@ | @@ -4,82 +4,253 @@ | ||
| 4 | // | 4 | // |
| 5 | //utilize &xmlesquema= caso o XML ja exista | 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®iao=1 | ||
| 12 | +*/ | ||
| 13 | + | ||
| 8 | // | 14 | // |
| 9 | //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas | 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 | include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); | 19 | include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php"); |
| 19 | include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); | 20 | include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); |
| 20 | if(!isset($dir_tmp)){ | 21 | if(!isset($dir_tmp)){ |
| 21 | include(dirname(__FILE__)."/../../ms_configura.php"); | 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 | $map_file = $_SESSION["map_file"]; | 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 | else{ | 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("&","&",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"]."®iao=".$_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"]."®iao=".$_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 | $codigo_tipo_regiao = ""; | 249 | $codigo_tipo_regiao = ""; |
| 250 | + $selecaoRegiao = array(); | ||
| 251 | + $regiao = ""; | ||
| 252 | + $item = ""; | ||
| 253 | + $registros = ""; | ||
| 83 | if($map_file != ""){ | 254 | if($map_file != ""){ |
| 84 | $mapa = ms_newMapObj($map_file); | 255 | $mapa = ms_newMapObj($map_file); |
| 85 | $c = $mapa->numlayers; | 256 | $c = $mapa->numlayers; |
| @@ -126,28 +297,18 @@ if(empty($_GET["xmlesquema"])){ | @@ -126,28 +297,18 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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 | $sqlAno = "select nu_ano from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano order by nu_ano"; | 308 | $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"; | 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 | //dimensoes temporais | 310 | //dimensoes temporais |
| 150 | - $xml .= " | 311 | + $xml = " |
| 151 | <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'> | 312 | <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'> |
| 152 | <Hierarchy hasAll='true' primaryKey='nu_ano'> | 313 | <Hierarchy hasAll='true' primaryKey='nu_ano'> |
| 153 | <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view> | 314 | <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view> |
| @@ -169,113 +330,171 @@ if(empty($_GET["xmlesquema"])){ | @@ -169,113 +330,171 @@ if(empty($_GET["xmlesquema"])){ | ||
| 169 | </Hierarchy> | 330 | </Hierarchy> |
| 170 | </Dimension> | 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 | foreach($regioes as $regiao){ | 388 | foreach($regioes as $regiao){ |
| 185 | $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | 389 | $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); |
| 186 | $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | 390 | $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); |
| 187 | $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | 391 | $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); |
| 188 | } | 392 | } |
| 393 | + //xml normal | ||
| 189 | $xml1 = ""; | 394 | $xml1 = ""; |
| 395 | + //xml geocodigo | ||
| 190 | $xml2 = ""; | 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 | $sqls = array(); | 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 | //cria uma view juntando as tabelas da hierarquia de regioes | 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 | $unico = "false"; | 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 | $xml1 .= " | 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 | $xml2 .= " | 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 | $xml1 .= " | 498 | $xml1 .= " |
| 280 | </Hierarchy> | 499 | </Hierarchy> |
| 281 | </Dimension> | 500 | </Dimension> |
| @@ -284,11 +503,19 @@ if(empty($_GET["xmlesquema"])){ | @@ -284,11 +503,19 @@ if(empty($_GET["xmlesquema"])){ | ||
| 284 | </Hierarchy> | 503 | </Hierarchy> |
| 285 | </Dimension> | 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 | $parametros = $m->listaTodosParametros(); | 519 | $parametros = $m->listaTodosParametros(); |
| 293 | $dimOutras = array(); | 520 | $dimOutras = array(); |
| 294 | foreach($parametros as $p){ | 521 | foreach($parametros as $p){ |
| @@ -305,7 +532,7 @@ if(empty($_GET["xmlesquema"])){ | @@ -305,7 +532,7 @@ if(empty($_GET["xmlesquema"])){ | ||
| 305 | } | 532 | } |
| 306 | $xml3 = ""; | 533 | $xml3 = ""; |
| 307 | foreach($dimOutras as $d){ | 534 | foreach($dimOutras as $d){ |
| 308 | - $k = $p["esquemadb"]."_".$d["tabela"]."_".$d["coluna"]; | 535 | + $k = $d["esquemadb"]."_".$d["tabela"]."_".$d["coluna"]; |
| 309 | $xml3 .= " | 536 | $xml3 .= " |
| 310 | <Dimension name='".$k."' caption='".converte($d["nome"])."'> | 537 | <Dimension name='".$k."' caption='".converte($d["nome"])."'> |
| 311 | <Hierarchy hasAll='true' primaryKey='codigo'> | 538 | <Hierarchy hasAll='true' primaryKey='codigo'> |
| @@ -322,16 +549,17 @@ if(empty($_GET["xmlesquema"])){ | @@ -322,16 +549,17 @@ if(empty($_GET["xmlesquema"])){ | ||
| 322 | $xml3 .= "</Hierarchy> | 549 | $xml3 .= "</Hierarchy> |
| 323 | </Dimension>"; | 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 | $tbs = array(); | 558 | $tbs = array(); |
| 330 | - //echo $codigo_tipo_regiao;exit; | ||
| 331 | foreach($medidas as $medida){ | 559 | foreach($medidas as $medida){ |
| 332 | if($codigo_tipo_regiao == "" || $medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){ | 560 | if($codigo_tipo_regiao == "" || $medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){ |
| 333 | $k = $medida["esquemadb"].$medida["tabela"]; | 561 | $k = $medida["esquemadb"].$medida["tabela"]; |
| 334 | - //echo "<pre>".$k; | 562 | + |
| 335 | if(empty($tbs[$k])){ | 563 | if(empty($tbs[$k])){ |
| 336 | $tbs[$k] = array($medida); | 564 | $tbs[$k] = array($medida); |
| 337 | } | 565 | } |
| @@ -341,13 +569,9 @@ if(empty($_GET["xmlesquema"])){ | @@ -341,13 +569,9 @@ if(empty($_GET["xmlesquema"])){ | ||
| 341 | } | 569 | } |
| 342 | } | 570 | } |
| 343 | //monta os cubos para cada esquema.tabela diferente | 571 | //monta os cubos para cada esquema.tabela diferente |
| 344 | - $VirtualCubeDimension = array(); | ||
| 345 | - $VirtualCubeMeasure = array(); | ||
| 346 | - | ||
| 347 | foreach($tbs as $tb){ | 572 | foreach($tbs as $tb){ |
| 348 | //cabecalho de cada cubo obtido da primeira medida | 573 | //cabecalho de cada cubo obtido da primeira medida |
| 349 | $c = $tb[0]; | 574 | $c = $tb[0]; |
| 350 | - | ||
| 351 | $VirtualCubeDimension[] = " | 575 | $VirtualCubeDimension[] = " |
| 352 | <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' /> | 576 | <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' /> |
| 353 | "; | 577 | "; |
| @@ -356,18 +580,17 @@ if(empty($_GET["xmlesquema"])){ | @@ -356,18 +580,17 @@ if(empty($_GET["xmlesquema"])){ | ||
| 356 | "; | 580 | "; |
| 357 | 581 | ||
| 358 | array_push( | 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 | array_push( | 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 | //verifica as dimensoes do tipo tempo | 590 | //verifica as dimensoes do tipo tempo |
| 367 | $dimEnsoes = array(); | 591 | $dimEnsoes = array(); |
| 368 | - //echo "<pre>";var_dump($tb)."<br>"; | 592 | + |
| 369 | foreach($tb as $medida){ | 593 | foreach($tb as $medida){ |
| 370 | - //echo "<pre>";var_dump($medida)."<br>"; | ||
| 371 | $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false); | 594 | $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false); |
| 372 | $parComposto = array(); //guarda a composicao da chave que liga com a dimensao | 595 | $parComposto = array(); //guarda a composicao da chave que liga com a dimensao |
| 373 | $colunaAdicionais = array(); | 596 | $colunaAdicionais = array(); |
| @@ -389,7 +612,7 @@ if(empty($_GET["xmlesquema"])){ | @@ -389,7 +612,7 @@ if(empty($_GET["xmlesquema"])){ | ||
| 389 | } | 612 | } |
| 390 | //outros parametros | 613 | //outros parametros |
| 391 | $outrosParametros = array(); | 614 | $outrosParametros = array(); |
| 392 | - //echo "<pre>";var_dump($parametros); | 615 | + |
| 393 | foreach($parametros as $parametro){ | 616 | foreach($parametros as $parametro){ |
| 394 | $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"]; | 617 | $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"]; |
| 395 | if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){ | 618 | if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){ |
| @@ -404,8 +627,7 @@ if(empty($_GET["xmlesquema"])){ | @@ -404,8 +627,7 @@ if(empty($_GET["xmlesquema"])){ | ||
| 404 | //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>'; | 627 | //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>'; |
| 405 | 628 | ||
| 406 | $xml .= "<Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>"; | 629 | $xml .= "<Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>"; |
| 407 | - $incluirChaves = array("*"); | ||
| 408 | - | 630 | + $incluirChaves = array("tabelamedida{$c["id_medida_variavel"]}.*"); |
| 409 | if(count($parComposto) > 0){ | 631 | if(count($parComposto) > 0){ |
| 410 | //$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}"; | 632 | //$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}"; |
| 411 | $incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_"; | 633 | $incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_"; |
| @@ -416,18 +638,39 @@ if(empty($_GET["xmlesquema"])){ | @@ -416,18 +638,39 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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 | $xml .= " | 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 | //inclui as dimensoes filhas | 669 | //inclui as dimensoes filhas |
| 427 | foreach($filhosDaRegiao[$c["codigo_tipo_regiao"]] as $fr){ | 670 | foreach($filhosDaRegiao[$c["codigo_tipo_regiao"]] as $fr){ |
| 428 | $xml .= " | 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["xmlesquema"])){ | @@ -454,60 +697,36 @@ if(empty($_GET["xmlesquema"])){ | ||
| 454 | $xml .= " | 697 | $xml .= " |
| 455 | </Cube> | 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 | $VirtualCubeDimension = array_unique($VirtualCubeDimension); | 706 | $VirtualCubeDimension = array_unique($VirtualCubeDimension); |
| 462 | $VirtualCubeMeasure = array_unique($VirtualCubeMeasure); | 707 | $VirtualCubeMeasure = array_unique($VirtualCubeMeasure); |
| 463 | $xml .= implode(" ",$VirtualCubeDimension); | 708 | $xml .= implode(" ",$VirtualCubeDimension); |
| 464 | $xml .= implode(" ",$VirtualCubeMeasure); | 709 | $xml .= implode(" ",$VirtualCubeMeasure); |
| 465 | $xml .= '</VirtualCube>'; | 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 | foreach($regioes as $regiao){ | 716 | foreach($regioes as $regiao){ |
| 474 | //inclui os parametros para a regiao de acordo com os filhos que possui | 717 | //inclui os parametros para a regiao de acordo com os filhos que possui |
| 475 | $d = $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]]; | 718 | $d = $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]]; |
| 476 | - $m = $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]]; | 719 | + $mm = $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]]; |
| 477 | foreach($filhosDaRegiao[$regiao["codigo_tipo_regiao"]] as $f){ | 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 | $xml .= '<VirtualCube name="Regi&atilde;o: '.converte($regiao["nome_tipo_regiao"]).'" >'; | 724 | $xml .= '<VirtualCube name="Regi&atilde;o: '.converte($regiao["nome_tipo_regiao"]).'" >'; |
| 483 | $xml .= implode(" ",array_unique($d)); | 725 | $xml .= implode(" ",array_unique($d)); |
| 484 | - $xml .= implode(" ",array_unique($m)); | 726 | + $xml .= implode(" ",array_unique($mm)); |
| 485 | $xml .= '</VirtualCube>'; | 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("&","&",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&aacute;rios que ser&atilde;o utilizados pelo i3geo par | @@ -214,7 +214,7 @@ Cria os diretorios tempor&aacute;rios que ser&atilde;o utilizados pelo i3geo par | ||
| 214 | $diretorios = criaDirMapa($dir_tmp,$cachedir); | 214 | $diretorios = criaDirMapa($dir_tmp,$cachedir); |
| 215 | if(!$diretorios) | 215 | if(!$diretorios) |
| 216 | {echo "<p style=color:red ><b>Não foi possível criar os diretórios temporários em $dir_tmp.</b></p>";exit;} | 216 | {echo "<p style=color:red ><b>Não foi possível criar os diretórios temporários em $dir_tmp.</b></p>";exit;} |
| 217 | -criaIndex(); | 217 | +criaIndex($dir_tmp,$diretorios); |
| 218 | $tmpfname = $diretorios[0]; | 218 | $tmpfname = $diretorios[0]; |
| 219 | $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); | 219 | $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); |
| 220 | /* | 220 | /* |
| @@ -329,7 +329,6 @@ $_SESSION["contadorsalva"] = 0;//essa variavel e utilizada pela ferramenta telar | @@ -329,7 +329,6 @@ $_SESSION["contadorsalva"] = 0;//essa variavel e utilizada pela ferramenta telar | ||
| 329 | $_SESSION["i3georendermode"] = $i3georendermode_; | 329 | $_SESSION["i3georendermode"] = $i3georendermode_; |
| 330 | $_SESSION["saikuUrl"] = $saikuUrl_; | 330 | $_SESSION["saikuUrl"] = $saikuUrl_; |
| 331 | 331 | ||
| 332 | - | ||
| 333 | // | 332 | // |
| 334 | //pega todas as variáveis da sessão, mesmo as que foram definidas anteriormente | 333 | //pega todas as variáveis da sessão, mesmo as que foram definidas anteriormente |
| 335 | // | 334 | // |
| @@ -450,6 +449,7 @@ else{ | @@ -450,6 +449,7 @@ else{ | ||
| 450 | //algumas aplicacoes usam essa variavel (SAIKU) | 449 | //algumas aplicacoes usam essa variavel (SAIKU) |
| 451 | $mapext = $ext->minx." ".$ext->miny." ".$ext->maxx." ".$ext->maxy; | 450 | $mapext = $ext->minx." ".$ext->miny." ".$ext->maxx." ".$ext->maxy; |
| 452 | } | 451 | } |
| 452 | + | ||
| 453 | /* | 453 | /* |
| 454 | Configura os endereços corretos no mapfile. | 454 | Configura os endereços corretos no mapfile. |
| 455 | 455 | ||
| @@ -490,20 +490,20 @@ if(isset($poligonos)) | @@ -490,20 +490,20 @@ if(isset($poligonos)) | ||
| 490 | if(isset($url_wms)) | 490 | if(isset($url_wms)) |
| 491 | {incluiTemaWms();} | 491 | {incluiTemaWms();} |
| 492 | 492 | ||
| 493 | -adaptaLayers(); | 493 | +adaptaLayers($tmpfname,$versao); |
| 494 | 494 | ||
| 495 | if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")) | 495 | if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")) |
| 496 | {require_once(dirname(__FILE__)."/ms_registraip.php");} | 496 | {require_once(dirname(__FILE__)."/ms_registraip.php");} |
| 497 | //echo $tmpfname;exit; | 497 | //echo $tmpfname;exit; |
| 498 | if ($interface != "mashup") | 498 | if ($interface != "mashup") |
| 499 | {abreInterface($interface,$caminho,$tempo);} | 499 | {abreInterface($interface,$caminho,$tempo);} |
| 500 | + | ||
| 500 | /* | 501 | /* |
| 501 | Adapta os dados de cada layer. | 502 | Adapta os dados de cada layer. |
| 502 | 503 | ||
| 503 | Faz alterações em cada layer caso sejam necessárias. | 504 | Faz alterações em cada layer caso sejam necessárias. |
| 504 | */ | 505 | */ |
| 505 | -function adaptaLayers(){ | ||
| 506 | - global $tmpfname,$versao; | 506 | +function adaptaLayers($tmpfname,$versao){ |
| 507 | $mapa = ms_newMapObj($tmpfname); | 507 | $mapa = ms_newMapObj($tmpfname); |
| 508 | $path = $mapa->shapepath; | 508 | $path = $mapa->shapepath; |
| 509 | $numlayers = $mapa->numlayers; | 509 | $numlayers = $mapa->numlayers; |
| @@ -749,11 +749,10 @@ function incluiTemasIniciais(){ | @@ -749,11 +749,10 @@ function incluiTemasIniciais(){ | ||
| 749 | erroCriacao(); | 749 | erroCriacao(); |
| 750 | } | 750 | } |
| 751 | /* | 751 | /* |
| 752 | -Cria os arquivos vazios index.htm e index.html nos diret�rios temporários | 752 | +Cria os arquivos vazios index.htm e index.html nos diretorios temporários |
| 753 | */ | 753 | */ |
| 754 | -function criaIndex() | 754 | +function criaIndex($dir_tmp,$diretorios) |
| 755 | { | 755 | { |
| 756 | - global $dir_tmp,$diretorios; | ||
| 757 | if (!file_exists($dir_tmp."/index.htm")) | 756 | if (!file_exists($dir_tmp."/index.htm")) |
| 758 | { | 757 | { |
| 759 | $f = fopen($dir_tmp."/index.htm","x"); | 758 | $f = fopen($dir_tmp."/index.htm","x"); |
| @@ -771,7 +770,7 @@ function criaIndex() | @@ -771,7 +770,7 @@ function criaIndex() | ||
| 771 | } | 770 | } |
| 772 | if (!file_exists($dir_tmp."/index.htm")) | 771 | if (!file_exists($dir_tmp."/index.htm")) |
| 773 | { | 772 | { |
| 774 | - echo "Erro. Não foi possível gravar no diret�rio temporário"; | 773 | + echo "Erro. Não foi possível gravar no diretório temporário"; |
| 775 | exit; | 774 | exit; |
| 776 | } | 775 | } |
| 777 | } | 776 | } |