From 7ecc18e42601f3d84cb886c33c16eb2c1fa3d700 Mon Sep 17 00:00:00 2001 From: neijobson Date: Sat, 10 Sep 2016 18:43:33 -0300 Subject: [PATCH] Validação do tamanho máximo de arquivo em Server Side para os uploads do Usuário Externo, após a janela de Concluir Peticionamento. Na Administração, padronização das teclas de atalho para funcionarem no Chrome e outros ajustes. --- sei/institucional/peticionamento/indisponibilidade_peticionamento_cadastro.php | 15 ++++++++------- sei/institucional/peticionamento/indisponibilidade_peticionamento_lista.php | 19 +++++++++++-------- sei/institucional/peticionamento/menu_peticionamento_usuario_externo_cadastro.php | 16 +++++++++------- sei/institucional/peticionamento/menu_peticionamento_usuario_externo_lista.php | 13 ++++++++----- sei/institucional/peticionamento/peticionamento_usuario_externo_cadastro_acoes.php | 24 +----------------------- sei/institucional/peticionamento/rn/ProcessoPeticionamentoRN.php | 46 ++++++++++++++++++++++++++++++++++++++++------ sei/institucional/peticionamento/rn/ReciboPeticionamentoRN.php | 7 ++++--- sei/institucional/peticionamento/tipo_processo_peticionamento_cadastro.php | 18 +++++++++--------- sei/institucional/peticionamento/tipo_processo_peticionamento_lista.php | 30 ++++++++++++++++-------------- 9 files changed, 106 insertions(+), 82 deletions(-) diff --git a/sei/institucional/peticionamento/indisponibilidade_peticionamento_cadastro.php b/sei/institucional/peticionamento/indisponibilidade_peticionamento_cadastro.php index 52d601f..05fc1ff 100644 --- a/sei/institucional/peticionamento/indisponibilidade_peticionamento_cadastro.php +++ b/sei/institucional/peticionamento/indisponibilidade_peticionamento_cadastro.php @@ -67,8 +67,8 @@ try { $strTitulo = 'Nova Indisponibilidade do SEI'; - $arrComandos[] = ''; - $arrComandos[] = ''; + $arrComandos[] = ''; + $arrComandos[] = ''; $strLinkAnexos = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=indisponibilidade_peticionamento_upload_anexo'); @@ -102,8 +102,8 @@ try { case 'indisponibilidade_peticionamento_alterar': $strTitulo = 'Alterar Indisponibilidade do SEI'; - $arrComandos[] = ''; - $arrComandos[] = ''; + $arrComandos[] = ''; + $arrComandos[] = ''; $strDesabilitar = 'disabled="disabled"'; @@ -207,7 +207,8 @@ try { case 'indisponibilidade_peticionamento_consultar': $strTitulo = 'Consultar Indisponibilidade do SEI'; - $arrComandos[] = ''; + $arrComandos[] = ''; + $objIndisponibilidadePeticionamentoDTO->setNumIdIndisponibilidade($_GET['id_indisponibilidade_peticionamento']); $objIndisponibilidadePeticionamentoDTO->setBolExclusaoLogica(false); $objIndisponibilidadePeticionamentoDTO->retTodos(); @@ -329,7 +330,7 @@ PaginaSEI::getInstance()->abrirAreaDados('60em');
- +
@@ -437,7 +438,7 @@ function inicializar(){ document.getElementById("filArquivo").disabled = 'disabled'; infraDesabilitarCamposAreaDados(); }else{ - document.getElementById('btnFechar').focus(); + document.getElementById('btnCancelar').focus(); } objUpload = new infraUpload('frmAnexos',''); diff --git a/sei/institucional/peticionamento/indisponibilidade_peticionamento_lista.php b/sei/institucional/peticionamento/indisponibilidade_peticionamento_lista.php index 6ad78f2..b03bfbd 100644 --- a/sei/institucional/peticionamento/indisponibilidade_peticionamento_lista.php +++ b/sei/institucional/peticionamento/indisponibilidade_peticionamento_lista.php @@ -109,6 +109,7 @@ try { throw new InfraException("Ação '".$_GET['acao']."' não reconhecida."); } + //TODO: Marcelo, qual é a utilidade dessa funcionalidade de Transportar seleção neste tela? $arrComandos = array(); if ($_GET['acao'] == 'indisponibilidade_peticionamento_selecionar'){ $arrComandos[] = ''; @@ -143,11 +144,11 @@ try { $numRegistros = count($arrObjIndisponibilidadePeticionamentoDTO); $strLinkPesquisar = PaginaSEI::getInstance()->formatarXHTML(SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao'] .'&acao_origem='.$_GET['acao'])); - $arrComandos[] = ''; + $arrComandos[] = ''; $bolAcaoCadastrar = SessaoSEI::getInstance()->verificarPermissao('indisponibilidade_peticionamento_cadastrar'); if ($bolAcaoCadastrar){ - $arrComandos[] = ''; + $arrComandos[] = ''; } if ($numRegistros > 0){ @@ -178,7 +179,8 @@ try { $bolAcaoDesativar = SessaoSEI::getInstance()->verificarPermissao('indisponibilidade_peticionamento_desativar'); } - if ($bolAcaoDesativar){ + //TODO: Marcelo, se não vai ter o botão de Desativação em lote, melhor retirar todo este bloco de código. + if ($bolAcaoDesativar){ $bolCheck = true; // $arrComandos[] = ''; $strLinkDesativar = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=indisponibilidade_peticionamento_desativar&acao_origem='.$_GET['acao']); @@ -186,7 +188,8 @@ try { $strLinkReativar = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=indisponibilidade_peticionamento_reativar&acao_origem='.$_GET['acao'].'&acao_confirmada=sim'); - if ($bolAcaoExcluir){ + //TODO: Marcelo, se não vai ter o botão de Excluir em lote, melhor retirar todo este bloco de código. + if ($bolAcaoExcluir){ $bolCheck = true; //$arrComandos[] = ''; $strLinkExcluir = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=indisponibilidade_peticionamento_excluir&acao_origem='.$_GET['acao']); @@ -273,15 +276,15 @@ try { $strResultado .= ''; } - + if( $bolAcaoImprimir ) { - $arrComandos[] = ''; + $arrComandos[] = ''; } if ($_GET['acao'] == 'indisponibilidade_peticionamento_reativar'){ - $arrComandos[] = ''; + $arrComandos[] = ''; }else{ - $arrComandos[] = ''; + $arrComandos[] = ''; } //txtDtInicio diff --git a/sei/institucional/peticionamento/menu_peticionamento_usuario_externo_cadastro.php b/sei/institucional/peticionamento/menu_peticionamento_usuario_externo_cadastro.php index 272513e..aeac329 100644 --- a/sei/institucional/peticionamento/menu_peticionamento_usuario_externo_cadastro.php +++ b/sei/institucional/peticionamento/menu_peticionamento_usuario_externo_cadastro.php @@ -33,8 +33,8 @@ try { case 'menu_peticionamento_usuario_externo_cadastrar': $strTitulo = 'Novo Menu'; - $arrComandos[] = ''; - $arrComandos[] = ''; + $arrComandos[] = ''; + $arrComandos[] = ''; $objEditorRN=new EditorRN(); $objEditorDTO=new EditorDTO(); @@ -95,9 +95,11 @@ try { } if ($_GET['acao']=='menu_peticionamento_usuario_externo_alterar'){ - $arrComandos[] = ''; + $arrComandos[] = ''; } - $arrComandos[] = ''; + + //TODO: Marcelo ou Herley, a construção dos Cases Alterar e Consultar desta funcionalidade ficou muito diferente da forma que foi construído para Tipos de Processos para Peticionamento e para Indisponibilidades do SEI. Tem que padronizar, para ficar igual as outras duas funcionalidades. Ainda, Consultar tem o botão "Fechar", enquanto que Novo e Alterar tem o botão "Cancelar". + $arrComandos[] = ''; $objEditorRN=new EditorRN(); $objEditorDTO=new EditorDTO(); @@ -320,7 +322,7 @@ else if( $tipo == 'H' ){ } ?> - + value="">
@@ -332,10 +334,10 @@ else if( $tipo == 'H' ){
- + value=""> - + fecharAreaDados(); diff --git a/sei/institucional/peticionamento/menu_peticionamento_usuario_externo_lista.php b/sei/institucional/peticionamento/menu_peticionamento_usuario_externo_lista.php index 743efdc..f3ee232 100644 --- a/sei/institucional/peticionamento/menu_peticionamento_usuario_externo_lista.php +++ b/sei/institucional/peticionamento/menu_peticionamento_usuario_externo_lista.php @@ -109,8 +109,9 @@ try { } $arrComandos = array(); - $arrComandos[] = ''; + $arrComandos[] = ''; + //TODO: Marcelo, qual é a utilidade dessa funcionalidade de Transportar seleção neste tela? if ($_GET['acao'] == 'menu_peticionamento_usuario_externo_selecionar'){ $arrComandos[] = ''; } @@ -118,7 +119,7 @@ try { $bolAcaoCadastrar = SessaoSEI::getInstance()->verificarPermissao('menu_peticionamento_usuario_externo_cadastrar'); if ($bolAcaoCadastrar){ - $arrComandos[] = ''; + $arrComandos[] = ''; } $objMenuPeticionamentoUsuarioExternoDTO = new MenuPeticionamentoUsuarioExternoDTO(); @@ -181,6 +182,7 @@ try { $bolAcaoDesativar = SessaoSEI::getInstance()->verificarPermissao('menu_peticionamento_usuario_externo_desativar'); } + //TODO: Marcelo, se não vai ter o botão de Desativar em lote, melhor retirar todo este bloco de código. if ($bolAcaoDesativar){ $bolCheck = true; //$arrComandos[] = ''; @@ -189,6 +191,7 @@ try { $strLinkReativar = SessaoSEI::getInstance()->assinarLink('controlador.php?id_menu_peticionamento_usuario_externo='. $_GET['id_menu_peticionamento_usuario_externo'] .'&acao=menu_peticionamento_usuario_externo_reativar&acao_origem='.$_GET['acao'].'&acao_confirmada=sim'); + //TODO: Marcelo, se não vai ter o botão de Excluir em lote, melhor retirar todo este bloco de código. if ($bolAcaoExcluir){ $bolCheck = true; //$arrComandos[] = ''; @@ -196,7 +199,7 @@ try { } if( $bolAcaoImprimir ) { - $arrComandos[] = ''; + $arrComandos[] = ''; } $strResultado = ''; @@ -283,9 +286,9 @@ try { $strResultado .= ''; } if ($_GET['acao'] == 'menu_peticionamento_usuario_externo_selecionar'){ - $arrComandos[] = ''; + $arrComandos[] = ''; }else{ - $arrComandos[] = ''; + $arrComandos[] = ''; } }catch(Exception $e){ diff --git a/sei/institucional/peticionamento/peticionamento_usuario_externo_cadastro_acoes.php b/sei/institucional/peticionamento/peticionamento_usuario_externo_cadastro_acoes.php index 390035b..3030eb7 100644 --- a/sei/institucional/peticionamento/peticionamento_usuario_externo_cadastro_acoes.php +++ b/sei/institucional/peticionamento/peticionamento_usuario_externo_cadastro_acoes.php @@ -9,29 +9,7 @@ */ switch($_GET['acao']){ - - //TODO migrar ações de download para serem tratadas diretamente no controlador, como foi feito com upload - case 'peticionamento_usuario_externo_download': - - $file = DIR_SEI_TEMP . '/' . $_POST['hdnNomeArquivoDownload']; - - if (file_exists($file)) { - - header('Pragma: public'); - header("Cache-Control: private, no-cache, no-store, post-check=0, pre-check=0"); - header('Expires: 0'); - header('Content-Description: File Transfer'); - header('Content-Type: application/octet-stream'); - header('Content-Disposition: attachment; filename="'. $_POST['hdnNomeArquivoDownloadReal'] .'"'); - header('Content-Length: ' . filesize($file)); - readfile($file, true); - exit; - } - - die; - - //ações de upload serao tratadas diretamente pelo controlador - + case 'peticionamento_usuario_externo_cadastrar': $strTitulo = 'Peticionar Processo Novo'; break; diff --git a/sei/institucional/peticionamento/rn/ProcessoPeticionamentoRN.php b/sei/institucional/peticionamento/rn/ProcessoPeticionamentoRN.php index ea6b00e..b2b6dd2 100644 --- a/sei/institucional/peticionamento/rn/ProcessoPeticionamentoRN.php +++ b/sei/institucional/peticionamento/rn/ProcessoPeticionamentoRN.php @@ -182,7 +182,7 @@ class ProcessoPeticionamentoRN extends InfraRN { //$arrDocsEssenciais = $arrParams[5]; //array de DocumentoDTO (docs essenciais) //$arrDocsComplementares = $arrParams[6]; //array de DocumentoDTO (docs complementares) - //$reciboPeticionamentoRN->montarRecibo( $arrParams ); + $reciboPeticionamentoRN->montarRecibo( $arrParams ); $arrProcessoReciboRetorno = array(); $arrProcessoReciboRetorno[0] = $reciboDTOBasico; @@ -260,13 +260,23 @@ class ProcessoPeticionamentoRN extends InfraRN { $anexoRN = new AnexoPeticionamentoRN(); $strSiglaUsuario = SessaoSEIExterna::getInstance()->getStrSiglaUsuarioExterno(); + $tamanhoRN = new TamanhoArquivoPermitidoPeticionamentoRN(); + $tamanhoDTO = new TamanhoArquivoPermitidoPeticionamentoDTO(); + $tamanhoDTO->setStrSinAtivo('S'); + $tamanhoDTO->retTodos(); + + $arrTamanhoDTO = $tamanhoRN->listarTamanhoMaximoConfiguradoParaUsuarioExterno( $tamanhoDTO ); + $tamanhoPrincipal = $arrTamanhoDTO[0]->getNumValorDocPrincipal(); + $tamanhoEssencialComplementar = $arrTamanhoDTO[0]->getNumValorDocComplementar(); + if( isset( $arrParametros['hdnDocPrincipal'] ) && $arrParametros['hdnDocPrincipal'] != "") { $arrAnexoDocPrincipal = $this->processarStringAnexos( $arrParametros['hdnDocPrincipal'] , $objUnidadeDTO->getNumIdUnidade() , $strSiglaUsuario, true, - $objProcedimentoDTO->getDblIdProcedimento() ); + $objProcedimentoDTO->getDblIdProcedimento(), + $tamanhoPrincipal, "principais" ); $arrAnexoPrincipalVinculacaoProcesso = array(); $arrLinhasAnexos = PaginaSEI::getInstance()->getArrItensTabelaDinamica( $arrParametros['hdnDocPrincipal'] ); @@ -424,7 +434,8 @@ class ProcessoPeticionamentoRN extends InfraRN { $objUnidadeDTO->getNumIdUnidade() , $strSiglaUsuario, false, - $objProcedimentoDTO->getDblIdProcedimento() ); + $objProcedimentoDTO->getDblIdProcedimento(), + $tamanhoEssencialComplementar, "essenciais"); //$arrAnexoDocEssencial = AnexoINT::processarRI0872( $arrParametros['hdnDocEssencial'] ); $arrAnexoEssencialVinculacaoProcesso = array(); @@ -564,7 +575,8 @@ class ProcessoPeticionamentoRN extends InfraRN { $objUnidadeDTO->getNumIdUnidade() , $strSiglaUsuario, false, - $objProcedimentoDTO->getDblIdProcedimento() ); + $objProcedimentoDTO->getDblIdProcedimento(), + $tamanhoEssencialComplementar, "complementares" ); //$arrAnexoDocComplementar = AnexoINT::processarRI0872( $arrParametros['hdnDocComplementar'] ); @@ -1249,8 +1261,11 @@ class ProcessoPeticionamentoRN extends InfraRN { // nao foi possivel usar a classe AnexoINT para processar a string de anexos, por conta da quantidade diferenciada // de campos da grid da tela de peticionamento // dentre outras especificidades técnicas desta tela - public function processarStringAnexos($strDelimitadaAnexos, $idUnidade, $strSiglaUsuario, $bolDocumentoPrincipal, $idProtocolo){ + public function processarStringAnexos($strDelimitadaAnexos, $idUnidade, $strSiglaUsuario, $bolDocumentoPrincipal, $idProtocolo, + $numTamanhoArquivoPermitido, $strAreaDocumento ){ + + $arrAnexos = array(); $arrAnexos = PaginaSEI::getInstance()->getArrItensTabelaDinamica($strDelimitadaAnexos); @@ -1258,12 +1273,31 @@ class ProcessoPeticionamentoRN extends InfraRN { foreach($arrAnexos as $anexo){ + $tamanhoDoAnexo = $anexo[2]; + + //o tamanho do arquivo pode vir em Mb ou em Kb + //se vier em Mb compara o tamanho, se vier em Kb é porque é menor do que 1Mb e portanto deixar passar (nao havera limite inferior a 1Mb) + if (strpos( $tamanhoDoAnexo , 'Mb') !== false) { + + $tamanhoDoAnexo = str_replace("Mb","", $tamanhoDoAnexo ); + + //validando tamanho máximo do arquivo + if( $tamanhoDoAnexo > $numTamanhoArquivoPermitido ){ + + $objInfraException = new InfraException(); + $objInfraException->adicionarValidacao('Um dos documentos ' . $strAreaDocumento . ' adicionados excedeu o tamanho máximo permitido (Limite: ' . $numTamanhoArquivoPermitido . ' Mb).'); + $objInfraException->lancarValidacoes(); + + } + + } + $objAnexoDTO = new AnexoDTO(); $objAnexoDTO->setNumIdAnexo( null ); $objAnexoDTO->setStrSinAtivo('S'); $objAnexoDTO->setStrNome($anexo[8]); $objAnexoDTO->setDthInclusao($anexo[1]); - $objAnexoDTO->setNumTamanho($anexo[2]); + $objAnexoDTO->setNumTamanho($anexo[2] ); $objAnexoDTO->setStrSiglaUsuario( $strSiglaUsuario ); $objAnexoDTO->setStrSiglaUnidade( $idUnidade ); $objAnexoDTO->setNumIdUsuario(SessaoSEIExterna::getInstance()->getNumIdUsuarioExterno()); diff --git a/sei/institucional/peticionamento/rn/ReciboPeticionamentoRN.php b/sei/institucional/peticionamento/rn/ReciboPeticionamentoRN.php index fab161e..1887162 100644 --- a/sei/institucional/peticionamento/rn/ReciboPeticionamentoRN.php +++ b/sei/institucional/peticionamento/rn/ReciboPeticionamentoRN.php @@ -190,7 +190,8 @@ class ReciboPeticionamentoRN extends InfraRN { $hipoteseLegalDocPrincipal = $arrParametros['hipoteseLegalDocPrincipal']; //TODO montar corretamente conteudo HTML final do recibo - $htmlRecibo = $this->gerarHTMLConteudoDocRecibo( $arrParams ); + $htmlRecibo = "teste"; + //$htmlRecibo = $this->gerarHTMLConteudoDocRecibo( $arrParams ); $protocoloRN = new ProtocoloPeticionamentoRN(); @@ -214,7 +215,7 @@ class ReciboPeticionamentoRN extends InfraRN { $protocoloReciboDocumentoDTO->setStrStaNivelAcessoLocal( ProtocoloRN::$NA_PUBLICO ); $protocoloReciboDocumentoDTO->setNumIdHipoteseLegal( null ); - $protocoloReciboDocumentoDTO->setStrStaGrauSigilo(''); + $protocoloReciboDocumentoDTO->setStrStaGrauSigilo(null); $protocoloReciboDocumentoDTO->setDtaGeracao( InfraData::getStrDataAtual() ); $protocoloReciboDocumentoDTO->setArrObjAnexoDTO(array()); @@ -272,7 +273,7 @@ class ReciboPeticionamentoRN extends InfraRN { $documentoReciboDTO->setStrCrcAssinatura(null); $documentoReciboDTO->setStrQrCodeAssinatura(null); - $documentoReciboDTO->setStrSinBloqueado('N'); + $documentoReciboDTO->setStrSinBloqueado('S'); $documentoReciboDTO->setStrStaEditor( EditorRN::$TE_NENHUM ); $documentoReciboDTO->setStrSinFormulario('S'); $documentoReciboDTO->setNumVersaoLock(0); diff --git a/sei/institucional/peticionamento/tipo_processo_peticionamento_cadastro.php b/sei/institucional/peticionamento/tipo_processo_peticionamento_cadastro.php index 6c66d1c..c5ec413 100644 --- a/sei/institucional/peticionamento/tipo_processo_peticionamento_cadastro.php +++ b/sei/institucional/peticionamento/tipo_processo_peticionamento_cadastro.php @@ -225,8 +225,8 @@ try { $strTitulo = 'Novo Tipo de Processo para Peticionamento'; - $arrComandos[] = ''; - $arrComandos[] = ''; + $arrComandos[] = ''; + $arrComandos[] = ''; $objTipoProcessoPeticionamentoDTO->setNumIdProcedimento($_POST['hdnIdTipoProcesso']); $objTipoProcessoPeticionamentoDTO->setStrOrientacoes($_POST['txtOrientacoes']); @@ -381,8 +381,8 @@ try { $strItensSelUnidades = UnidadeINT::montarSelectSiglaDescricao(null, null, $_POST['selUnidade']); $strItensSelDoc = SerieINT::montarSelectNomeRI0802(null, null, $_POST['selDocumento']); - $arrComandos[] = ''; - $arrComandos[] = ''; + $arrComandos[] = ''; + $arrComandos[] = ''; $objTipoProcessoPeticionamentoDTO->setNumIdTipoProcessoPeticionamento($_POST['hdnIdMdPetTipoProcesso']); $objTipoProcessoPeticionamentoDTO->setNumIdProcedimento($_POST['hdnIdTipoProcesso']); @@ -576,7 +576,7 @@ try { case 'tipo_processo_peticionamento_consultar': $strTitulo = 'Consultar Tipo de Processo para Peticionamento'; - $arrComandos[] = ''; + $arrComandos[] = ''; $strItensSelTipoProcesso = TipoProcessoPeticionamentoINT::montarSelectTipoProcesso(null, null, $_POST['selTipoProcesso']); $strItensSelUnidades = UnidadeINT::montarSelectSiglaDescricao(null, null, $_POST['selUnidade']); @@ -782,7 +782,7 @@ PaginaSEI::getInstance()->abrirAreaDados('100em');
-