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,7 +2,7 @@
2 2
3 class PENIntegracao extends SeiIntegracao { 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 private static $strDiretorio; 7 private static $strDiretorio;
8 8
@@ -11,7 +11,7 @@ class PENIntegracao extends SeiIntegracao { @@ -11,7 +11,7 @@ class PENIntegracao extends SeiIntegracao {
11 } 11 }
12 12
13 public function getVersao() { 13 public function getVersao() {
14 - return '1.1.17'; 14 + return '1.2.0';
15 } 15 }
16 16
17 public function getInstituicao() { 17 public function getInstituicao() {
@@ -353,7 +353,8 @@ class PENIntegracao extends SeiIntegracao { @@ -353,7 +353,8 @@ class PENIntegracao extends SeiIntegracao {
353 return $xml; 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 $objPENIntegracao = new PENIntegracao(); 358 $objPENIntegracao = new PENIntegracao();
358 if(!in_array($strVersaoSEI, self::COMPATIBILIDADE_MODULO_SEI)) { 359 if(!in_array($strVersaoSEI, self::COMPATIBILIDADE_MODULO_SEI)) {
359 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)); 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,10 +326,10 @@ class PenMetaBD extends InfraMetaBD {
326 return $this; 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 if(!$this->isChaveExiste($strTabela, $strNomeFK)) { 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 return $this; 334 return $this;
335 } 335 }
rn/ExpedirProcedimentoRN.php
@@ -1209,8 +1209,16 @@ class ExpedirProcedimentoRN extends InfraRN { @@ -1209,8 +1209,16 @@ class ExpedirProcedimentoRN extends InfraRN {
1209 $objEditorDTO->setStrSinProcessarLinks('S'); 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 if ($numVersaoAtual >= $numVersaoCarimboObrigatorio) { 1222 if ($numVersaoAtual >= $numVersaoCarimboObrigatorio) {
1215 $objEditorDTO->setStrSinCarimboPublicacao('N'); 1223 $objEditorDTO->setStrSinCarimboPublicacao('N');
1216 } 1224 }
rn/PenAtualizarSeiRN.php
@@ -27,22 +27,24 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { @@ -27,22 +27,24 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
27 !(BancoSEI::getInstance() instanceof InfraOracle)) { 27 !(BancoSEI::getInstance() instanceof InfraOracle)) {
28 28
29 $this->finalizar('BANCO DE DADOS NAO SUPORTADO: ' . get_parent_class(BancoSEI::getInstance()), true); 29 $this->finalizar('BANCO DE DADOS NAO SUPORTADO: ' . get_parent_class(BancoSEI::getInstance()), true);
30 - } 30 + }
  31 +
  32 + PENIntegracao::validarCompatibilidadeModulo();
31 33
32 //testando permissoes de criações de tabelas 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 // Aplicação de scripts de atualização de forma incremental 44 // Aplicação de scripts de atualização de forma incremental
43 // Ausência de [break;] proposital para realizar a atualização incremental de versões 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 case '': $this->instalarV100(); // Nenhuma versão instalada 48 case '': $this->instalarV100(); // Nenhuma versão instalada
47 case '1.0.0': $this->instalarV101(); 49 case '1.0.0': $this->instalarV101();
48 case '1.0.1': $this->instalarV110(); 50 case '1.0.1': $this->instalarV110();
@@ -63,6 +65,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { @@ -63,6 +65,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
63 case '1.1.14': $this->instalarV1115(); 65 case '1.1.14': $this->instalarV1115();
64 case '1.1.15': $this->instalarV1116(); 66 case '1.1.15': $this->instalarV1116();
65 case '1.1.16': $this->instalarV1117(); 67 case '1.1.16': $this->instalarV1117();
  68 + case '1.1.17': $this->instalarV1200();
66 69
67 break; 70 break;
68 default: 71 default:
@@ -1482,8 +1485,32 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { @@ -1482,8 +1485,32 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
1482 $fnCadastrar(++$numMaxId, 'PEN_EXPEDICAO_PROCESSO_ABORTADA'); 1485 $fnCadastrar(++$numMaxId, 'PEN_EXPEDICAO_PROCESSO_ABORTADA');
1483 1486
1484 InfraDebug::getInstance()->gravar('Atualizando sequência das tabelas do sistema'); 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 //Altera o parâmetro da versão de banco 1515 //Altera o parâmetro da versão de banco
1489 $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance()); 1516 $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance());
@@ -1492,4 +1519,16 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { @@ -1492,4 +1519,16 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
1492 $objInfraParametroDTO->setStrValor('1.1.17'); 1519 $objInfraParametroDTO->setStrValor('1.1.17');
1493 $objInfraParametroBD->alterar($objInfraParametroDTO); 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 +9,10 @@ set_include_path(implode(PATH_SEPARATOR, array(
9 9
10 class PenAtualizarSipRN extends InfraRN { 10 class PenAtualizarSipRN extends InfraRN {
11 11
12 - protected $versaoMinRequirida = '1.30.0';  
13 const PARAMETRO_VERSAO_MODULO_ANTIGO = 'PEN_VERSAO_MODULO_SIP'; 12 const PARAMETRO_VERSAO_MODULO_ANTIGO = 'PEN_VERSAO_MODULO_SIP';
14 const PARAMETRO_VERSAO_MODULO = 'VERSAO_MODULO_PEN'; 13 const PARAMETRO_VERSAO_MODULO = 'VERSAO_MODULO_PEN';
  14 +
  15 + protected $versaoMinRequirida = '1.30.0';
15 private $arrRecurso = array(); 16 private $arrRecurso = array();
16 private $arrMenu = array(); 17 private $arrMenu = array();
17 18
@@ -99,6 +100,7 @@ class PenAtualizarSipRN extends InfraRN { @@ -99,6 +100,7 @@ class PenAtualizarSipRN extends InfraRN {
99 case '1.1.14': $this->instalarV1115(); 100 case '1.1.14': $this->instalarV1115();
100 case '1.1.15': $this->instalarV1116(); 101 case '1.1.15': $this->instalarV1116();
101 case '1.1.16': $this->instalarV1117(); 102 case '1.1.16': $this->instalarV1117();
  103 + case '1.1.17': $this->instalarV1200();
102 104
103 break; 105 break;
104 default: 106 default:
@@ -118,6 +120,7 @@ class PenAtualizarSipRN extends InfraRN { @@ -118,6 +120,7 @@ class PenAtualizarSipRN extends InfraRN {
118 } 120 }
119 } 121 }
120 122
  123 +
121 /** 124 /**
122 * Finaliza o script informando o tempo de execução. 125 * Finaliza o script informando o tempo de execução.
123 * 126 *
@@ -1117,6 +1120,21 @@ class PenAtualizarSipRN extends InfraRN { @@ -1117,6 +1120,21 @@ class PenAtualizarSipRN extends InfraRN {
1117 $objInfraParametroDTO->setStrValor('1.1.17'); 1120 $objInfraParametroDTO->setStrValor('1.1.17');
1118 $objInfraParametroBD->alterar($objInfraParametroDTO); 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 try { 1140 try {