Commit a7dc4fc28a64c7dc0582c1427b6385ef933dfe51

Authored by Guilherme Andrade Del Cantoni
1 parent 22361c95

[Fixed #51] Incompatibilidade do módulo com a versão SEI 3.1

PENIntegracao.php
... ... @@ -2,7 +2,7 @@
2 2  
3 3 class PENIntegracao extends SeiIntegracao {
4 4  
5   - const COMPATIBILIDADE_MODULO_SEI = array('3.0.5', '3.0.6', '3.0.7', '3.0.8', '3.0.9', '3.0.11', '3.0.12', '3.0.13', '3.0.14', '3.0.15');
  5 + const COMPATIBILIDADE_MODULO_SEI = array('3.0.5', '3.0.6', '3.0.7', '3.0.8', '3.0.9', '3.0.11', '3.0.12', '3.0.13', '3.0.14', '3.0.15', '3.1.0');
6 6  
7 7 private static $strDiretorio;
8 8  
... ... @@ -11,7 +11,7 @@ class PENIntegracao extends SeiIntegracao {
11 11 }
12 12  
13 13 public function getVersao() {
14   - return '1.1.17';
  14 + return '1.2.0';
15 15 }
16 16  
17 17 public function getInstituicao() {
... ... @@ -353,7 +353,8 @@ class PENIntegracao extends SeiIntegracao {
353 353 return $xml;
354 354 }
355 355  
356   - public static function validarCompatibilidadeModulo($bolGerarExcecao = true, $strVersaoSEI = SEI_VERSAO) {
  356 + public static function validarCompatibilidadeModulo($bolGerarExcecao = true, $strVersaoSEI = SEI_VERSAO)
  357 + {
357 358 $objPENIntegracao = new PENIntegracao();
358 359 if(!in_array($strVersaoSEI, self::COMPATIBILIDADE_MODULO_SEI)) {
359 360 throw new InfraException(sprintf("Módulo %s (versão %s) não é compatível com a versão %s do SEI.", $objPENIntegracao->getNome(), $objPENIntegracao->getVersao(), $strVersaoSEI));
... ...
bd/PenMetaBD.php
... ... @@ -326,10 +326,10 @@ class PenMetaBD extends InfraMetaBD {
326 326 return $this;
327 327 }
328 328  
329   - public function adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem) {
  329 + public function adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem, $bolCriarIndice = true) {
330 330  
331 331 if(!$this->isChaveExiste($strTabela, $strNomeFK)) {
332   - parent::adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem);
  332 + parent::adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem, $bolCriarIndice);
333 333 }
334 334 return $this;
335 335 }
... ...
rn/ExpedirProcedimentoRN.php
... ... @@ -1209,8 +1209,16 @@ class ExpedirProcedimentoRN extends InfraRN {
1209 1209 $objEditorDTO->setStrSinProcessarLinks('S');
1210 1210 }
1211 1211  
1212   - $numVersaoAtual = intval(str_replace('.', '', SEI_VERSAO));
1213   - $numVersaoCarimboObrigatorio = intval(str_replace('.', '', self::VERSAO_CARIMBO_PUBLICACAO_OBRIGATORIO));
  1212 + //Normaliza o formato de número de versão considerando dois caracteres para cada item (3.0.15 -> 030015)
  1213 + $numVersaoAtual = explode('.', SEI_VERSAO);
  1214 + $numVersaoAtual = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersaoAtual);
  1215 + $numVersaoAtual = intval(join($numVersaoAtual));
  1216 +
  1217 + //Normaliza o formato de número de versão considerando dois caracteres para cada item (3.0.7 -> 030007)
  1218 + $numVersaoCarimboObrigatorio = explode('.', self::VERSAO_CARIMBO_PUBLICACAO_OBRIGATORIO);
  1219 + $numVersaoCarimboObrigatorio = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersaoCarimboObrigatorio);
  1220 + $numVersaoCarimboObrigatorio = intval(join($numVersaoCarimboObrigatorio));
  1221 +
1214 1222 if ($numVersaoAtual >= $numVersaoCarimboObrigatorio) {
1215 1223 $objEditorDTO->setStrSinCarimboPublicacao('N');
1216 1224 }
... ...
rn/PenAtualizarSeiRN.php
... ... @@ -27,22 +27,24 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
27 27 !(BancoSEI::getInstance() instanceof InfraOracle)) {
28 28  
29 29 $this->finalizar('BANCO DE DADOS NAO SUPORTADO: ' . get_parent_class(BancoSEI::getInstance()), true);
30   - }
  30 + }
  31 +
  32 + PENIntegracao::validarCompatibilidadeModulo();
31 33  
32 34 //testando permissoes de criações de tabelas
33   - $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance());
  35 + $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance());
34 36  
35   - if (count($objInfraMetaBD->obterTabelas('pen_sei_teste')) == 0) {
36   - BancoSEI::getInstance()->executarSql('CREATE TABLE pen_sei_teste (id ' . $objInfraMetaBD->tipoNumero() . ' null)');
37   - }
38   - BancoSEI::getInstance()->executarSql('DROP TABLE pen_sei_teste');
  37 + if (count($objInfraMetaBD->obterTabelas('pen_sei_teste')) == 0) {
  38 + BancoSEI::getInstance()->executarSql('CREATE TABLE pen_sei_teste (id ' . $objInfraMetaBD->tipoNumero() . ' null)');
  39 + }
  40 + BancoSEI::getInstance()->executarSql('DROP TABLE pen_sei_teste');
39 41  
40   - $objInfraParametro = new InfraParametro(BancoSEI::getInstance());
  42 + $objInfraParametro = new InfraParametro(BancoSEI::getInstance());
41 43  
42 44 // Aplicação de scripts de atualização de forma incremental
43 45 // Ausência de [break;] proposital para realizar a atualização incremental de versões
44   - $strVersaoModuloPen = $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO, false) ?: $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO_ANTIGO, false);
45   - switch ($strVersaoModuloPen) {
  46 + $strVersaoModuloPen = $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO, false) ?: $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO_ANTIGO, false);
  47 + switch ($strVersaoModuloPen) {
46 48 case '': $this->instalarV100(); // Nenhuma versão instalada
47 49 case '1.0.0': $this->instalarV101();
48 50 case '1.0.1': $this->instalarV110();
... ... @@ -63,6 +65,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
63 65 case '1.1.14': $this->instalarV1115();
64 66 case '1.1.15': $this->instalarV1116();
65 67 case '1.1.16': $this->instalarV1117();
  68 + case '1.1.17': $this->instalarV1200();
66 69  
67 70 break;
68 71 default:
... ... @@ -1482,8 +1485,32 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
1482 1485 $fnCadastrar(++$numMaxId, 'PEN_EXPEDICAO_PROCESSO_ABORTADA');
1483 1486  
1484 1487 InfraDebug::getInstance()->gravar('Atualizando sequência das tabelas do sistema');
1485   - $objVersaoRN = new VersaoRN();
1486   - $objVersaoRN->atualizarSequencias();
  1488 +
  1489 +
  1490 + //Na versão 3.1.0 do SEI, houve uma mudança na rotina de atualização das sequences do banco de dados,
  1491 + //deixando de se utilizar a classe VersaoRN para utilizar a nova classe ScriptRN.
  1492 + //Devido a esta mudança, é necessário avaliar qual a atual versão do SEI executar a rotina correta
  1493 +
  1494 + //Normaliza o formato de número de versão considerando dois caracteres para cada item (3.1.0 -> 030100)
  1495 + $numVersaoAtualSEI = explode('.', SEI_VERSAO);
  1496 + $numVersaoAtualSEI = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersaoAtualSEI);
  1497 + $numVersaoAtualSEI = intval(join($numVersaoAtualSEI));
  1498 +
  1499 + //Normaliza o formato de número de versão considerando dois caracteres para cada item (3.1.0 -> 030100)
  1500 + $numVersaoMudancaAtualizarSequencias = explode('.', '3.1.0');
  1501 + $numVersaoMudancaAtualizarSequencias = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersaoMudancaAtualizarSequencias);
  1502 + $numVersaoMudancaAtualizarSequencias = intval(join($numVersaoMudancaAtualizarSequencias));
  1503 +
  1504 + if($numVersaoMudancaAtualizarSequencias >= $numVersaoAtualSEI){
  1505 + //Procedimento de atualização de sequências compatível com SEI 3.1.X
  1506 + $objScriptRN = new ScriptRN();
  1507 + $objScriptRN->atualizarSequencias();
  1508 + } else {
  1509 + //Procedimento de atualização de sequências compatível com SEI 3.0.X
  1510 + $objVersaoRN = new VersaoRN();
  1511 + $objVersaoRN->atualizarSequencias();
  1512 + }
  1513 +
1487 1514  
1488 1515 //Altera o parâmetro da versão de banco
1489 1516 $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance());
... ... @@ -1492,4 +1519,16 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
1492 1519 $objInfraParametroDTO->setStrValor('1.1.17');
1493 1520 $objInfraParametroBD->alterar($objInfraParametroDTO);
1494 1521 }
  1522 +
  1523 +
  1524 + /* Contêm atualizações da versao 1.2.0 do módulo */
  1525 + protected function instalarV1200()
  1526 + {
  1527 + //altera o parâmetro da versão de banco
  1528 + $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance());
  1529 + $objInfraParametroDTO = new InfraParametroDTO();
  1530 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
  1531 + $objInfraParametroDTO->setStrValor('1.2.0');
  1532 + $objInfraParametroBD->alterar($objInfraParametroDTO);
  1533 + }
1495 1534 }
... ...
sip_atualizar_versao_modulo_pen.php
... ... @@ -9,9 +9,10 @@ set_include_path(implode(PATH_SEPARATOR, array(
9 9  
10 10 class PenAtualizarSipRN extends InfraRN {
11 11  
12   - protected $versaoMinRequirida = '1.30.0';
13 12 const PARAMETRO_VERSAO_MODULO_ANTIGO = 'PEN_VERSAO_MODULO_SIP';
14 13 const PARAMETRO_VERSAO_MODULO = 'VERSAO_MODULO_PEN';
  14 +
  15 + protected $versaoMinRequirida = '1.30.0';
15 16 private $arrRecurso = array();
16 17 private $arrMenu = array();
17 18  
... ... @@ -99,6 +100,7 @@ class PenAtualizarSipRN extends InfraRN {
99 100 case '1.1.14': $this->instalarV1115();
100 101 case '1.1.15': $this->instalarV1116();
101 102 case '1.1.16': $this->instalarV1117();
  103 + case '1.1.17': $this->instalarV1200();
102 104  
103 105 break;
104 106 default:
... ... @@ -118,6 +120,7 @@ class PenAtualizarSipRN extends InfraRN {
118 120 }
119 121 }
120 122  
  123 +
121 124 /**
122 125 * Finaliza o script informando o tempo de execução.
123 126 *
... ... @@ -1117,6 +1120,21 @@ class PenAtualizarSipRN extends InfraRN {
1117 1120 $objInfraParametroDTO->setStrValor('1.1.17');
1118 1121 $objInfraParametroBD->alterar($objInfraParametroDTO);
1119 1122 }
  1123 +
  1124 + /**
  1125 + * Instala/Atualiza os módulo PEN para versão 1.2.0
  1126 + */
  1127 + protected function instalarV1200()
  1128 + {
  1129 + //Corrigir a versão do módulo no banco de dados
  1130 + $objInfraParametroDTO = new InfraParametroDTO();
  1131 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
  1132 + $objInfraParametroDTO->retTodos();
  1133 + $objInfraParametroBD = new InfraParametroBD(BancoSip::getInstance());
  1134 + $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
  1135 + $objInfraParametroDTO->setStrValor('1.2.0');
  1136 + $objInfraParametroBD->alterar($objInfraParametroDTO);
  1137 + }
1120 1138 }
1121 1139  
1122 1140 try {
... ...