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
1 -# Módulo de Pesquisa Pública 1 +# Módulo de Pesquisa Pública
2 2
3 ## Requisitos: 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 1. Fazer backup dos bancos de dados do SEI e do SIP. 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 'SEI' => array( 16 'SEI' => array(
17 'URL' => 'http://[Servidor_PHP]/sei', 17 'URL' => 'http://[Servidor_PHP]/sei',
@@ -20,18 +20,24 @@ @@ -20,18 +20,24 @@
20 'Modulos' => array('PesquisaIntegracao' => 'pesquisa',) 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 /usr/bin/php -c /etc/php.ini /var/www/html/sei/scripts/sei_instalar_modulo_pesquisa.php > atualizacao_modulo_pesquisa_sei.log 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 /usr/bin/php -c /etc/php.ini /var/www/html/sip/scripts/sip_instalar_modulo_pesquisa.php > atualizacao_modulo_pesquisa_sip.log 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 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 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 \ No newline at end of file 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 \ No newline at end of file 45 \ No newline at end of file
sei/web/modulos/pesquisa/MdPesqBuscaProtocoloExterno.php
@@ -38,6 +38,7 @@ class MdPesqBuscaProtocoloExterno { @@ -38,6 +38,7 @@ class MdPesqBuscaProtocoloExterno {
38 public static function executar($q, $strDescricaoPesquisa, $strObservacaoPesquisa, $inicio, $numMaxResultados, $strParticipanteSolr, $md5Captcha = null) { 38 public static function executar($q, $strDescricaoPesquisa, $strObservacaoPesquisa, $inicio, $numMaxResultados, $strParticipanteSolr, $md5Captcha = null) {
39 39
40 //carrega configurações pesquisa 40 //carrega configurações pesquisa
  41 +
41 $objParametroPesquisaDTO = new MdPesqParametroPesquisaDTO(); 42 $objParametroPesquisaDTO = new MdPesqParametroPesquisaDTO();
42 $objParametroPesquisaDTO->retStrNome(); 43 $objParametroPesquisaDTO->retStrNome();
43 $objParametroPesquisaDTO->retStrValor(); 44 $objParametroPesquisaDTO->retStrValor();
@@ -55,10 +56,8 @@ class MdPesqBuscaProtocoloExterno { @@ -55,10 +56,8 @@ class MdPesqBuscaProtocoloExterno {
55 56
56 $parametros = new stdClass(); 57 $parametros = new stdClass();
57 $filtro = new stdClass(); 58 $filtro = new stdClass();
58 - $partialfields = '';  
59 59
60 - // Parametros peticionamento elerônico  
61 - $objInfraParametroDTO = $objParametroPesquisaRN->consultarVersaoPeticionamento(); 60 + $partialfields = '';
62 61
63 //die($_REQUEST["partialfields"]); 62 //die($_REQUEST["partialfields"]);
64 63
@@ -424,23 +423,14 @@ class MdPesqBuscaProtocoloExterno { @@ -424,23 +423,14 @@ class MdPesqBuscaProtocoloExterno {
424 die; 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,10 +490,6 @@ class MdPesqBuscaProtocoloExterno {
500 490
501 } 491 }
502 492
503 -  
504 -  
505 -  
506 -  
507 // Protege contra a não idexação no solr quando o processo passa de público para restrito. 493 // Protege contra a não idexação no solr quando o processo passa de público para restrito.
508 if(($objProtocoloDTO->getStrStaProtocolo() == ProtocoloRN::$TP_PROCEDIMENTO && $objProtocoloDTO->getStrStaNivelAcessoGlobal() != ProtocoloRN::$NA_PUBLICO && !$bolPesquisaProcessoRestrito) || ($objProtocoloDTO->getStrStaProtocolo() == ProtocoloRN::$TP_PROCEDIMENTO && $objProtocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO)){ 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,11 +21,13 @@ try {
21 //InfraDebug::getInstance()->setBolDebugInfra(false); 21 //InfraDebug::getInstance()->setBolDebugInfra(false);
22 //InfraDebug::getInstance()->limpar(); 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 $objParametroPesquisaDTO = new MdPesqParametroPesquisaDTO(); 32 $objParametroPesquisaDTO = new MdPesqParametroPesquisaDTO();
31 $objParametroPesquisaDTO->retStrNome(); 33 $objParametroPesquisaDTO->retStrNome();
@@ -39,9 +41,6 @@ try { @@ -39,9 +41,6 @@ try {
39 $bolListaDocumentoProcessoRestrito = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_LISTA_DOCUMENTO_PROCESSO_RESTRITO] == 'S' ? true : false; 41 $bolListaDocumentoProcessoRestrito = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_LISTA_DOCUMENTO_PROCESSO_RESTRITO] == 'S' ? true : false;
40 $bolListaDocumentoProcessoPublico = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_LISTA_DOCUMENTO_PROCESSO_PUBLICO] == 'S' ? true : false; 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 $objDocumentoDTO = new DocumentoDTO(); 44 $objDocumentoDTO = new DocumentoDTO();
46 $objDocumentoDTO->retDblIdDocumento(); 45 $objDocumentoDTO->retDblIdDocumento();
47 $objDocumentoDTO->retDblIdProcedimento(); 46 $objDocumentoDTO->retDblIdProcedimento();
@@ -104,17 +103,18 @@ try { @@ -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 //Carregar dados do cabeçalho 118 //Carregar dados do cabeçalho
119 $objProcedimentoDTO = new ProcedimentoDTO(); 119 $objProcedimentoDTO = new ProcedimentoDTO();
120 $objProcedimentoDTO->setDblIdProcedimento($objDocumentoDTO->getDblIdProcedimento()); 120 $objProcedimentoDTO->setDblIdProcedimento($objDocumentoDTO->getDblIdProcedimento());
sei/web/modulos/pesquisa/md_pesq_processo_exibir.php
@@ -36,10 +36,6 @@ try { @@ -36,10 +36,6 @@ try {
36 $objParametroPesquisaRN = new MdPesqParametroPesquisaRN(); 36 $objParametroPesquisaRN = new MdPesqParametroPesquisaRN();
37 $arrObjParametroPesquisaDTO = $objParametroPesquisaRN->listar($objParametroPesquisaDTO); 37 $arrObjParametroPesquisaDTO = $objParametroPesquisaRN->listar($objParametroPesquisaDTO);
38 $arrParametroPesquisaDTO = InfraArray::converterArrInfraDTO($arrObjParametroPesquisaDTO,'Valor','Nome'); 38 $arrParametroPesquisaDTO = InfraArray::converterArrInfraDTO($arrObjParametroPesquisaDTO,'Valor','Nome');
39 -  
40 - // Parametros peticionamento elerônico  
41 - $objInfraParametroDTO = $objParametroPesquisaRN->consultarVersaoPeticionamento();  
42 -  
43 39
44 $bolPesquisaProcessoRestrito = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_PROCESSO_RESTRITO] == 'S' ? true : false; 40 $bolPesquisaProcessoRestrito = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_PROCESSO_RESTRITO] == 'S' ? true : false;
45 $bolListaDocumentoProcessoPublico = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_LISTA_DOCUMENTO_PROCESSO_PUBLICO] == 'S' ? true : false; 41 $bolListaDocumentoProcessoPublico = $arrParametroPesquisaDTO[MdPesqParametroPesquisaRN::$TA_LISTA_DOCUMENTO_PROCESSO_PUBLICO] == 'S' ? true : false;
@@ -321,21 +317,25 @@ try { @@ -321,21 +317,25 @@ try {
321 $objDocumentoDTO = $objProtocoloPesquisaPublicaDTO->getObjDocumentoDTO(); 317 $objDocumentoDTO = $objProtocoloPesquisaPublicaDTO->getObjDocumentoDTO();
322 $urlCripografadaDocumeto = MdPesqCriptografia::criptografa('acao_externa=documento_exibir&id_documento='.$objDocumentoDTO->getDblIdDocumento().'&id_orgao_acesso_externo=0'); 318 $urlCripografadaDocumeto = MdPesqCriptografia::criptografa('acao_externa=documento_exibir&id_documento='.$objDocumentoDTO->getDblIdDocumento().'&id_orgao_acesso_externo=0');
323 $strLinkDocumento = PaginaSEI::getInstance()->formatarXHTML(SessaoSEI::getInstance()->assinarLink('md_pesq_documento_consulta_externa.php?'.$urlCripografadaDocumeto)); 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 //Cria checkbox para gerar PDF, verifica se o Processo é público e o Acesso Local do Protocolo é Público 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 $strResultado .= '<td>&nbsp;</td>'; 339 $strResultado .= '<td>&nbsp;</td>';
340 } 340 }
341 }else{ 341 }else{
@@ -344,19 +344,18 @@ try { @@ -344,19 +344,18 @@ try {
344 344
345 345
346 //Exibe link de documentos com nivel de acesso local Público de processo público 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 //necessario para retornar id hipotese legal do documento 360 //necessario para retornar id hipotese legal do documento
362 $strHipoteseLegalDocumento = ''; 361 $strHipoteseLegalDocumento = '';
@@ -575,10 +574,9 @@ try { @@ -575,10 +574,9 @@ try {
575 PaginaSEIExterna::getInstance()->setStrMensagem('Código de confirmação inválido.'); 574 PaginaSEIExterna::getInstance()->setStrMensagem('Código de confirmação inválido.');
576 575
577 }else { 576 }else {
578 -  
579 577
580 - $objDocumentoRN = new DocumentoRN();  
581 - 578 + $objDocumentoRN = new DocumentoRN();
  579 +
582 $parArrObjDocumentoDTO = InfraArray::converterArrInfraDTO(InfraArray::gerarArrInfraDTO('DocumentoDTO','IdDocumento',PaginaSEIExterna::getInstance()->getArrStrItensSelecionados()),'IdDocumento'); 580 $parArrObjDocumentoDTO = InfraArray::converterArrInfraDTO(InfraArray::gerarArrInfraDTO('DocumentoDTO','IdDocumento',PaginaSEIExterna::getInstance()->getArrStrItensSelecionados()),'IdDocumento');
583 $objDocumentoDTO = new DocumentoDTO(); 581 $objDocumentoDTO = new DocumentoDTO();
584 $objDocumentoDTO->retDblIdDocumento(); 582 $objDocumentoDTO->retDblIdDocumento();
@@ -586,17 +584,29 @@ try { @@ -586,17 +584,29 @@ try {
586 $objDocumentoDTO->retDblIdProcedimento(); 584 $objDocumentoDTO->retDblIdProcedimento();
587 $objDocumentoDTO->retStrStaNivelAcessoGlobalProtocolo(); 585 $objDocumentoDTO->retStrStaNivelAcessoGlobalProtocolo();
588 $objDocumentoDTO->retStrStaNivelAcessoLocalProtocolo(); 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 //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 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 if($bolListaDocumentoProcessoRestrito){ 594 if($bolListaDocumentoProcessoRestrito){
595 if($objDocumentoDTO->getDblIdProcedimento() != $dblIdProcedimento || $objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() != ProtocoloRN::$NA_PUBLICO || $objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() != ProtocoloRN::$NA_PUBLICO){ 595 if($objDocumentoDTO->getDblIdProcedimento() != $dblIdProcedimento || $objDocumentoDTO->getStrStaNivelAcessoLocalProtocolo() != ProtocoloRN::$NA_PUBLICO || $objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() != ProtocoloRN::$NA_PUBLICO){
596 die ("Erro ao Gerar Pdf"); 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 die ("Erro ao Gerar Pdf"); 610 die ("Erro ao Gerar Pdf");
601 } 611 }
602 }else{ 612 }else{
@@ -604,13 +614,18 @@ try { @@ -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,7 +793,6 @@ window.onclick = function(event) {
778 ?> 793 ?>
779 794
780 function gerarPdf() { 795 function gerarPdf() {
781 -  
782 if (document.getElementById('hdnInfraItensSelecionados').value==''){ 796 if (document.getElementById('hdnInfraItensSelecionados').value==''){
783 alert('Nenhum documento selecionado.'); 797 alert('Nenhum documento selecionado.');
784 return; 798 return;
sei/web/modulos/pesquisa/rn/MdPesqParametroPesquisaRN.php
@@ -36,12 +36,12 @@ class MdPesqParametroPesquisaRN extends InfraRN { @@ -36,12 +36,12 @@ class MdPesqParametroPesquisaRN extends InfraRN {
36 protected function consultarConectado(MdPesqParametroPesquisaDTO $objParametroPesquisaDTO){ 36 protected function consultarConectado(MdPesqParametroPesquisaDTO $objParametroPesquisaDTO){
37 try { 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 //$objInfraException->lancarValidacoes(); 45 //$objInfraException->lancarValidacoes();
46 46
47 $objParametroPesquisaBD = new MdPesqParametroPesquisaBD($this->getObjInfraIBanco()); 47 $objParametroPesquisaBD = new MdPesqParametroPesquisaBD($this->getObjInfraIBanco());
@@ -122,24 +122,40 @@ class MdPesqParametroPesquisaRN extends InfraRN { @@ -122,24 +122,40 @@ class MdPesqParametroPesquisaRN extends InfraRN {
122 throw new InfraException('Erro listando Parâmetro da Pesquisas.',$e); 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 private function validarStrNome(MdPesqParametroPesquisaDTO $objParametroPesquisaDTO, InfraException $objInfraException){ 159 private function validarStrNome(MdPesqParametroPesquisaDTO $objParametroPesquisaDTO, InfraException $objInfraException){
144 if (InfraString::isBolVazia($objParametroPesquisaDTO->getStrNome())){ 160 if (InfraString::isBolVazia($objParametroPesquisaDTO->getStrNome())){
145 $objInfraException->adicionarValidacao('Nome não informado.'); 161 $objInfraException->adicionarValidacao('Nome não informado.');