Skip to content

Commit

Permalink
Códigos da versão 4.0.1 do módulo
Browse files Browse the repository at this point in the history
  • Loading branch information
neijobson committed Jan 6, 2023
1 parent 55a0dc0 commit 2d6f21f
Show file tree
Hide file tree
Showing 53 changed files with 5,390 additions and 103 deletions.
35 changes: 15 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
# Módulo de Pesquisa Pública

## Requisitos:
- SEI 4.0.0 instalado/atualizado.
## Requisitos
- SEI 4.0.6 instalado/atualizado (Não é compatível com o SEI 3.1.x)
- Verificar valor da constante de versão no arquivo /sei/web/SEI.php ou, após logado no sistema, parando o mouse sobre a logo do SEI no canto superior esquerdo.
- Instalar nas máquinas que rodam o SEI a biblioteca "php-mcrypt".
- Antes de executar os scripts de instalação/atualização, 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.
- Os códigos-fonte do Módulo podem ser baixados a partir do link a seguir, devendo sempre utilizar a versão mais recente: [https://github.com/anatelgovbr/mod-sei-pesquisa/releases](https://github.com/anatelgovbr/mod-sei-pesquisa/releases "Clique e acesse")

## Procedimentos para Instalação:

## Procedimentos para Instalação
1. Fazer backup dos bancos de dados do SEI e do SIP.
2. Carregar no servidor os arquivos do módulo nas pastas correspondentes nos servidores do SEI e do SIP.
- **Caso se trate de atualização de versão anterior do Módulo**, antes de copiar os códigos-fontes para a pasta "/sei/web/modulos/peticionamento", é necessário excluir os arquivos anteriores pré existentes na mencionada pasta, para não manter arquivos de códigos que foram renomeados ou descontinuados.
- **Caso se trate de atualização de versão anterior do Módulo**, antes de copiar os códigos-fontes para a pasta "/sei/web/modulos/pesquisa", é necessário excluir os arquivos anteriores pré existentes na mencionada pasta, para não manter arquivos de códigos que foram renomeados ou descontinuados.
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':

'SEI' => array(
Expand All @@ -22,30 +21,26 @@
),

4. Antes de seguir para os próximos passos, é importante conferir se o Módulo foi corretamente declarado no arquivo "/sei/config/ConfiguracaoSEI.php". Acesse o menu **Infra > Módulos** e confira se consta a linha correspondente ao Módulo, pois, realizando os passos anteriores da forma correta, independente da execução do script de banco, o Módulo já deve ser reconhecido na tela aberta pelo menu indicado.

5. Rodar o script de banco "/sip/scripts/sip_atualizar_versao_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:

/usr/bin/php -c /etc/php.ini /opt/sip/scripts/sip_atualizar_versao_modulo_pesquisa.php 2>&1 > atualizacao_pesquisa_sip.log

6. Antes de rodar o script de banco do SEI, para evitar erros de chave duplicada, importante executar o script do core do SEI de atualização dos sequences das tabelas:

/usr/bin/php -c /etc/php.ini /opt/sei/scripts/atualizar_sequencias.php 2>&1 > atualizar_sequencias_sei.log

7. Rodar o script de banco "/sei/scripts/sei_atualizar_versao_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:
6. Rodar o script de banco "/sei/scripts/sei_atualizar_versao_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:

/usr/bin/php -c /etc/php.ini /opt/sei/scripts/sei_atualizar_versao_modulo_pesquisa.php 2>&1 > atualizacao_pesquisa_sei.log
/usr/bin/php -c /etc/php.ini /opt/sei/scripts/sei_atualizar_versao_modulo_pesquisa.php 2>&1 > atualizacao_pesquisa_sei.log

8. **IMPORTANTE**: Na execução dos dois scripts de banco acima, ao final deve constar o termo "FIM", o "TEMPO TOTAL DE EXECUÇÃO" e a informação de que a instalação/atualização foi realizada com sucesso na base de dados correspondente (SEM ERROS). Do contrário, o script não foi executado até o final e algum dado não foi inserido/atualizado no respectivo banco de dados, devendo recuperar o backup do banco e repetir o procedimento.
7. **IMPORTANTE**: Na execução dos dois scripts de banco acima, ao final deve constar o termo "FIM", o "TEMPO TOTAL DE EXECUÇÃO" e a informação de que a instalação/atualização foi realizada com sucesso na base de dados correspondente (SEM ERROS). Do contrário, o script não foi executado até o final e algum dado não foi inserido/atualizado no respectivo banco de dados, devendo recuperar o backup do banco e repetir o procedimento.
- Constando ao final da execução do script as informações indicadas, pode logar no SEI e SIP e verificar no menu **Infra > Parâmetros** dos dois sistemas se consta o parâmetro "VERSAO_MODULO_PESQUISA_PUBLICA" com o valor da última versão do módulo.

9. Em caso de erro durante a execução do script, verificar (lendo as mensagens de erro e no menu Infra > Log do SEI e do SIP) se a causa é algum problema na infraestrutura local ou ajustes indevidos na estrutura de banco do core do sistema. Neste caso, após a correção, deve recuperar o backup do banco pertinente e repetir o procedimento, especialmente a execução dos scripts de banco indicados acima.
8. Em caso de erro durante a execução do script, verificar (lendo as mensagens de erro e no menu Infra > Log do SEI e do SIP) se a causa é algum problema na infraestrutura local ou ajustes indevidos na estrutura de banco do core do sistema. Neste caso, após a correção, deve recuperar o backup do banco pertinente e repetir o procedimento, especialmente a execução dos scripts de banco indicados acima.
- Caso não seja possível identificar a causa, entrar em contato com: <a href="mailto:sei@anatel.gov.br">sei@anatel.gov.br</a>
9. Após a execução com sucesso, com um usuário com permissão de Administrador no SEI, seguir os passos dispostos no tópico "Orientações Negociais" mais abaixo.

10. Após a execução com sucesso, com um usuário com permissão de Administrador no SEI, seguir os passos dispostos no tópico "Orientações Negociais" mais abaixo.
## Orientações Negociais
1. Imediatamente após a instalação com sucesso, com usuário com permissão de "Administrador" do SEI, acessar o menu de administração do Módulo pelo seguinte caminho: Administração > Pesquisa Pública > Parâmetros de Pesquisa. Somente com tudo parametrizado adequadamente será possível o uso do módulo por meio da página de Pesquisa Pública:

## Orientações Negociais:
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

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**.
2. **Atenção:** Cuidado com o preenchimento do campo "Chave para criptografia dos links de processos e documentos" na Administração do módulo. Leia o texto no ícone de ajuda sobre o citado campo.
3. 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**.
- Este comportamento visa a proteger o conhecimento do teor do documento por meios diversos do Cumprimento da Intimação Eletrônica.
- 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.
- 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 será liberado.
79 changes: 45 additions & 34 deletions sei/scripts/sei_atualizar_versao_modulo_pesquisa.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,26 @@ class MdPesqAtualizadorSeiRN extends InfraRN
{

private $numSeg = 0;
private $versaoAtualDesteModulo = '4.0.0';
private $versaoAtualDesteModulo = '4.0.1';
private $nomeDesteModulo = 'MÓDULO DE PESQUISA PÚBLICA';
private $nomeParametroModulo = 'VERSAO_MODULO_PESQUISA_PUBLICA';
private $historicoVersoes = array('3.0.0', '4.0.0');
private $historicoVersoes = array('3.0.0', '4.0.0', '4.0.1');

public function __construct()
{
parent::__construct();
}

protected function getHistoricoVersoes()
{
return $this->historicoVersoes;
}

protected function inicializarObjInfraIBanco()
{
return BancoSEI::getInstance();
}

private function inicializar($strTitulo)
protected function inicializar($strTitulo)
{
session_start();
SessaoSEI::getInstance(false);

ini_set('max_execution_time', '0');
ini_set('memory_limit', '-1');
@ini_set('implicit_flush', '1');
Expand All @@ -44,13 +40,13 @@ private function inicializar($strTitulo)
$this->logar($strTitulo);
}

private function logar($strMsg)
protected function logar($strMsg)
{
InfraDebug::getInstance()->gravar($strMsg);
flush();
}

private function finalizar($strMsg = null, $bolErro = false)
protected function finalizar($strMsg = null, $bolErro = false)
{
if (!$bolErro) {
$this->numSeg = InfraUtil::verificarTempoProcessamento($this->numSeg);
Expand Down Expand Up @@ -84,15 +80,14 @@ protected function atualizarVersaoConectado()
}

//testando versao do framework
$numVersaoInfraRequerida = '1.532.1';
$numVersaoInfraRequerida = '1.600.0';
$versaoInfraFormatada = (int)str_replace('.', '', VERSAO_INFRA);
$versaoInfraReqFormatada = (int)str_replace('.', '', $numVersaoInfraRequerida);

if ($versaoInfraFormatada < $versaoInfraReqFormatada) {
$this->finalizar('VERSÃO DO FRAMEWORK PHP INCOMPATÍVEL (VERSÃO ATUAL ' . VERSAO_INFRA . ', SENDO REQUERIDA VERSÃO IGUAL OU SUPERIOR A ' . $numVersaoInfraRequerida . ')', true);
}


//checando permissoes na base de dados
$objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance());

Expand All @@ -104,13 +99,15 @@ protected function atualizarVersaoConectado()

$objInfraParametro = new InfraParametro(BancoSEI::getInstance());

$strVersaoModuloPeticionamento = $objInfraParametro->getValor($this->nomeParametroModulo, false);
$strVersaoModuloPesquisa = $objInfraParametro->getValor($this->nomeParametroModulo, false);

switch ($strVersaoModuloPeticionamento) {
switch ($strVersaoModuloPesquisa) {
case '':
$this->instalarv300();
case '3.0.0':
$this->instalarv400();
case '4.0.0':
$this->instalarv401();
break;

default:
Expand All @@ -129,9 +126,10 @@ protected function atualizarVersaoConectado()
}
}

private function instalarv300()
protected function instalarv300()
{
$objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance());

$objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance());

$this->logar('EXECUTANDO A INSTALAÇÃO/ATUALIZAÇÃO DA VERSÃO ' . $this->versaoAtualDesteModulo . ' DO ' . $this->nomeDesteModulo . ' NA BASE DO SEI');

Expand Down Expand Up @@ -170,42 +168,54 @@ private function instalarv300()

$objParametroPesquisaRN->cadastrar($objParametroPesquisaDTO);
}

$this->logar('ATUALIZANDO PARÂMETRO ' . $this->nomeParametroModulo . ' NA TABELA infra_parametro PARA CONTROLAR A VERSÃO DO MÓDULO');
BancoSEI::getInstance()->executarSql('UPDATE infra_parametro SET valor = \'3.0.0\' WHERE nome = \'' . $this->nomeParametroModulo . '\' ');
$this->logar('ADICIONANDO PARÂMETRO ' . $this->nomeParametroModulo . ' NA TABELA infra_parametro PARA CONTROLAR A VERSÃO DO MÓDULO');
BancoSEI::getInstance()->executarSql('INSERT INTO infra_parametro (valor, nome) VALUES( \'3.0.0\', \'' . $this->nomeParametroModulo . '\' )');

$this->logar('INSTALAÇÃO/ATUALIZAÇÃO DA VERSÃO ' . $this->versaoAtualDesteModulo . ' DO ' . $this->nomeDesteModulo . ' REALIZADA COM SUCESSO NA BASE DO SEI');

}

private function instalarv400()
protected function instalarv400()
{

$this->logar('EXECUTANDO A INSTALAÇÃO/ATUALIZAÇÃO DA VERSÃO ' . $this->versaoAtualDesteModulo . ' DO ' . $this->nomeDesteModulo . ' NA BASE DO SEI');

$objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance());
$objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance());
$objInfraMetaBD->setBolValidarIdentificador(true);

$this->logar('ALTERANDO A TABELA - alterando md_pesq_parametro.valor para NULL');
$objInfraMetaBD->alterarColuna('md_pesq_parametro', 'valor', $objInfraMetaBD->tipoTextoGrande(), 'NULL');

$arrTabelas = array('md_pesq_parametro');

$this->logar('ATUALIZANDO PARÂMETRO ' . $this->nomeParametroModulo . ' NA TABELA infra_parametro PARA CONTROLAR A VERSÃO DO MÓDULO');
$this->fixIndices($objInfraMetaBD, $arrTabelas);

$this->logar('ATUALIZANDO PARÂMETRO ' . $this->nomeParametroModulo . ' NA TABELA infra_parametro PARA CONTROLAR A VERSÃO DO MÓDULO');
BancoSEI::getInstance()->executarSql('UPDATE infra_parametro SET valor = \'4.0.0\' WHERE nome = \'' . $this->nomeParametroModulo . '\' ');

$this->logar('INSTALAÇÃO/ATUALIZAÇÃO DA VERSÃO ' . $this->versaoAtualDesteModulo . ' DO ' . $this->nomeDesteModulo . ' REALIZADA COM SUCESSO NA BASE DO SEI');

}

protected function fixIndices(InfraMetaBD $objInfraMetaBD, $arrTabelas)
protected function instalarv401()
{
InfraDebug::getInstance()->setBolDebugInfra(true);

$this->logar('ATUALIZANDO INDICES...');
$this->logar('EXECUTANDO A INSTALAÇÃO/ATUALIZAÇÃO DA VERSÃO 4.0.1 DO ' . $this->nomeDesteModulo . ' NA BASE DO SEI');

$objInfraMetaBD->processarIndicesChavesEstrangeiras($arrTabelas);
$this->logar('ATUALIZANDO PARÂMETRO ' . $this->nomeParametroModulo . ' NA TABELA infra_parametro PARA CONTROLAR A VERSÃO DO MÓDULO');
BancoSEI::getInstance()->executarSql('UPDATE infra_parametro SET valor = \'4.0.1\' WHERE nome = \'' . $this->nomeParametroModulo . '\' ');

$this->logar('INSTALAÇÃO/ATUALIZAÇÃO DA VERSÃO ' . $this->versaoAtualDesteModulo . ' DO ' . $this->nomeDesteModulo . ' REALIZADA COM SUCESSO NA BASE DO SEI');

InfraDebug::getInstance()->setBolDebugInfra(false);
}

protected function fixIndices(InfraMetaBD $objInfraMetaBD, $arrTabelas)
{
InfraDebug::getInstance()->setBolDebugInfra(true);

$this->logar('ATUALIZANDO INDICES...');

$objInfraMetaBD->processarIndicesChavesEstrangeiras($arrTabelas);

InfraDebug::getInstance()->setBolDebugInfra(false);
}

}
Expand All @@ -219,18 +229,19 @@ protected function fixIndices(InfraMetaBD $objInfraMetaBD, $arrTabelas)
$arrConfig = $configuracaoSEI->getInstance()->getArrConfiguracoes();

if (!isset($arrConfig['SEI']['Modulos'])) {
throw new InfraException('PARÂMETROS DE MÓDULOS NO CONFIGURAÇÃO DO SEI NÃO DECLARADO');
throw new InfraException('PARÂMETRO DE MÓDULOS NO CONFIGURAÇÃO DO SEI NÃO DECLARADO');
} else {
$arrModulos = $arrConfig['SEI']['Modulos'];
if (!key_exists('PesquisaIntegracao', $arrModulos)) {
throw new InfraException('MÓDULO DO PESQUISA PÚBLICA NÃO DECLARADO NA CONFIGURAÇÃO DO SEI');
throw new InfraException('MÓDULO PESQUISA PÚBLICA NÃO DECLARADO NA CONFIGURAÇÃO DO SEI');
}
}

if (!class_exists('PesquisaIntegracao')) {
throw new InfraException('A CLASSE PRINCIPAL "PESQUISAINTEGRACAO" DO MÓDULO DO PESQUISA PÚBLICA NÃO ENCONTRADA');
throw new InfraException('A CLASSE PRINCIPAL "PesquisaIntegracao" DO MÓDULO NÃO FOI ENCONTRADA');
}

InfraScriptVersao::solicitarAutenticacao(BancoSei::getInstance());
$objVersaoSeiRN = new MdPesqAtualizadorSeiRN();
$objVersaoSeiRN->atualizarVersao();
exit;
Expand All @@ -242,4 +253,4 @@ protected function fixIndices(InfraMetaBD $objInfraMetaBD, $arrTabelas)
} catch (Exception $e) {
}
exit(1);
}
}
Loading

0 comments on commit 2d6f21f

Please sign in to comment.