Commit a7dc4fc28a64c7dc0582c1427b6385ef933dfe51
1 parent
22361c95
Exists in
master
and in
15 other branches
[Fixed #51] Incompatibilidade do módulo com a versão SEI 3.1
Showing
5 changed files
with
85 additions
and
19 deletions
Show diff stats
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 { | ... | ... |