From 67585339bb8ecac01ddbd40a5d7af0b6e6d5a36b Mon Sep 17 00:00:00 2001 From: edmarmoretti Date: Thu, 27 Apr 2017 16:13:30 -0300 Subject: [PATCH] Inclusão de variável de configuração em ms_configura.php para controlar o acesso à pasta no servidor onde arquivos são enviados via upload. Criação do formulário para upload de arquivos shapefile para o servidor de arquivos e criação automática do respectivo arquivo de configuração mapfile. --- admin/admin.db | Bin 340992 -> 0 bytes admin1/dicionario/uploadshp.js | 2 +- admin1/index.php | 4 ++-- admin1/php/funcoesAdmin.php | 16 ++++++++++++++++ admin1/upload/arquivo/exec.php | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- admin1/upload/arquivo/index.php | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------- ms_configura.php | 17 ++++++++++++++++- temas/bacia_ipojuca.map | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 271 insertions(+), 87 deletions(-) create mode 100644 temas/bacia_ipojuca.map diff --git a/admin/admin.db b/admin/admin.db index c2570a0..e148ae6 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin1/dicionario/uploadshp.js b/admin1/dicionario/uploadshp.js index e9bba8c..bd082b0 100755 --- a/admin1/dicionario/uploadshp.js +++ b/admin1/dicionario/uploadshp.js @@ -1,6 +1,6 @@ i3GEOadmin.uploadshp.dicionario = { 'pastaArmazenamento' : [ { - pt : "Pasta no servidor onde os dados serão armazenados. Apenas pastas localizadas no mesmo local onde o i3Geo está instalado são permitidas. Exemplo, no caso da instalação ser /var/www e existir a pasta /var/www/data, digite apenas data.", + pt : "Pasta no servidor onde os dados serão armazenados.", en : "", es : "" } ], diff --git a/admin1/index.php b/admin1/index.php index bc7e480..2205ca3 100755 --- a/admin1/index.php +++ b/admin1/index.php @@ -43,8 +43,8 @@ $_SESSION["i3geoPermiteLoginIp"] = $i3geoPermiteLoginIp; unset($i3geoPermiteLoginIp); $_SESSION["i3geoPermiteLogin"] = $i3geoPermiteLogin; unset($i3geoPermiteLogin); - - +$_SESSION["i3geoUploadDataWL"] = $i3geoUploadDataWL; +unset($i3geoUploadDataWL); include "head.php"; ?>
diff --git a/admin1/php/funcoesAdmin.php b/admin1/php/funcoesAdmin.php index 8b67a7b..2f29a17 100755 --- a/admin1/php/funcoesAdmin.php +++ b/admin1/php/funcoesAdmin.php @@ -814,4 +814,20 @@ function removeCabecalhoMapfile($arq,$symbolset=true){ return false; } } +function fileContemString($arq,$s){ + if(!file_exists($arq)){ + return false; + } + $handle = fopen($arq, 'r'); + $valid = false; // init as false + while(! feof($handle)) { + $buffer = fgets($handle); + if (strpos($buffer, $s) !== false) { + $valid = TRUE; + break; // Once you find the string, you should break out the loop. + } + } + fclose($handle); + return $valid; +} ?> diff --git a/admin1/upload/arquivo/exec.php b/admin1/upload/arquivo/exec.php index a5164d0..894aff6 100755 --- a/admin1/upload/arquivo/exec.php +++ b/admin1/upload/arquivo/exec.php @@ -1,53 +1,92 @@ - + + - - - + + + + + + + + + + + + + + + + + + + -

Pasta não encontrada

"; exit (); } - $checaDestino = dirname ( $_SESSION["locaplic"] ); - $dirDestino = str_replace ( $checaDestino, "", $dirDestino ); - $dirDestino = $checaDestino . "/" . $dirDestino; + // $checaDestino = dirname ( $_SESSION["locaplic"] ); + // $dirDestino = str_replace ( $checaDestino, "", $dirDestino ); + // $dirDestino = $checaDestino . "/" . $dirDestino; if (isset ( $logExec ) && $logExec ["upload"] == true) { i3GeoLog ( "prog: upload filename:" . $_FILES ['i3GEOuploadshp'] ['name'], $dir_tmp ); } - echo "

Carregando o arquivo...

"; + echo ""; ob_flush (); flush (); sleep ( 1 ); $dirmap = $dirDestino; - if (! file_exists ( $dirmap ) || $dirmap == dirname ( $_SESSION["locaplic"] ) || $dirmap == dirname ( $_SESSION["locaplic"] )."/") { - echo "

Pasta não existe no servidor ou o local não é permitido"; + if (! file_exists ( $dirmap ) || $dirmap == dirname ( $_SESSION ["locaplic"] ) || $dirmap == dirname ( $_SESSION ["locaplic"] ) . "/") { + echo "

"; exit (); } // verifica nomes @@ -69,30 +108,26 @@ if (isset ( $_FILES ['i3GEOuploadshp'] ['name'] )) { // sobe arquivo $Arquivo = $_FILES ['i3GEOuploadshp'] ['tmp_name']; if (file_exists ( $dirmap . "/" . $nomePrefixo . ".shp" )) { - echo "

Já existe um SHP com o nome "; - paraAguarde (); + echo "

"; exit (); } $status = move_uploaded_file ( $Arquivo, $dirmap . "/" . $nomePrefixo . ".shp" ); if ($status != 1) { - echo "

Ocorreu um erro no envio do arquivo SHP. Pode ser uma limitação quanto ao tamanho do arquivo ou permissão de escrita na pasta indicada."; - paraAguarde (); + echo "

"; exit (); } $Arquivo = $_FILES ['i3GEOuploadshx'] ['tmp_name']; $status = move_uploaded_file ( $Arquivo, $dirmap . "/" . $nomePrefixo . ".shx" ); if ($status != 1) { - echo "

Ocorreu um erro no envio do arquivo SHX"; - paraAguarde (); + echo "

"; exit (); } $Arquivo = $_FILES ['i3GEOuploaddbf'] ['tmp_name']; $status = move_uploaded_file ( $Arquivo, $dirmap . "/" . $nomePrefixo . ".dbf" ); if ($status != 1) { - echo "

Ocorreu um erro no envio do arquivo DBF"; - paraAguarde (); + echo "

"; exit (); } @@ -100,47 +135,48 @@ if (isset ( $_FILES ['i3GEOuploadshp'] ['name'] )) { $Arquivo = $_FILES ['i3GEOuploadprj'] ['tmp_name']; $status = move_uploaded_file ( $Arquivo, $dirmap . "/" . $nomePrefixo . ".prj" ); if ($status != 1) { - echo "

Ocorreu um erro no envio do arquivo PRJ"; - paraAguarde (); + echo "

"; exit (); } } if (! file_exists ( $dirmap . "/" . $nomePrefixo . ".shp" )) { - echo "

Ocorreu algum problema no envio do arquivo "; - paraAguarde (); + echo "

"; exit (); } - $checkphp = fileContemString ( $dirmap . "/" . $nomePrefixo . ".prj", "Arquivo prj invalido"; unlink ( $dirmap . "/" . $nomePrefixo . ".shp" ); unlink ( $dirmap . "/" . $nomePrefixo . ".dbf" ); unlink ( $dirmap . "/" . $nomePrefixo . ".shx" ); unlink ( $dirmap . "/" . $nomePrefixo . ".prj" ); exit (); } - $checkphp = fileContemString ( $dirmap . "/" . $nomePrefixo . ".shx", "Arquivo shx invalido"; unlink ( $dirmap . "/" . $nomePrefixo . ".shp" ); unlink ( $dirmap . "/" . $nomePrefixo . ".dbf" ); unlink ( $dirmap . "/" . $nomePrefixo . ".shx" ); unlink ( $dirmap . "/" . $nomePrefixo . ".prj" ); exit (); } - $checkphp = fileContemString ( $dirmap . "/" . $nomePrefixo . ".dbf", "Arquivo dbf invalido"; unlink ( $dirmap . "/" . $nomePrefixo . ".shp" ); unlink ( $dirmap . "/" . $nomePrefixo . ".dbf" ); unlink ( $dirmap . "/" . $nomePrefixo . ".shx" ); unlink ( $dirmap . "/" . $nomePrefixo . ".prj" ); exit (); } - echo "

Arquivo enviado.

"; - echo "

"; + echo ""; + if ($i3GEOuploadCriaMapfile == "on" && file_exists ( $_SESSION ["locaplic"] . "/temas/" . $nomePrefixo . ".map" )) { + echo ""; + $i3GEOuploadCriaMapfile = ""; + } if ($i3GEOuploadCriaMapfile == "on") { // verifica se o usuario marcou a opcao de cria mapfile // nesse caso o aplicativo de upload esta sendo executado de dentro do sistema de administracao, e o mapfile devera @@ -155,27 +191,35 @@ if (isset ( $_FILES ['i3GEOuploadshp'] ['name'] )) { $tipo = $sfileObj->type; } if ($tipo == 1) { - $tipoLayer = "point"; + $tipoLayer = MS_LAYER_POINT; } if ($tipo == 3) { - $tipoLayer = "line"; + $tipoLayer = MS_LAYER_LINE; } if ($tipo == 5) { - $tipoLayer = "polygon"; + $tipoLayer = MS_LAYER_POLYGON; } - $funcao = "CRIARNOVOMAP"; - $output = "retorno"; $data = $dirmap . "/" . $nomePrefixo . ".shp"; - include_once ($_SESSION["locaplic"] . "/admin/php/editormapfile.php"); - echo "

Criado!!!
"; - echo "Para editar clique: editar"; - echo ""; + include ($_SESSION ["locaplic"] . "/admin1/catalogo/mapfile/funcoes.php"); + $cria = \admin\catalogo\mapfile\adicionar ( $_SESSION ["locaplic"], $nomePrefixo, "", $codigo, "", "", $nomePrefixo, "", $nomePrefixo, $nomePrefixo, true, $dbhw ); + if ($cria == true && file_exists ( $_SESSION ["locaplic"] . "/temas/" . $codigo . ".map" )) { + $mapa = ms_newMapObj ( $_SESSION ["locaplic"] . "/temas/" . $codigo . ".map" ); + $layer = $mapa->getLayerByName ( $codigo ); + $layer->set ( "data", $data ); + $layer->set ( "type", $tipoLayer ); + $mapa->save ( $_SESSION ["locaplic"] . "/temas/" . $codigo . ".map" ); + echo "

"; + } else { + echo ""; + } } - echo "

Pode fechar essa janela.

"; + echo ""; } else { - echo "

Erro ao enviar o arquivo. Talvez o tamanho do arquivo seja maior do que o permitido.

"; + echo ""; +} +if (file_exists ( $_SESSION ["locaplic"] . "/temas/" . $nomePrefixo . ".map" )) { + echo ""; } - function verificaNome($nome) { if (strlen ( basename ( $nome ) ) > 200) { exit (); @@ -190,7 +234,10 @@ function verificaNome($nome) { } } ?> - - + diff --git a/admin1/upload/arquivo/index.php b/admin1/upload/arquivo/index.php index a19e1d2..e7de854 100755 --- a/admin1/upload/arquivo/index.php +++ b/admin1/upload/arquivo/index.php @@ -1,26 +1,38 @@ '; +foreach ( $chaves as $c ) { + $comboPastas .= ""; +} +$comboPastas .= ""; ?> -
-
- +