Commit 92889f4dc3f0ea6477b5313b37afe9b219512d45

Authored by Nei Jobson da Costa Carneiro
1 parent 24f39a27

Versão pré 3.0.6 do Módulo de Pesquisa Pública, para, caso tenha o Módulo de Pes…

…quisa Pública instalado na versão igual ou superior a 2.0.0, proteger documento público relacionado com Intimaçao ainda não cumprida
README.md
1   -# Módulo de Pesquisa Pública
  1 +# Módulo de Pesquisa Pública
2 2  
3 3 ## Requisitos:
4   -- SEI 3.0.0 instalado ou atualizado (verificar valor da constante de versão do SEI no arquivo /sei/web/SEI.php).
5   -- Instalar nas máquinas que rodam o SEI a biblioteca php-mcrypt.
6   -- Antes de executar os scripts de instalação (itens 4 e 5 abaixo), o usuário de acesso aos bancos de dados do SEI e do SIP, constante nos arquivos ConfiguracaoSEI.php e ConfiguracaoSip.php, deverá ter permissão de acesso total ao banco de dados, permitindo, por exemplo, criação e exclusão de tabelas.
  4 +- SEI 3.0.10 instalado ou atualizado (verificar valor da constante de versão do SEI no arquivo /sei/web/SEI.php).
  5 +- Instalar nas máquinas que rodam o SEI a biblioteca "php-mcrypt".
  6 +- Antes de executar os scripts de instalação (itens 4 e 5 abaixo), o usuário de acesso aos bancos de dados do SEI e do SIP, constante nos arquivos ConfiguracaoSEI.php e ConfiguracaoSip.php, deverá ter permissão de acesso total ao banco de dados, permitindo, por exemplo, criação e exclusão de tabelas.
7 7  
8   -## Procedimentos para Instalação:
  8 +## Procedimentos para Instalação:
9 9  
10 10 1. Fazer backup dos bancos de dados do SEI e do SIP.
11 11  
12   -2. Carregar no servidor os arquivos do módulo localizados na pasta "/sei/web/modulos/pesquisa" e os scripts de instalação/atualização "/sei/scripts/sei_instalar_modulo_pesquisa.php" e "/sip/scripts/sip_instalar_modulo_pesquisa.php".
  12 +2. Carregar no servidor os arquivos do módulo localizados na pasta "/sei/web/modulos/pesquisa" e os scripts de instalação/atualização "/sei/scripts/sei_instalar_modulo_pesquisa.php" e "/sip/scripts/sip_instalar_modulo_pesquisa.php".
13 13  
14   -3. Editar o arquivo "/sei/config/ConfiguracaoSEI.php", tomando o cuidado de usar editor que não altere o charset do arquivo, para adicionar a referência à classe de integração do módulo e seu caminho relativo dentro da pasta "/sei/web/modulos" na array 'Modulos' da chave 'SEI':
  14 +3. Editar o arquivo "/sei/config/ConfiguracaoSEI.php", tomando o cuidado de usar editor que não altere o charset do arquivo, para adicionar a referência à classe de integração do módulo e seu caminho relativo dentro da pasta "/sei/web/modulos" na array 'Modulos' da chave 'SEI':
15 15  
16 16 'SEI' => array(
17 17 'URL' => 'http://[Servidor_PHP]/sei',
... ... @@ -20,18 +20,24 @@
20 20 'Modulos' => array('PesquisaIntegracao' => 'pesquisa',)
21 21 ),
22 22  
23   -4. Rodar o script de banco "/sei/scripts/sei_instalar_modulo_pesquisa.php" em linha de comando no servidor do SEI, verificando se não houve erro em sua execução, em que ao final do log deverá ser informado "FIM". Exemplo de comando de execução:
  23 +4. Rodar o script de banco "/sei/scripts/sei_instalar_modulo_pesquisa.php" em linha de comando no servidor do SEI, verificando se não houve erro em sua execução, em que ao final do log deverá ser informado "FIM". Exemplo de comando de execução:
24 24  
25 25 /usr/bin/php -c /etc/php.ini /var/www/html/sei/scripts/sei_instalar_modulo_pesquisa.php > atualizacao_modulo_pesquisa_sei.log
26 26  
27   -5. Rodar o script de banco "/sip/scripts/sip_instalar_modulo_pesquisa.php" em linha de comando no servidor do SIP, verificando se não houve erro em sua execução, em que ao final do log deverá ser informado "FIM". Exemplo de comando de execução:
  27 +5. Rodar o script de banco "/sip/scripts/sip_instalar_modulo_pesquisa.php" em linha de comando no servidor do SIP, verificando se não houve erro em sua execução, em que ao final do log deverá ser informado "FIM". Exemplo de comando de execução:
28 28  
29 29 /usr/bin/php -c /etc/php.ini /var/www/html/sip/scripts/sip_instalar_modulo_pesquisa.php > atualizacao_modulo_pesquisa_sip.log
30 30  
31   -6. Após a execução com sucesso, com um usuário com permissão de Administrador no SEI, abra o menu de configuração do módulo no SEI (Administração > Pesquisa Pública > Parâmetros Pesquisa Pública) e verifique as opções de configuração da Pesquisa Pública.
  31 +6. Após a execução com sucesso dos dois scripts de banco acima, com um usuário com permissão de Administrador no SEI, abra o menu de configuração do módulo no SEI (Administração > Pesquisa Pública > Parâmetros Pesquisa Pública) e verifique as opções de configuração.
32 32  
33   -7. Após a configuração, a página de Pesquisa Pública estará acessível pelo endereço a seguir:
  33 +7. Após a configuração, a página de Pesquisa Pública estará acessível pelo endereço a seguir:
34 34 http://[Servidor_PHP]/sei/modulos/pesquisa/md_pesq_processo_pesquisar.php?acao_externa=protocolo_pesquisar&acao_origem_externa=protocolo_pesquisar&id_orgao_acesso_externo=0
35 35  
36   -8. Em caso de erro durante a execução do script verificar (lendo as mensagens de erro e no SEI em Infra > Log e no SIP em Infra > Log) se a causa é algum problema na infra-estrutura local. Neste caso, após a correção, restaurar o backup do banco de dados e executar novamente os scripts indicados nos itens 4 e 5 acima.
37   - - Caso não seja possível identificar a causa, abrir Issue no projeto do módulo no Gitlab do Portal do SPB: https://softwarepublico.gov.br/gitlab/cade/mod-sei-pesquisa
38 36 \ No newline at end of file
  37 +8. Em caso de erro durante a execução dos dois script de banco verificar (lendo as mensagens de erro,no SEI em Infra > Log e no SIP em Infra > Log) se a causa foi algum problema na infra-estrutura local. Neste caso, após a correção, restaurar o backup do banco de dados e executar novamente os scripts indicados nos itens 4 e 5 acima.
  38 + - Caso não seja possível identificar a causa, abrir Issue no projeto do módulo no Gitlab do Portal do SPB: https://softwarepublico.gov.br/gitlab/cade/mod-sei-pesquisa
  39 +
  40 +## Orientações Negociais:
  41 +
  42 +1. A partir da versão 3.0.6 do Módulo de Pesquisa Pública existe integração com o Módulo de Peticionamento e Intimação Eletrônicos, em que a Pesquisa Pública percebe se existe o mencionado módulo na versão 2.0.0 ou superior instalado no SEI e, com isso, tem comportamento próprio na tela de acesso ao processo pela Pesquisa Pública para **proteger o acesso a documento público que esteja relacionado com Intimação Eletrônica ainda não cumprida**.
  43 + - Este comportamento visa a proteger o conhecimento do teor do documento por meios diversos do Cumprimento da Intimação Eletrônica.
  44 + - Após o Cumprimento da Intimação Eletrônica pelos destinatários, por ser documento público, o acesso a seu teor por meio da Pesquisa Pública passa a estar liberado.
39 45 \ No newline at end of file
... ...
sei/web/modulos/pesquisa/MdPesqBuscaProtocoloExterno.php
... ... @@ -38,6 +38,7 @@ class MdPesqBuscaProtocoloExterno {
38 38 public static function executar($q, $strDescricaoPesquisa, $strObservacaoPesquisa, $inicio, $numMaxResultados, $strParticipanteSolr, $md5Captcha = null) {
39 39  
40 40 //carrega configurações pesquisa
  41 +
41 42 $objParametroPesquisaDTO = new MdPesqParametroPesquisaDTO();
42 43 $objParametroPesquisaDTO->retStrNome();
43 44 $objParametroPesquisaDTO->retStrValor();
... ... @@ -55,10 +56,8 @@ class MdPesqBuscaProtocoloExterno {
55 56  
56 57 $parametros = new stdClass();
57 58 $filtro = new stdClass();
58   - $partialfields = '';
59 59  
60   - // Parametros peticionamento elerônico
61   - $objInfraParametroDTO = $objParametroPesquisaRN->consultarVersaoPeticionamento();
  60 + $partialfields = '';
62 61  
63 62 //die($_REQUEST["partialfields"]);
64 63  
... ... @@ -424,23 +423,14 @@ class MdPesqBuscaProtocoloExterno {
424 423 die;
425 424 }
426 425  
427   - // Protege Intimação eletônica
428   - $objMdPetIntCertidaoRN = new MdPetIntCertidaoRN();
429   - if($objInfraParametroDTO != null && $objInfraParametroDTO->getStrValor() >= '2.0.0' && $objMdPetIntCertidaoRN->verificaDocumentoEAnexoIntimacaoNaoCumprida(array($objProtocoloDTO->getDblIdProtocolo())) == false){
430   - $titulo .= " ";
431   - $titulo .= $dados["identificacao_protocolo"];
432   - $snippet = 'Documento com acesso restrito provisoriamente em razão de Intimação Eletrônica ainda não cumprida';
433   -
434   -
435   - }else{
436   - $titulo .= " ";
437   - $parametrosCriptografadosDocumentos = MdPesqCriptografia::criptografa('acao_externa=md_pesq_documento_exibir&id_orgao_acesso_externo=0&id_documento='.$objDocumentoDTO->getDblIdDocumento());
438   - $endereco = 'md_pesq_documento_consulta_externa.php?'.$parametrosCriptografadosDocumentos;
439   - $titulo .= "(<a target=\"_blank\" href=\"" . PaginaSEI::getInstance()->formatarXHTML(SessaoSEI::getInstance()->assinarLink($endereco)) . "\"";
440   - $titulo .= " class=\"protocoloNormal\"";
441   - $titulo .= ">" . $dados["identificacao_protocolo"] . "</a>)";
442   - }
443   -
  426 + $titulo .= " ";
  427 + $parametrosCriptografadosDocumentos = MdPesqCriptografia::criptografa('acao_externa=md_pesq_documento_exibir&id_orgao_acesso_externo=0&id_documento='.$objDocumentoDTO->getDblIdDocumento());
  428 + $endereco = 'md_pesq_documento_consulta_externa.php?'.$parametrosCriptografadosDocumentos;
  429 + $titulo .= "(<a target=\"_blank\" href=\"" . PaginaSEI::getInstance()->formatarXHTML(SessaoSEI::getInstance()->assinarLink($endereco)) . "\"";
  430 + $titulo .= " class=\"protocoloNormal\"";
  431 + $titulo .= ">" . $dados["identificacao_protocolo"] . "</a>)";
  432 +
  433 + //$tituloProtocolo = "<a target=\"_blank\" href=\"" . PaginaSEI::getInstance()->formatarXHTML(SessaoSEI::getInstance()->assinarLink($endereco)) . "\" class=\"protocoloNormal\" >".$dados["protocolo_documento_formatado"]. "</a>";
444 434  
445 435 }
446 436  
... ... @@ -500,10 +490,6 @@ class MdPesqBuscaProtocoloExterno {
500 490  
501 491 }
502 492  
503   -
504   -
505   -
506   -
507 493 // Protege contra a não idexação no solr quando o processo passa de público para restrito.
508 494 if(($objProtocoloDTO->getStrStaProtocolo() == ProtocoloRN::$TP_PROCEDIMENTO && $objProtocoloDTO->getStrStaNivelAcessoGlobal() != ProtocoloRN::$NA_PUBLICO && !$bolPesquisaProcessoRestrito) || ($objProtocoloDTO->getStrStaProtocolo() == ProtocoloRN::$TP_PROCEDIMENTO && $objProtocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO)){
509 495  
... ...
sei/web/modulos/pesquisa/md_pesq_documento_consulta_externa.php
... ... @@ -21,11 +21,13 @@ try {
21 21 //InfraDebug::getInstance()->setBolDebugInfra(false);
22 22 //InfraDebug::getInstance()->limpar();
23 23 //////////////////////////////////////////////////////////////////////////////
24   -
25   -
26   - MdPesqConverteURI::converterURI();
27   - MdPesqPesquisaUtil::valiadarLink();
28   -
  24 + MdPesqConverteURI::converterURI();
  25 + MdPesqPesquisaUtil::valiadarLink();
  26 +// if (isset($_GET['id_acesso_externo'])){
  27 +// SessaoSEIExterna::getInstance($_GET['id_acesso_externo'])->validarLink();
  28 +// }else{
  29 +// // SessaoSEIExterna::getInstance()->validarLink();
  30 +// }
29 31  
30 32 $objParametroPesquisaDTO = new MdPesqParametroPesquisaDTO();
31 33 $objParametroPesquisaDTO->retStrNome();
... ... @@ -39,9 +41,6 @@ try {
39 41 $bolListaDocumentoProcessoRestrito = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_LISTA_DOCUMENTO_PROCESSO_RESTRITO] == 'S' ? true : false;
40 42 $bolListaDocumentoProcessoPublico = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_LISTA_DOCUMENTO_PROCESSO_PUBLICO] == 'S' ? true : false;
41 43  
42   - // Parametros peticionamento elerônico
43   - $objInfraParametroDTO = $objParametroPesquisaRN->consultarVersaoPeticionamento();
44   -
45 44 $objDocumentoDTO = new DocumentoDTO();
46 45 $objDocumentoDTO->retDblIdDocumento();
47 46 $objDocumentoDTO->retDblIdProcedimento();
... ... @@ -104,17 +103,18 @@ try {
104 103  
105 104 }
106 105 }
107   -
108   - $objMdPetIntCertidaoRN = new MdPetIntCertidaoRN();
109   - if($objInfraParametroDTO != null && $objInfraParametroDTO->getStrValor() >= '2.0.0' && $objMdPetIntCertidaoRN->verificaDocumentoEAnexoIntimacaoNaoCumprida(array($objDocumentoDTO->getDblIdDocumento())) == false){
110   -
111   - die("Documento com acesso restrito provisoriamente em razão de Intimação Eletrônica ainda não cumprida");
112   -
113   - }
114   -
115   - // Exibe apenas documentos de processos públicos.
116   -
117 106  
  107 + //Protege acesso à documento público de intimação eletrônica
  108 + $objInfraParametroDTO = $objParametroPesquisaRN->consultarVersaoPeticionamento('2.0.0');
  109 + if( !is_null($objInfraParametroDTO) ){
  110 + $objMdPetIntCertidaoRN = new MdPetIntCertidaoRN();
  111 + if( !$objMdPetIntCertidaoRN->verificaDocumentoEAnexoIntimacaoNaoCumprida( array($objDocumentoDTO->getDblIdDocumento(),false,false,true)) ){
  112 + die("Documento com acesso restrito provisoriamente em razão de Intimação Eletrônica ainda não cumprida");
  113 + }
  114 + }
  115 +
  116 + // Exibe apenas documentos de processos públicos.
  117 +
118 118 //Carregar dados do cabeçalho
119 119 $objProcedimentoDTO = new ProcedimentoDTO();
120 120 $objProcedimentoDTO->setDblIdProcedimento($objDocumentoDTO->getDblIdProcedimento());
... ...
sei/web/modulos/pesquisa/md_pesq_processo_exibir.php
... ... @@ -36,10 +36,6 @@ try {
36 36 $objParametroPesquisaRN = new MdPesqParametroPesquisaRN();
37 37 $arrObjParametroPesquisaDTO = $objParametroPesquisaRN->listar($objParametroPesquisaDTO);
38 38 $arrParametroPesquisaDTO = InfraArray::converterArrInfraDTO($arrObjParametroPesquisaDTO,'Valor','Nome');
39   -
40   - // Parametros peticionamento elerônico
41   - $objInfraParametroDTO = $objParametroPesquisaRN->consultarVersaoPeticionamento();
42   -
43 39  
44 40 $bolPesquisaProcessoRestrito = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_PROCESSO_RESTRITO] == 'S' ? true : false;
45 41 $bolListaDocumentoProcessoPublico = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_LISTA_DOCUMENTO_PROCESSO_PUBLICO] == 'S' ? true : false;
... ... @@ -321,21 +317,25 @@ try {
321 317 $objDocumentoDTO = $objProtocoloPesquisaPublicaDTO->getObjDocumentoDTO();
322 318 $urlCripografadaDocumeto = MdPesqCriptografia::criptografa('acao_externa=documento_exibir&id_documento='.$objDocumentoDTO->getDblIdDocumento().'&id_orgao_acesso_externo=0');
323 319 $strLinkDocumento = PaginaSEI::getInstance()->formatarXHTML(SessaoSEI::getInstance()->assinarLink('md_pesq_documento_consulta_externa.php?'.$urlCripografadaDocumeto));
324   -
325   - //Protege acesso à documento público de intimação eletrônica
326   - $objMdPetIntCertidaoRN = new MdPetIntCertidaoRN();
327   - $bolValidaIntimacaoEletronica = false;
328   - if($objInfraParametroDTO != null && $objInfraParametroDTO->getStrValor() >= '2.0.0' && $objMdPetIntCertidaoRN->verificaDocumentoEAnexoIntimacaoNaoCumprida(array($objDocumentoDTO->getDblIdDocumento())) == false){
329   - $bolValidaIntimacaoEletronica = true;
330   - }
331   -
332   - $strResultado .= '<tr class="infraTrClara">';
333   -
  320 +
  321 + //Protege acesso à documento público de intimação eletrônica
  322 + $bolValidaIntimacaoEletronica = true;
  323 +
  324 + $objInfraParametroDTO = $objParametroPesquisaRN->consultarVersaoPeticionamento('2.0.0');
  325 + if( !is_null($objInfraParametroDTO) ){
  326 + $objMdPetIntCertidaoRN = new MdPetIntCertidaoRN();
  327 + if( !$objMdPetIntCertidaoRN->verificaDocumentoEAnexoIntimacaoNaoCumprida( array($objDocumentoDTO->getDblIdDocumento(),false,false,true) ) ){
  328 + $bolValidaIntimacaoEletronica = false;
  329 + }
  330 + }
  331 +
  332 + $strResultado .= '<tr class="infraTrClara">';
  333 +
334 334 //Cria checkbox para gerar PDF, verifica se o Processo é público e o Acesso Local do Protocolo é Público
335   - if($objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_PUBLICO && $objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_PUBLICO){
336   - if($objDocumentoRN->verificarSelecaoGeracaoPdf($objDocumentoDTO) && !$bolValidaIntimacaoEletronica){
337   - $strResultado .= '<td align="center">'.PaginaSEIExterna::getInstance()->getTrCheck($numDocumentosPdf++, $objDocumentoDTO->getDblIdDocumento(), $objDocumentoDTO->getStrNomeSerie()).'</td>';
338   - }else{
  335 + if($objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_PUBLICO && $objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_PUBLICO){
  336 + if($objDocumentoRN->verificarSelecaoGeracaoPdf($objDocumentoDTO) && $bolValidaIntimacaoEletronica){
  337 + $strResultado .= '<td align="center">'.PaginaSEIExterna::getInstance()->getTrCheck($numDocumentosPdf++, $objDocumentoDTO->getDblIdDocumento(), $objDocumentoDTO->getStrNomeSerie()).'</td>';
  338 + }else{
339 339 $strResultado .= '<td>&nbsp;</td>';
340 340 }
341 341 }else{
... ... @@ -344,19 +344,18 @@ try {
344 344  
345 345  
346 346 //Exibe link de documentos com nivel de acesso local Público de processo público
347   - if($objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_PUBLICO && $objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_PUBLICO ){
348   -
349   - if($bolValidaIntimacaoEletronica){
350   - $strResultado .= '<td align="center"><span class="retiraAncoraPadraoAzul">'.$objDocumentoDTO->getStrProtocoloDocumentoFormatado().'</span>';
351   - $strResultado .= '<img src="/infra_css/imagens/espaco.gif">';
352   - $strResultado .= '<img src="../peticionamento/imagens/intimacao_nao_cumprida_doc_anexo.png" align="absbottom" title="Acesso Restrito.&#13'.'Documento com acesso restrito provisoriamente em razão de Intimação Eletrônica ainda não cumprida">';
353   - }else{
354   - $strResultado .= '<td align="center" style="padding-right:22px"><a href="javascript:void(0);" onclick="window.open(\''.$strLinkDocumento.'\');" alt="'.PaginaSEIExterna::getInstance()->formatarXHTML($objDocumentoDTO->getStrNomeSerie()).'" title="'.PaginaSEIExterna::getInstance()->formatarXHTML($objDocumentoDTO->getStrNomeSerie()).'" class="ancoraPadraoAzul">'.$objDocumentoDTO->getStrProtocoloDocumentoFormatado().'</a></td>';
355   - }
356   -
357   -
358   - }else{
359   - if($objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO){
  347 + if($objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_PUBLICO && $objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_PUBLICO ){
  348 +
  349 + if($bolValidaIntimacaoEletronica){
  350 + $strResultado .= '<td align="center" style="padding-right:22px"><a href="javascript:void(0);" onclick="window.open(\''.$strLinkDocumento.'\');" alt="'.PaginaSEIExterna::getInstance()->formatarXHTML($objDocumentoDTO->getStrNomeSerie()).'" title="'.PaginaSEIExterna::getInstance()->formatarXHTML($objDocumentoDTO->getStrNomeSerie()).'" class="ancoraPadraoAzul">'.$objDocumentoDTO->getStrProtocoloDocumentoFormatado().'</a></td>';
  351 + }else{
  352 + $strResultado .= '<td align="center"><span class="retiraAncoraPadraoAzul">'.$objDocumentoDTO->getStrProtocoloDocumentoFormatado().'</span>';
  353 + $strResultado .= '<img src="/infra_css/imagens/espaco.gif">';
  354 + $strResultado .= '<img src="../peticionamento/imagens/intimacao_nao_cumprida_doc_anexo.png" align="absbottom" title="Acesso Restrito.&#13'.'Documento com acesso restrito provisoriamente em razão de Intimação Eletrônica ainda não cumprida">';
  355 + }
  356 +
  357 + }else{
  358 + if($objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO){
360 359  
361 360 //necessario para retornar id hipotese legal do documento
362 361 $strHipoteseLegalDocumento = '';
... ... @@ -575,10 +574,9 @@ try {
575 574 PaginaSEIExterna::getInstance()->setStrMensagem('Código de confirmação inválido.');
576 575  
577 576 }else {
578   -
579 577  
580   - $objDocumentoRN = new DocumentoRN();
581   -
  578 + $objDocumentoRN = new DocumentoRN();
  579 +
582 580 $parArrObjDocumentoDTO = InfraArray::converterArrInfraDTO(InfraArray::gerarArrInfraDTO('DocumentoDTO','IdDocumento',PaginaSEIExterna::getInstance()->getArrStrItensSelecionados()),'IdDocumento');
583 581 $objDocumentoDTO = new DocumentoDTO();
584 582 $objDocumentoDTO->retDblIdDocumento();
... ... @@ -586,17 +584,29 @@ try {
586 584 $objDocumentoDTO->retDblIdProcedimento();
587 585 $objDocumentoDTO->retStrStaNivelAcessoGlobalProtocolo();
588 586 $objDocumentoDTO->retStrStaNivelAcessoLocalProtocolo();
589   - $arrObjDocumentoDTO = $objDocumentoRN->listarRN0008($objDocumentoDTO);
590   -
591   - foreach ($arrObjDocumentoDTO as $objDocumentoDTO){
592   -
  587 + $arrObjDocumentoDTO = $objDocumentoRN->listarRN0008($objDocumentoDTO);
  588 +
  589 + $arrSelecionados = PaginaSEIExterna::getInstance()->getArrStrItensSelecionados();
  590 +
  591 + foreach ($arrObjDocumentoDTO as $objDocumentoDTO){
  592 +
593 593 //Alterardo para atender o pedido da anatel para gerar pdf de documentos de nivel de acesso local = Público e de Procedimentos Públicos mesmo se o nivel global for restrito
594 594 if($bolListaDocumentoProcessoRestrito){
595 595 if($objDocumentoDTO->getDblIdProcedimento() != $dblIdProcedimento || $objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() != ProtocoloRN::$NA_PUBLICO || $objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() != ProtocoloRN::$NA_PUBLICO){
596 596 die ("Erro ao Gerar Pdf");
597 597 }
598   - }else if($bolListaDocumentoProcessoPublico){
599   - if($objDocumentoDTO->getDblIdProcedimento() != $dblIdProcedimento || $objDocumentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_PUBLICO){
  598 +
  599 + //Protege acesso à documento público de intimação eletrônica
  600 + $objInfraParametroDTO = $objParametroPesquisaRN->consultarVersaoPeticionamento('2.0.0');
  601 + if( !is_null($objInfraParametroDTO) ){
  602 + $objMdPetIntCertidaoRN = new MdPetIntCertidaoRN();
  603 + if( !$objMdPetIntCertidaoRN->verificaDocumentoEAnexoIntimacaoNaoCumprida( array($objDocumentoDTO->getDblIdDocumento(),false,false,true) ) ){
  604 + $idx_documento = array_search($objDocumentoDTO->getDblIdDocumento(), $arrSelecionados);
  605 + unset($arrSelecionados[$idx_documento]);
  606 + }
  607 + }
  608 + }else if($bolListaDocumentoProcessoPublico){
  609 + if($objDocumentoDTO->getDblIdProcedimento() != $dblIdProcedimento || $objDocumentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_PUBLICO){
600 610 die ("Erro ao Gerar Pdf");
601 611 }
602 612 }else{
... ... @@ -604,13 +614,18 @@ try {
604 614 }
605 615  
606 616  
607   - }
608   -
609   -
610   - $objDocumentoRN = new DocumentoRN();
611   - $objAnexoDTO = $objDocumentoRN->gerarPdf(InfraArray::gerarArrInfraDTO('DocumentoDTO','IdDocumento',PaginaSEIExterna::getInstance()->getArrStrItensSelecionados()));
612   -
613   - $bolGeracaoOK = true;
  617 + }
  618 +
  619 + if (count($arrSelecionados)==0){
  620 + die ("Sem documento a gerar");
  621 + }
  622 +
  623 + $arrSelecionados = array_values($arrSelecionados);
  624 +
  625 + $objDocumentoRN = new DocumentoRN();
  626 + $objAnexoDTO = $objDocumentoRN->gerarPdf(InfraArray::gerarArrInfraDTO('DocumentoDTO','IdDocumento',$arrSelecionados));
  627 +
  628 + $bolGeracaoOK = true;
614 629  
615 630 }
616 631  
... ... @@ -778,7 +793,6 @@ window.onclick = function(event) {
778 793 ?>
779 794  
780 795 function gerarPdf() {
781   -
782 796 if (document.getElementById('hdnInfraItensSelecionados').value==''){
783 797 alert('Nenhum documento selecionado.');
784 798 return;
... ...
sei/web/modulos/pesquisa/rn/MdPesqParametroPesquisaRN.php
... ... @@ -36,12 +36,12 @@ class MdPesqParametroPesquisaRN extends InfraRN {
36 36 protected function consultarConectado(MdPesqParametroPesquisaDTO $objParametroPesquisaDTO){
37 37 try {
38 38  
39   - //Valida Permissao
40   - SessaoSEI::getInstance()->validarPermissao('md_pesq_parametro_consultar',__METHOD__,$objParametroPesquisaDTO);
41   -
42   - //Regras de Negocio
43   - //$objInfraException = new InfraException();
44   -
  39 + //Valida Permissao
  40 + SessaoSEI::getInstance()->validarPermissao('md_pesq_parametro_consultar',__METHOD__,$objParametroPesquisaDTO);
  41 +
  42 + //Regras de Negocio
  43 + //$objInfraException = new InfraException();
  44 +
45 45 //$objInfraException->lancarValidacoes();
46 46  
47 47 $objParametroPesquisaBD = new MdPesqParametroPesquisaBD($this->getObjInfraIBanco());
... ... @@ -122,24 +122,40 @@ class MdPesqParametroPesquisaRN extends InfraRN {
122 122 throw new InfraException('Erro listando Parâmetro da Pesquisas.',$e);
123 123 }
124 124 }
125   -
126   -
127   - protected function consultarVersaoPeticionamentoConectado(){
128   -
129   - $objInfraParametroDTO = new InfraParametroDTO();
130   - $objInfraParametroDTO->setStrNome('VERSAO_MODULO_PETICIONAMENTO');
131   - $objInfraParametroDTO->retStrValor();
132   -
133   - $objInfraParametroBD = new InfraParametroBD($this->getObjInfraIBanco());
134   - $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
135   -
136   - return $objInfraParametroDTO;
  125 +
  126 +
  127 + protected function consultarVersaoPeticionamentoConectado($versao=null){
  128 + $arrModulos = ConfiguracaoSEI::getInstance()->getValor('SEI','Modulos');
  129 + if(is_array($arrModulos) && array_key_exists('PeticionamentoIntegracao', $arrModulos)){
  130 + $objInfraParametroDTO = new InfraParametroDTO();
  131 + $objInfraParametroDTO->setStrNome('VERSAO_MODULO_PETICIONAMENTO');
  132 + $objInfraParametroDTO->retStrValor();
  133 +
  134 + $objInfraParametroBD = new InfraParametroBD($this->getObjInfraIBanco());
  135 + $arrObjInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
  136 +
  137 + //versão do parametro é igual ou maior que a enviada
  138 + if (!is_null($versao)){
  139 + if (count($arrObjInfraParametroDTO)>0){
  140 + $arr_versao_parametro = explode('.',$arrObjInfraParametroDTO->getStrValor());
  141 + $arr_versao = explode('.',$versao);
  142 + for ($i=0;$i<count($arr_versao_parametro);$i++){
  143 + if (isset($arr_versao[$i])) {
  144 + if( intval($arr_versao_parametro[$i]) < intval($arr_versao[$i]) ){
  145 + return null;
  146 + }else if( intval($arr_versao_parametro[$i]) > intval($arr_versao[$i]) ){
  147 + return $arrObjInfraParametroDTO;
  148 + }
  149 + }
  150 + }
  151 + }
  152 + }
  153 + return $arrObjInfraParametroDTO;
  154 + }else{
  155 + return null;
  156 + }
137 157 }
138   -
139   -
140 158  
141   -
142   -
143 159 private function validarStrNome(MdPesqParametroPesquisaDTO $objParametroPesquisaDTO, InfraException $objInfraException){
144 160 if (InfraString::isBolVazia($objParametroPesquisaDTO->getStrNome())){
145 161 $objInfraException->adicionarValidacao('Nome não informado.');
... ...