Commit 7387aa788bb267069e50e9f9ab7269a2b0730b43

Authored by Edmar Moretti
1 parent b6833c18

--no commit message

admin/js/estat_editor.js
... ... @@ -592,7 +592,7 @@ i3GEOadmin.editor = {
592 592 '<p class="paragrafo" ><input type=checkbox name=i3GEOuploadCriaMapfile id=i3GEOuploadCriaMapfile style="cursor:pointer;position:relative;top:2px;" />&nbsp;Marque para criar o arquivo de configura&ccedil;&atilde;o (mapfile) e visualizar os dados no mapa interativo (voc&ecirc; poder&aacute; editar esse arquivo posteriormente no editor de mapfiles)' +
593 593 '<p class="paragrafo" ><input type="checkbox" id="incluiserialshp" name="incluiserialshp" style="cursor:pointer;position:relative;top:2px;">&nbsp;Inclui uma coluna gid do tipo serial e chave prim&aacute;ria com c&oacute;digo &uacute;nico</p>' +
594 594 '<p class="paragrafo" ><input id=i3GEOuploadsubmit type="button" value="Enviar shapefile" size=12 />' +
595   - '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">' +
  595 + '<input type="hidden" name="MAX_FILE_SIZE" value="100000000">' +
596 596 '<input type="hidden" id="i3GEOuploadcodigoconexao" name="i3GEOuploadcodigoconexao" value="">' +
597 597 '<input type="hidden" id="i3GEOuploadesquema" name="i3GEOuploadesquema" value="">' +
598 598 "<p class='paragrafo' style=color:red >N&atilde;o utilize '_' no nome do arquivo. Apenas letras e n&uacute;meros s&atilde;o aceitos!!!</p>" +
... ...
admin/php/metaestat_uploadshp_submit.php
... ... @@ -4,6 +4,7 @@
4 4 */
5 5 include_once("admin.php");
6 6 include_once("login.php");
  7 +set_time_limit(0);
7 8 if(verificaOperacaoSessao("admin/metaestat/editorbanco") == false){
8 9 echo "Vc nao pode realizar essa operacao.";exit;
9 10 }
... ... @@ -19,6 +20,7 @@ if (ob_get_level() == 0) ob_start();
19 20 </head>
20 21 <body bgcolor="white" style="background-color:white;text-align:left;">
21 22 <p>
  23 +
22 24 <?php
23 25 if($_POST["tabelaDestino"] == ""){
24 26 echo "Nome da tabela n&atilde;o definido";
... ... @@ -93,8 +95,8 @@ if (isset($_FILES[&#39;i3GEOuploadshp&#39;][&#39;name&#39;])){
93 95 //verifica o tipo de coluna
94 96 $tipoColuna = array();
95 97 $testar = $numshapes;
96   - if($numshapes > 500){
97   - $testar = 500;
  98 + if($numshapes > 50){
  99 + $testar = 50;
98 100 }
99 101 foreach($colunas as $coluna){
100 102 $tipo = "numeric";
... ... @@ -190,23 +192,27 @@ if (isset($_FILES[&#39;i3GEOuploadshp&#39;][&#39;name&#39;])){
190 192 for ($i=0; $i<$numshapes;$i++){
191 193 $s = $layer->getShape(new resultObj($i));
192 194 $vs = array();
  195 + $escape = "";
193 196 foreach($colunas as $coluna){
194 197 if($tipoColuna[$coluna] == "varchar"){
195 198 $texto = $s->getValue($layer,$coluna);
196 199 //echo $i." - ".mb_detect_encoding($texto)."<br>";
197 200 //$texto = str_replace("'","",$texto);
198 201 $enc = mb_detect_encoding($texto);
199   - $texto = addcslashes($texto,$escapar);
200   - if($enc != ""){
201   - $texto = "'".mb_convert_encoding($texto,$encodingdb,$enc)."'";
  202 + $textosl = addcslashes($texto,$escapar);
  203 + if($textosl != $texto){
  204 + $escape = "E";
  205 + }
  206 + if($enc != "" && $enc != $encodingdb){
  207 + $textosl = "'".mb_convert_encoding($textosl,$encodingdb,$enc)."'";
202 208 }
203 209 else{
204   - $texto = "'".$texto."'";
  210 + $textosl = "'".$textosl."'";
205 211 }
206   - if($texto == "''"){
207   - $texto = 'null';
  212 + if($textosl == "''"){
  213 + $textosl = 'null';
208 214 }
209   - $vs[] = $texto;
  215 + $vs[] = $textosl;
210 216 }
211 217 else{
212 218 $valor = $s->getValue($layer,$coluna);
... ... @@ -226,7 +232,7 @@ if (isset($_FILES[&#39;i3GEOuploadshp&#39;][&#39;name&#39;])){
226 232 }
227 233 $str = implode(",",$vs);
228 234 $str = str_replace("nulo",'null',$str);
229   - $linhas[] = $insert."VALUES(".$str.")";
  235 + $linhas[] = $insert."VALUES(".$escape."".$str.")";
230 236 }
231 237 //echo $linhas[0];exit;
232 238 //echo "<pre>".var_dump($linhas);exit;
... ... @@ -248,53 +254,68 @@ if (isset($_FILES[&#39;i3GEOuploadshp&#39;][&#39;name&#39;])){
248 254 echo 'Erro: ' . $e->getMessage();
249 255 }
250 256 }
  257 + $bdcon = pg_connect('dbname='.$conexao["bancodedados"].' user='.$conexao["usuario"].' password='.$conexao["senha"].' host='.$conexao["host"].' port='.$conexao["porta"]."options='-c client_encoding=LATIN1'");
251 258 foreach($linhas as $linha){
252 259 try {
253 260 $res = $dbh->query($linha);
254 261 if($res == false){
255   - echo "<br><br><span style=color:red >Erro em: </span>".$linha;
  262 + $res = pg_query($bdcon,$linha);
  263 + if($res == false){
  264 + $linha = remove_accents($linha);
  265 + $res = $dbh->query($linha);
  266 + if($res == false){
  267 + echo "<br><br><span style=color:red >Erro em: </span>".$linha;
  268 + }
  269 + else{
  270 + echo "<br><br><span style=color:red >Linha com acentos removidos: </span>".$linha;
  271 + }
  272 + }
256 273 }
257 274 } catch (PDOException $e) {
258 275 echo 'Erro: ' . $e->getMessage();
259 276 }
260 277 }
261   - echo "<br>Registros existentes no SHP: ". $numshapes;
262 278 $sql = "select * from ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"];
263 279 $q = $dbh->query($sql,PDO::FETCH_ASSOC);
264 280 $r = $q->fetchAll();
  281 + if($numshapes != count($r)){
  282 + echo "<span style='color:red'>";
  283 + }
  284 + echo "<br>Registros existentes no SHP: ". $numshapes;
  285 +
265 286 echo "<br>Registros na tabela final: ". count($r);
266   - echo "<br>Diferen&ccedil;as podem ocorrer em fun&ccedil;&atilde;o de caracteres acentuados n&atilde;o suportados pelo banco de dados";
  287 + echo "</span><br>Diferen&ccedil;as podem ocorrer em fun&ccedil;&atilde;o de caracteres acentuados n&atilde;o suportados pelo banco de dados";
267 288 echo "<br><b>Feito!!!<br>Fa&ccedil;a o reload da p&aacute;gina";
268   - if($_POST["i3GEOuploadCriaMapfile"] == "on"){
269   - //verifica se o usuario marcou a opcao de cria mapfile
270   - //nesse caso o aplicativo de upload esta sendo executado de dentro do sistema de administracao, e o mapfile devera
271   - //ser criado e registrado no sistema
272   - $nome = $_POST["tabelaDestino"];
273   - $codigo = $_POST["tabelaDestino"];
274   - $it = $_POST["tabelaDestino"];
275   - $en = $_POST["tabelaDestino"];
276   - $es = $_POST["tabelaDestino"];
  289 + if($_POST["i3GEOuploadCriaMapfile"] == "on"){
  290 + //verifica se o usuario marcou a opcao de cria mapfile
  291 + //nesse caso o aplicativo de upload esta sendo executado de dentro do sistema de administracao, e o mapfile devera
  292 + //ser criado e registrado no sistema
  293 + $nome = $_POST["tabelaDestino"];
  294 + $codigo = $_POST["tabelaDestino"];
  295 + $it = $_POST["tabelaDestino"];
  296 + $en = $_POST["tabelaDestino"];
  297 + $es = $_POST["tabelaDestino"];
277 298 //descobre o tipo de geometria
278   - $tipo = "select ST_Dimension(the_geom) as d from ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." limit 1";
279   - $q = $dbh->query($tipo,PDO::FETCH_ASSOC);
  299 + $tipo = "select ST_Dimension(the_geom) as d from ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." limit 1";
  300 + $q = $dbh->query($tipo,PDO::FETCH_ASSOC);
280 301 $tipo = $q->fetchAll();
281   - $tipo = $tipo[0]["d"];
282   - $tipoLayer = "polygon";
283   - if ($tipo == 0){
284   - $tipoLayer = "point";
285   - }
286   - if ($tipo == 1){
287   - $tipoLayer = "line";
288   - }
289   - $funcao = "CRIARNOVOMAP";
290   - $output = "retorno";
  302 + $tipo = $tipo[0]["d"];
  303 + $tipoLayer = "polygon";
  304 + if ($tipo == 0){
  305 + $tipoLayer = "point";
  306 + }
  307 + if ($tipo == 1){
  308 + $tipoLayer = "line";
  309 + }
  310 + $funcao = "CRIARNOVOMAP";
  311 + $output = "retorno";
291 312 $data = "the_geom from ($sql) as foo using unique gid using srid=$srid ";
292   - $conexao = 'dbname='.$conexao["bancodedados"].' user='.$conexao["usuario"].' password='.$conexao["senha"].' host='.$conexao["host"].' port='.$conexao["porta"];
293   - include_once("editormapfile.php");
294   - echo "<b><p class='paragrafo' >Criado o mapfile!!!<br>";
295   - echo "Para editar clique: <a href='../../admin/html/editormapfile.html' target=_blank >".$nome."</a>";
296   - echo "<script>window.scrollTo(0,10000);i3GEO.util.insereCookie('I3GEOletraAdmin','".$nome."');</script>";
297   - }
  313 + $conexao = 'dbname='.$conexao["bancodedados"].' user='.$conexao["usuario"].' password='.$conexao["senha"].' host='.$conexao["host"].' port='.$conexao["porta"];
  314 + include_once("editormapfile.php");
  315 + echo "<b><p class='paragrafo' >Criado o mapfile!!!<br>";
  316 + echo "Para editar clique: <a href='../../admin/html/editormapfile.html' target=_blank >".$nome."</a>";
  317 + echo "<script>window.scrollTo(0,10000);i3GEO.util.insereCookie('I3GEOletraAdmin','".$nome."');</script>";
  318 + }
298 319 echo "<br><br>Fim";
299 320 }
300 321 else{
... ... @@ -309,6 +330,147 @@ function verificaNome($nome,$ext){
309 330 exit;
310 331 }
311 332 }
  333 +function remove_accents($string) {
  334 + if (!preg_match('/[\x80-\xff]/', $string))
  335 + return $string;
  336 + if (seems_utf8($string)) {
  337 + $chars = array(
  338 + // Decompositions for Latin-1 Supplement
  339 + chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
  340 + chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
  341 + chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
  342 + chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
  343 + chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
  344 + chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
  345 + chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
  346 + chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
  347 + chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
  348 + chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
  349 + chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
  350 + chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
  351 + chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
  352 + chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
  353 + chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
  354 + chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
  355 + chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
  356 + chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
  357 + chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
  358 + chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
  359 + chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
  360 + chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
  361 + chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
  362 + chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
  363 + chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
  364 + chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
  365 + chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
  366 + chr(195).chr(191) => 'y',
  367 + // Decompositions for Latin Extended-A
  368 + chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
  369 + chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
  370 + chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
  371 + chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
  372 + chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
  373 + chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
  374 + chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
  375 + chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
  376 + chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
  377 + chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
  378 + chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
  379 + chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
  380 + chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
  381 + chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
  382 + chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
  383 + chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
  384 + chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
  385 + chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
  386 + chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
  387 + chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
  388 + chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
  389 + chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
  390 + chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
  391 + chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
  392 + chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
  393 + chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
  394 + chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
  395 + chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
  396 + chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
  397 + chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
  398 + chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
  399 + chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
  400 + chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
  401 + chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
  402 + chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
  403 + chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
  404 + chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
  405 + chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
  406 + chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
  407 + chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
  408 + chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
  409 + chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
  410 + chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
  411 + chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
  412 + chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
  413 + chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
  414 + chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
  415 + chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
  416 + chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
  417 + chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
  418 + chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
  419 + chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
  420 + chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
  421 + chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
  422 + chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
  423 + chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
  424 + chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
  425 + chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
  426 + chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
  427 + chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
  428 + chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
  429 + chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
  430 + chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
  431 + chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
  432 + // Euro Sign
  433 + chr(226).chr(130).chr(172) => 'E',
  434 + // GBP (Pound) Sign
  435 + chr(194).chr(163) => '');
  436 + $string = strtr($string, $chars);
  437 + } else {
  438 + // Assume ISO-8859-1 if not UTF-8
  439 + $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
  440 + .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
  441 + .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
  442 + .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
  443 + .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
  444 + .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
  445 + .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
  446 + .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
  447 + .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
  448 + .chr(252).chr(253).chr(255);
  449 + $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
  450 + $string = strtr($string, $chars['in'], $chars['out']);
  451 + $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
  452 + $double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
  453 + $string = str_replace($double_chars['in'], $double_chars['out'], $string);
  454 + }
  455 + return $string;
  456 +}
  457 +function seems_utf8($Str) { # by bmorel at ssi dot fr
  458 + $length = strlen($Str);
  459 + for ($i = 0; $i < $length; $i++) {
  460 + if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
  461 + elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n = 1; # 110bbbbb
  462 + elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n = 2; # 1110bbbb
  463 + elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n = 3; # 11110bbb
  464 + elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n = 4; # 111110bb
  465 + elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n = 5; # 1111110b
  466 + else return false; # Does not match any model
  467 + for ($j = 0; $j < $n; $j++) { # n bytes matching 10bbbbbb follow ?
  468 + if ((++$i == $length) || ((ord($Str[$i]) & 0xC0) != 0x80))
  469 + return false;
  470 + }
  471 + }
  472 + return true;
  473 +}
312 474 ?>
313 475 <script>window.scrollTo(0,10000);</script>
314 476 </body>
... ...
ms_configura.php
... ... @@ -435,7 +435,8 @@ Tipo:
435 435 $postgis_mapa = array(
436 436 "teste"=>"user=postgres password=postgres dbname=teste host=localhost port=5432",
437 437 "postgres"=>"user=postgres password=postgres dbname=postgres host=localhost port=5432",
438   - "i3geosaude"=>"user=postgres password=postgres dbname=i3geosaude host=localhost port=5432 options='-c client_encoding=LATIN1'"
  438 + "i3geosaude"=>"user=postgres password=postgres dbname=i3geosaude host=localhost port=5432 options='-c client_encoding=LATIN1'",
  439 + "i3geosaudeUtf"=>"user=postgres password=postgres dbname=i3geosaude host=localhost port=5432"
439 440 );
440 441 /*
441 442 Variable: utilizacgi
... ...