Commit 0a2e3ec9bc219fc086f16403723290bd2d261188

Authored by Guilherme Andrade Del Cantoni
1 parent 03e7958d

Ajuste em script para considerar recursos corretos no perfil Administrador

rn/PenAtualizarSeiRN.php
... ... @@ -37,7 +37,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
37 37  
38 38 // Aplicação de scripts de atualização de forma incremental
39 39 // Ausência de [break;] proposital para realizar a atualização incremental de versões
40   - $strVersaoModuloPen = $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO_ANTIGO, false);
  40 + $strVersaoModuloPen = $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO, false) ?: $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO_ANTIGO, false);
41 41 switch ($strVersaoModuloPen) {
42 42 case '': $this->instalarV100(); // Nenhuma versão instalada
43 43 case '1.0.0': $this->instalarV101();
... ... @@ -1097,10 +1097,12 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
1097 1097 /* Contem atualizações da versao 1.1.1 do módulo */
1098 1098 protected function instalarV111() {
1099 1099  
  1100 + //Ajuste em nome da variável de versão do módulo VERSAO_MODULO_PEN
  1101 + BancoSEI::getInstance()->executarSql("update infra_parametro set nome = '" . self::PARAMETRO_VERSAO_MODULO . "' where nome = '" . self::PARAMETRO_VERSAO_MODULO_ANTIGO . "'");
1100 1102  
1101 1103 /* altera o parâmetro da versão de banco */
1102 1104 $objInfraParametroDTO = new InfraParametroDTO();
1103   - $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
  1105 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
1104 1106 $objInfraParametroDTO->retTodos();
1105 1107 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
1106 1108 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
... ...
sip_atualizar_versao_modulo_pen.php
... ... @@ -7,479 +7,20 @@ set_include_path(implode(PATH_SEPARATOR, array(
7 7 )));
8 8  
9 9  
10   -/**
11   - * Mapeamento dos metadados sobre a estrutura do banco de dados
12   - *
13   - * @author Join Tecnologia
14   - */
15   -class PenMetaBD extends InfraMetaBD {
16   -
17   - const NNULLO = 'NOT NULL';
18   - const SNULLO = 'NULL';
19   -
20   - /**
21   - *
22   - * @return string
23   - */
24   - public function adicionarValorPadraoParaColuna($strNomeTabela, $strNomeColuna, $strValorPadrao, $bolRetornarQuery = false){
25   -
26   - $objInfraBanco = $this->getObjInfraIBanco();
27   -
28   - $strTableDrive = get_parent_class($objInfraBanco);
29   - $strQuery = '';
30   -
31   - switch($strTableDrive) {
32   -
33   - case 'InfraMySqli':
34   - $strQuery = sprintf("ALTER TABLE `%s` ALTER COLUMN `%s` SET DEFAULT '%s'", $strNomeTabela, $strNomeColuna, $strValorPadrao);
35   - break;
36   -
37   - case 'InfraSqlServer':
38   - $strQuery = sprintf("ALTER TABLE [%s] ADD DEFAULT('%s') FOR [%s]", $strNomeTabela, $strValorPadrao, $strNomeColuna);
39   -
40   - case 'InfraOracle':
41   - break;
42   - }
43   -
44   - if($bolRetornarQuery === false) {
45   -
46   - $objInfraBanco->executarSql($strQuery);
47   - }
48   - else {
49   -
50   - return $strQuery;
51   - }
52   - }
53   -
54   - /**
55   - * Verifica se o usuário do drive de conexão possui permissão para criar/ remover
56   - * estruturas
57   - *
58   - * @return PenMetaBD
59   - */
60   - public function isDriverPermissao(){
61   -
62   - $objInfraBanco = $this->getObjInfraIBanco();
63   -
64   - if(count($this->obterTabelas('sei_teste'))==0){
65   - $objInfraBanco->executarSql('CREATE TABLE sei_teste (id '.$this->tipoNumero().' NULL)');
66   - }
67   -
68   - $objInfraBanco->executarSql('DROP TABLE sei_teste');
69   -
70   - return $this;
71   - }
72   -
73   - /**
74   - * Verifica se o banco do SEI é suportador pelo atualizador
75   - *
76   - * @throws InfraException
77   - * @return PenMetaBD
78   - */
79   - public function isDriverSuportado(){
80   -
81   - $strTableDrive = get_parent_class($this->getObjInfraIBanco());
82   -
83   - switch($strTableDrive) {
84   -
85   - case 'InfraMySqli':
86   - // Fix para bug de MySQL versão inferior ao 5.5 o default engine
87   - // é MyISAM e não tem suporte a FOREING KEYS
88   - $version = $this->getObjInfraIBanco()->consultarSql('SELECT VERSION() as versao');
89   - $version = $version[0]['versao'];
90   - $arrVersion = explode('.', $version);
91   -
92   - if($arrVersion[0].$arrVersion[1] < 56){
93   - $this->getObjInfraIBanco()->executarSql('@SET STORAGE_ENGINE=InnoDB');
94   - }
95   - case 'InfraSqlServer':
96   - case 'InfraOracle':
97   - break;
98   -
99   - default:
100   - throw new InfraException('BANCO DE DADOS NAO SUPORTADO: ' . $strTableDrive);
101   -
102   - }
103   -
104   - return $this;
105   - }
106   -
107   - /**
108   - * Verifica se a versão sistema é compativel com a versão do módulo PEN
109   - *
110   - * @throws InfraException
111   - * @return PenMetaBD
112   - */
113   - public function isVersaoSuportada($strRegexVersaoSistema, $strVerMinRequirida){
114   -
115   - $numVersaoRequerida = intval(preg_replace('/\D+/', '', $strVerMinRequirida));
116   - $numVersaoSistema = intval(preg_replace('/\D+/', '', $strRegexVersaoSistema));
117   -
118   - if($numVersaoRequerida > $numVersaoSistema){
119   - throw new InfraException('VERSAO DO FRAMEWORK PHP INCOMPATIVEL (VERSAO ATUAL '.$strRegexVersaoSistema.', VERSAO REQUERIDA '.$strVerMinRequirida.')');
120   - }
121   -
122   - return $this;
123   - }
124   -
125   - /**
126   - * Apaga a chave primária da tabela
127   - *
128   - * @throws InfraException
129   - * @return PenMetaBD
130   - */
131   - public function removerChavePrimaria($strNomeTabela, $strNomeChave){
132   -
133   - if($this->isChaveExiste($strNomeTabela, $strNomeChave)) {
134   -
135   - $strTableDrive = get_parent_class($this->getObjInfraIBanco());
  10 +class PenAtualizarSipRN extends InfraRN {
136 11  
137   - switch($strTableDrive) {
138   -
139   - case 'InfraMySqli':
140   - $this->getObjInfraIBanco()->executarSql('ALTER TABLE '.$strNomeTabela.' DROP PRIMARY KEY');
141   - break;
142   -
143   - case 'InfraSqlServer':
144   - $this->getObjInfraIBanco()->executarSql('ALTER TABLE '.$strNomeTabela.' DROP CONSTRAINT '.$strNomeChave);
145   - break;
146   -
147   - case 'InfraOracle':
148   - break;
149   - }
150   - }
151   - return $this;
152   - }
153   -
154   - public function isChaveExiste($strNomeTabela = '', $strNomeChave = ''){
155   -
156   - $objInfraBanco = $this->getObjInfraIBanco();
157   - $strTableDrive = get_parent_class($objInfraBanco);
158   -
159   - switch($strTableDrive) {
160   -
161   - case 'InfraMySqli':
162   - $strSql = " SELECT COUNT(CONSTRAINT_NAME) AS EXISTE
163   - FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
164   - WHERE CONSTRAINT_SCHEMA = '".$objInfraBanco->getBanco()."'
165   - AND TABLE_NAME = '".$strNomeTabela."'
166   - AND CONSTRAINT_NAME = '".$strNomeChave."'";
167   - break;
168   -
169   - case 'InfraSqlServer':
170   -
171   - $strSql = " SELECT COUNT(CONSTRAINT_NAME) AS EXISTE
172   - FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
173   - WHERE CONSTRAINT_CATALOG = '".$objInfraBanco->getBanco()."'
174   - AND TABLE_NAME = '".$strNomeTabela."'
175   - AND CONSTRAINT_NAME = '".$strNomeChave."'";
176   - break;
177   -
178   - case 'InfraOracle':
179   - $strSql = "SELECT 0 AS EXISTE";
180   - break;
181   - }
182   -
183   - $strSql = preg_replace('/\s+/', ' ', $strSql);
184   - $arrDados = $objInfraBanco->consultarSql($strSql);
185   -
186   - return (intval($arrDados[0]['EXISTE']) > 0) ? true : false;
187   - }
188   -
189   - public function adicionarChaveUnica($strNomeTabela = '', $arrNomeChave = array()){
190   -
191   - $this->getObjInfraIBanco()
192   - ->executarSql('ALTER TABLE '.$strNomeTabela.' ADD CONSTRAINT UK_'.$strNomeTabela.' UNIQUE('.implode(', ', $arrNomeChave).')');
193   - }
194   -
195   - public function renomearTabela($strNomeTabelaAtual, $strNomeTabelaNovo){
196   -
197   - if($this->isTabelaExiste($strNomeTabelaAtual)) {
198   -
199   - $objInfraBanco = $this->getObjInfraIBanco();
200   -
201   - $strTableDrive = get_parent_class($objInfraBanco);
202   - $strQuery = '';
203   -
204   - switch ($strTableDrive) {
205   -
206   - case 'InfraMySqli':
207   - $strQuery = sprintf("ALTER TABLE `%s` RENAME TO `%s`", $strNomeTabelaAtual, $strNomeTabelaNovo);
208   - break;
209   -
210   - case 'InfraSqlServer':
211   - $strQuery = sprintf("sp_rename '%s', '%s'", $strNomeTabelaAtual, $strNomeTabelaNovo);
212   -
213   - case 'InfraOracle':
214   - $strQuery = sprintf("RENAME TABLE %s TO %s", $strNomeTabelaAtual, $strNomeTabelaNovo);
215   - break;
216   - }
217   -
218   - $objInfraBanco->executarSql($strQuery);
219   - }
220   - }
221   -
222   -
223   - /**
224   - * Verifica se uma tabela existe no banco
225   - *
226   - * @throws InfraException
227   - * @return bool
228   - */
229   - public function isTabelaExiste($strNomeTabela = ''){
230   -
231   - $objInfraBanco = $this->getObjInfraIBanco();
232   - $strTableDrive = get_parent_class($objInfraBanco);
233   -
234   - switch($strTableDrive) {
235   -
236   - case 'InfraMySqli':
237   - $strSql = "SELECT COUNT(TABLE_NAME) AS EXISTE
238   - FROM INFORMATION_SCHEMA.TABLES
239   - WHERE TABLE_SCHEMA = '".$objInfraBanco->getBanco()."'
240   - AND TABLE_NAME = '".$strNomeTabela."'";
241   - break;
242   -
243   - case 'InfraSqlServer':
244   -
245   - $strSql = "SELECT COUNT(TABLE_NAME) AS EXISTE
246   - FROM INFORMATION_SCHEMA.TABLES
247   - WHERE TABLE_CATALOG = '".$objInfraBanco->getBanco()."'
248   - AND TABLE_NAME = '".$strNomeTabela."'";
249   - break;
250   -
251   - case 'InfraOracle':
252   - $strSql = "SELECT 0 AS EXISTE";
253   - break;
254   - }
255   -
256   - $strSql = preg_replace('/\s+/', ' ', $strSql);
257   - $arrDados = $objInfraBanco->consultarSql($strSql);
258   -
259   - return (intval($arrDados[0]['EXISTE']) > 0) ? true : false;
260   - }
261   -
262   - public function isColuna($strNomeTabela = '', $strNomeColuna = ''){
263   -
264   - $objInfraBanco = $this->getObjInfraIBanco();
265   - $strTableDrive = get_parent_class($objInfraBanco);
266   -
267   - switch($strTableDrive) {
268   -
269   - case 'InfraMySqli':
270   - $strSql = "SELECT COUNT(TABLE_NAME) AS EXISTE
271   - FROM INFORMATION_SCHEMA.COLUMNS
272   - WHERE TABLE_SCHEMA = '".$objInfraBanco->getBanco()."'
273   - AND TABLE_NAME = '".$strNomeTabela."'
274   - AND COLUMN_NAME = '".$strNomeColuna."'";
275   - break;
276   -
277   - case 'InfraSqlServer':
278   -
279   - $strSql = "SELECT COUNT(COLUMN_NAME) AS EXISTE
280   - FROM INFORMATION_SCHEMA.COLUMNS
281   - WHERE TABLE_CATALOG = '".$objInfraBanco->getBanco()."'
282   - AND TABLE_NAME = '".$strNomeTabela."'
283   - AND COLUMN_NAME = '".$strNomeColuna."'";
284   - break;
285   -
286   - case 'InfraOracle':
287   - $strSql = "SELECT 0 AS EXISTE";
288   - break;
289   - }
290   -
291   - $strSql = preg_replace('/\s+/', ' ', $strSql);
292   - $arrDados = $objInfraBanco->consultarSql($strSql);
293   -
294   - return (intval($arrDados[0]['EXISTE']) > 0) ? true : false;
295   -
296   -
297   - }
298   -
299   - /**
300   - * Cria a estrutura da tabela no padrão ANSI
301   - *
302   - * @throws InfraException
303   - * @return PenMetaBD
304   - */
305   - public function criarTabela($arrSchema = array()){
306   -
307   - $strNomeTabela = $arrSchema['tabela'];
308   -
309   -
310   - if($this->isTabelaExiste($strNomeTabela)) {
311   - return $this;
312   - }
313   -
314   - $objInfraBanco = $this->getObjInfraIBanco();
315   - $arrColunas = array();
316   - $arrStrQuery = array();
317   -
318   - foreach($arrSchema['cols'] as $strNomeColuna => $arrColunaConfig) {
319   -
320   - list($strTipoDado, $strValorPadrao) = $arrColunaConfig;
321   -
322   - if($strValorPadrao != self::SNULLO && $strValorPadrao != self::NNULLO) {
323   -
324   - $arrStrQuery[] = $this->adicionarValorPadraoParaColuna($strNomeTabela, $strNomeColuna, $strValorPadrao, true);
325   - $strValorPadrao = self::NNULLO;
326   - }
327   -
328   - $arrColunas[] = $strNomeColuna.' '.$strTipoDado.' '.$strValorPadrao;
329   - }
330   -
331   - $objInfraBanco->executarSql('CREATE TABLE '.$strNomeTabela.' ('.implode(', ', $arrColunas).')');
332   -
333   - if(!empty($arrSchema['pk'])) {
334   -
335   - $this->adicionarChavePrimaria($strNomeTabela, 'pk_'.$strNomeTabela, $arrSchema['pk']);
336   -
337   - if(count($arrSchema['pk']) > 1) {
338   -
339   - foreach($arrSchema['pk'] as $strPk) {
340   -
341   - $objInfraBanco->executarSql('CREATE INDEX idx_'.$strNomeTabela.'_'.$strPk.' ON '.$strNomeTabela.'('.$strPk.')');
342   - }
343   - }
344   - }
345   -
346   - if(array_key_exists('uk', $arrSchema) && !empty($arrSchema['uk'])) {
347   -
348   - $this->adicionarChaveUnica($strNomeTabela, $arrSchema['uk']);
349   - }
350   -
351   - if(!empty($arrSchema['fks'])) {
352   -
353   - foreach($arrSchema['fks'] as $strTabelaOrigem => $array) {
354   -
355   - $strNomeFK = 'fk_'.$strNomeTabela.'_'.$strTabelaOrigem;
356   - $arrCamposOrigem = (array)array_shift($array);
357   - $arrCampos = $arrCamposOrigem;
358   -
359   - if(!empty($array)) {
360   - $arrCampos = (array)array_shift($array);
361   - }
362   -
363   - $this->adicionarChaveEstrangeira($strNomeFK, $strNomeTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem);
364   - }
365   - }
366   -
367   - if(!empty($arrStrQuery)) {
368   -
369   - foreach($arrStrQuery as $strQuery) {
370   - $objInfraBanco->executarSql($strQuery);
371   - }
372   - }
373   -
374   - return $this;
375   - }
376   -
377   - /**
378   - * Apagar a estrutura da tabela no banco de dados
379   - *
380   - * @throws InfraException
381   - * @return PenMetaBD
382   - */
383   - public function removerTabela($strNomeTabela = ''){
384   -
385   - $this->getObjInfraIBanco()->executarSql('DROP TABLE '.$strNomeTabela);
386   - return $this;
387   - }
388   -
389   - public function adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem) {
390   -
391   - if(!$this->isChaveExiste($strTabela, $strNomeFK)) {
392   - parent::adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem);
393   - }
394   - return $this;
395   - }
396   -
397   - public function adicionarChavePrimaria($strTabela, $strNomePK, $arrCampos) {
398   -
399   - if(!$this->isChaveExiste($strTabela, $strNomePK)) {
400   - parent::adicionarChavePrimaria($strTabela, $strNomePK, $arrCampos);
401   - }
402   - return $this;
403   - }
404   -
405   - public function alterarColuna($strTabela, $strColuna, $strTipo, $strNull = '') {
406   - parent::alterarColuna($strTabela, $strColuna, $strTipo, $strNull);
407   - return $this;
408   - }
409   -
410   - public function excluirIndice($strTabela, $strIndex) {
411   - if($this->isChaveExiste($strTabela, $strFk)) {
412   - parent::excluirIndice($strTabela, $strIndex);
413   - }
414   - return $this;
415   - }
416   -
417   - public function excluirChaveEstrangeira($strTabela, $strFk) {
418   - if($this->isChaveExiste($strTabela, $strFk)) {
419   - parent::excluirChaveEstrangeira($strTabela, $strFk);
420   - }
421   - return $this;
422   - }
423   -}
424   -
425   -abstract class PenAtualizadorRN extends InfraRN {
426   -
427   - protected $sip_versao;
428   -
429   - /**
430   - * @var string Versão mínima requirida pelo sistema para instalação do PEN
431   - */
432   - protected $versaoMinRequirida;
433   -
434   - /**
435   - * @var InfraIBanco Instância da classe de persistência com o banco de dados
436   - */
437   - protected $objBanco;
438   -
439   - /**
440   - * @var InfraMetaBD Instância do metadata do banco de dados
441   - */
442   - protected $objMeta;
443   -
444   - /**
445   - * @var InfraDebug Instância do debuger
446   - */
447   - protected $objDebug;
448   -
449   - /**
450   - * @var integer Tempo de execução do script
451   - */
452   - protected $numSeg = 0;
453   -
454   - protected $objInfraBanco ;
455   -
456   - protected function inicializarObjInfraIBanco() {
457   -
458   - if (empty($this->objInfraBanco)) {
459   - $this->objInfraBanco = BancoSip::getInstance();
460   - $this->objInfraBanco->abrirConexao();
461   - }
462   -
463   - return $this->objInfraBanco;
464   - }
  12 + protected $versaoMinRequirida = '1.30.0';
  13 + const PARAMETRO_VERSAO_MODULO_ANTIGO = 'PEN_VERSAO_MODULO_SIP';
  14 + const PARAMETRO_VERSAO_MODULO = 'VERSAO_MODULO_PEN';
  15 + private $arrRecurso = array();
  16 + private $arrMenu = array();
465 17  
466   - /**
467   - * Inicia a conexão com o banco de dados
468   - */
469   - protected function inicializarObjMetaBanco() {
470   - if (empty($this->objMeta)) {
471   - $this->objMeta = new PenMetaBD($this->inicializarObjInfraIBanco());
472   - }
473   - return $this->objMeta;
  18 + public function __construct(){
  19 + parent::__construct();
474 20 }
475 21  
476   - /**
477   - * Adiciona uma mensagem ao output para o usuário
478   - *
479   - * @return null
480   - */
481   - protected function logar($strMsg) {
482   - $this->objDebug->gravar($strMsg);
  22 + protected function inicializarObjInfraIBanco(){
  23 + return BancoSip::getInstance();
483 24 }
484 25  
485 26 /**
... ... @@ -489,44 +30,26 @@ abstract class PenAtualizadorRN extends InfraRN {
489 30 */
490 31 protected function inicializar($strTitulo) {
491 32  
492   - $this->numSeg = InfraUtil::verificarTempoProcessamento();
493   -
494   - $this->logar($strTitulo);
495   - }
  33 + session_start();
  34 + SessaoSip::getInstance(false);
496 35  
497   - /**
498   - * Construtor
499   - *
500   - * @param array $arrArgs Argumentos enviados pelo script
501   - */
502   - public function __construct() {
503   -
504   - parent::__construct();
505 36 ini_set('max_execution_time', '0');
506 37 ini_set('memory_limit', '-1');
507 38 @ini_set('zlib.output_compression', '0');
508 39 @ini_set('implicit_flush', '1');
509 40 ob_implicit_flush();
510 41  
511   - $this->inicializarObjInfraIBanco();
512   - $this->inicializarObjMetaBanco();
513   -
514 42 $this->objDebug = InfraDebug::getInstance();
515 43 $this->objDebug->setBolLigado(true);
516 44 $this->objDebug->setBolDebugInfra(true);
517 45 $this->objDebug->setBolEcho(true);
518 46 $this->objDebug->limpar();
519   - }
520   -}
521 47  
522   -class PenAtualizarSipRN extends PenAtualizadorRN {
  48 + $this->numSeg = InfraUtil::verificarTempoProcessamento();
  49 + $this->logar($strTitulo);
  50 + }
523 51  
524   - protected $versaoMinRequirida = '1.30.0';
525   - protected $sip_versao = 'PEN_VERSAO_MODULO_SIP';
526   - private $arrRecurso = array();
527   - private $arrMenu = array();
528   -
529   - public function atualizarVersao() {
  52 + protected function atualizarVersaoConectado() {
530 53 try {
531 54 $this->inicializar('INICIANDO ATUALIZACAO DO MODULO PEN NO SIP VERSAO 1.0.0');
532 55  
... ... @@ -537,10 +60,9 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
537 60  
538 61 $this->finalizar('BANCO DE DADOS NAO SUPORTADO: ' . get_parent_class(BancoSip::getInstance()), true);
539 62 }
540   -
541   -
  63 +
542 64 //testando permissoes de criações de tabelas
543   - $objInfraMetaBD = new InfraMetaBD($this->objInfraBanco);
  65 + $objInfraMetaBD = new InfraMetaBD(BancoSip::getInstance());
544 66  
545 67 if (count($objInfraMetaBD->obterTabelas('pen_sip_teste')) == 0) {
546 68 BancoSip::getInstance()->executarSql('CREATE TABLE pen_sip_teste (id ' . $objInfraMetaBD->tipoNumero() . ' null)');
... ... @@ -548,12 +70,11 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
548 70 BancoSip::getInstance()->executarSql('DROP TABLE pen_sip_teste');
549 71  
550 72  
551   - $objInfraParametro = new InfraParametro($this->objInfraBanco);
552   -
  73 + $objInfraParametro = new InfraParametro(BancoSip::getInstance());
553 74  
554 75 // Aplicação de scripts de atualização de forma incremental
555   - // Ausência de [break;] proposital para realizar a atualização incremental de versões
556   - $strVersaoModuloPen = $objInfraParametro->getValor($this->nomeParametroModulo, false);
  76 + // Ausência de [break;] proposital para realizar a atualização incremental de versões
  77 + $strVersaoModuloPen = $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO, false) ?: $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO_ANTIGO, false);
557 78 switch ($strVersaoModuloPen) {
558 79 //case '' - Nenhuma versão instalada
559 80 case '': $this->instalarV100();
... ... @@ -580,19 +101,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
580 101 throw new InfraException('Erro atualizando VERSAO.', $e);
581 102 }
582 103 }
583   -
584   - /**
585   - * Inicia o script criando um contator interno do tempo de execução
586   - *
587   - * @return null
588   - */
589   - protected function inicializar($strTitulo) {
590   -
591   - $this->numSeg = InfraUtil::verificarTempoProcessamento();
592   -
593   - $this->logar($strTitulo);
594   - }
595   -
  104 +
596 105 /**
597 106 * Finaliza o script informando o tempo de execução.
598 107 *
... ... @@ -667,7 +176,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
667 176 }
668 177  
669 178 /**
670   - *
  179 + * Cria novo recurso no SIP
671 180 * @return int Código do Recurso gerado
672 181 */
673 182 protected function criarRecurso($strNome = '', $strDescricao = null, $numIdSistema = 0) {
... ... @@ -699,6 +208,44 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
699 208 return $objDTO->getNumIdRecurso();
700 209 }
701 210  
  211 + protected function renomearRecurso($numIdSistema, $strNomeAtual, $strNomeNovo){
  212 +
  213 + $objRecursoDTO = new RecursoDTO();
  214 + $objRecursoDTO->setBolExclusaoLogica(false);
  215 + $objRecursoDTO->retNumIdRecurso();
  216 + $objRecursoDTO->retStrCaminho();
  217 + $objRecursoDTO->setNumIdSistema($numIdSistema);
  218 + $objRecursoDTO->setStrNome($strNomeAtual);
  219 +
  220 + $objRecursoRN = new RecursoRN();
  221 + $objRecursoDTO = $objRecursoRN->consultar($objRecursoDTO);
  222 +
  223 + if ($objRecursoDTO!=null){
  224 + $objRecursoDTO->setStrNome($strNomeNovo);
  225 + $objRecursoDTO->setStrCaminho(str_replace($strNomeAtual,$strNomeNovo,$objRecursoDTO->getStrCaminho()));
  226 + $objRecursoRN->alterar($objRecursoDTO);
  227 + }
  228 + }
  229 +
  230 + protected function consultarRecurso($numIdSistema, $strNomeRecurso){
  231 +
  232 + $numIdRecurso = null;
  233 + $objRecursoDTO = new RecursoDTO();
  234 + $objRecursoDTO->setBolExclusaoLogica(false);
  235 + $objRecursoDTO->setNumIdSistema($numIdSistema);
  236 + $objRecursoDTO->setStrNome($strNomeRecurso);
  237 + $objRecursoDTO->retNumIdRecurso();
  238 +
  239 + $objRecursoRN = new RecursoRN();
  240 + $objRecursoDTO = $objRecursoRN->consultar($objRecursoDTO);
  241 +
  242 + if ($objRecursoDTO == null){
  243 + throw new InfraException("Recurso com nome {$strNomeRecurso} não pode ser localizado.");
  244 + }
  245 +
  246 + return $objRecursoDTO->getNumIdRecurso();
  247 + }
  248 +
702 249 /**
703 250 * Cria um menu
704 251 *
... ... @@ -714,7 +261,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
714 261 $objDTO->setNumMaxRegistrosRetorno(1);
715 262 $objDTO->retNumIdItemMenu();
716 263  
717   - $objBD = new ItemMenuBD($this->objInfraBanco);
  264 + $objBD = new ItemMenuBD(BancoSip::getInstance());
718 265 $objDTO = $objBD->consultar($objDTO);
719 266  
720 267 if (empty($objDTO)) {
... ... @@ -748,7 +295,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
748 295 if (!empty($this->arrRecurso)) {
749 296  
750 297 $objDTO = new RelPerfilRecursoDTO();
751   - $objBD = new RelPerfilRecursoBD($this->objInfraBanco);
  298 + $objBD = new RelPerfilRecursoBD(BancoSip::getInstance());
752 299  
753 300 foreach ($this->arrRecurso as $numIdRecurso) {
754 301  
... ... @@ -768,7 +315,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
768 315 if (!empty($this->arrMenu)) {
769 316  
770 317 $objDTO = new RelPerfilItemMenuDTO();
771   - $objBD = new RelPerfilItemMenuBD($this->objInfraBanco);
  318 + $objBD = new RelPerfilItemMenuBD(BancoSip::getInstance());
772 319  
773 320 foreach ($this->arrMenu as $array) {
774 321  
... ... @@ -789,7 +336,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
789 336  
790 337 public function atribuirPerfil($numIdSistema) {
791 338 $objDTO = new PerfilDTO();
792   - $objBD = new PerfilBD($this->objInfraBanco);
  339 + $objBD = new PerfilBD(BancoSip::getInstance());
793 340 $objRN = $this;
794 341  
795 342 // Vincula a um perfil os recursos e menus adicionados nos métodos criarMenu e criarReturso
... ... @@ -840,7 +387,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
840 387 $objItemMenuDTO->setNumMaxRegistrosRetorno(1);
841 388 $objItemMenuDTO->retNumIdItemMenu();
842 389  
843   - $objItemMenuBD = new ItemMenuBD($this->objInfraBanco);
  390 + $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance());
844 391 $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO);
845 392  
846 393 if (empty($objItemMenuDTO)) {
... ... @@ -878,7 +425,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
878 425 $this->atribuirPerfil($numIdSistema);
879 426  
880 427 // ---------- antigo método (instalarV003R003S003IW001) ---------- //
881   - $objBD = new ItemMenuBD($this->objInfraBanco);
  428 + $objBD = new ItemMenuBD(BancoSip::getInstance());
882 429  
883 430 // Achar o root
884 431 $numIdSistema = $this->getNumIdSistema('SEI');
... ... @@ -939,7 +486,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
939 486 }
940 487  
941 488 $objInfraParametroDTO = new InfraParametroDTO();
942   - $objInfraParametroDTO->setStrNome($this->sip_versao);
  489 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
943 490 $objInfraParametroDTO->setStrValor('1.0.0');
944 491  
945 492 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
... ... @@ -1054,7 +601,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1054 601  
1055 602 /* altera o parâmetro da versão de banco */
1056 603 $objInfraParametroDTO = new InfraParametroDTO();
1057   - $objInfraParametroDTO->setStrNome($this->sip_versao);
  604 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
1058 605 $objInfraParametroDTO->retTodos();
1059 606  
1060 607 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
... ... @@ -1112,7 +659,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1112 659  
1113 660 /* altera o parâmetro da versão de banco */
1114 661 $objInfraParametroDTO = new InfraParametroDTO();
1115   - $objInfraParametroDTO->setStrNome($this->sip_versao);
  662 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
1116 663 $objInfraParametroDTO->retTodos();
1117 664  
1118 665 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
... ... @@ -1241,7 +788,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1241 788  
1242 789 /* altera o parâmetro da versão de banco */
1243 790 $objInfraParametroDTO = new InfraParametroDTO();
1244   - $objInfraParametroDTO->setStrNome($this->sip_versao);
  791 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
1245 792 $objInfraParametroDTO->retTodos();
1246 793 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
1247 794 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
... ... @@ -1320,7 +867,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1320 867  
1321 868 /* altera o parâmetro da versão de banco */
1322 869 $objInfraParametroDTO = new InfraParametroDTO();
1323   - $objInfraParametroDTO->setStrNome($this->sip_versao);
  870 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
1324 871 $objInfraParametroDTO->retTodos();
1325 872 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
1326 873 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
... ... @@ -1332,14 +879,53 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1332 879 * Instala/Atualiza os módulo PEN para versão 1.1.1
1333 880 */
1334 881 protected function instalarV111() {
1335   -
  882 + $numIdSistema = $this->getNumIdSistema('SEI');
  883 +
1336 884 //Ajuste em nome da variável de versão do módulo VERSAO_MODULO_PEN
1337   - //...
  885 + BancoSIP::getInstance()->executarSql("update infra_parametro set nome = '" . self::PARAMETRO_VERSAO_MODULO . "' where nome = '" . self::PARAMETRO_VERSAO_MODULO_ANTIGO . "'");
  886 +
  887 + //Adequação em nome de recursos do módulo
  888 + $this->renomearRecurso($numIdSistema, 'apensados_selecionar_expedir_procedimento', 'pen_apensados_selecionar_expedir_procedimento');
  889 +
  890 + //Atualização com recursos não adicionados automaticamente em versões anteriores
  891 + $this->arrRecurso = array_merge($this->arrRecurso, array(
  892 + $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_envio_alterar"),
  893 + $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_envio_excluir"),
  894 + $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_alterar"),
  895 + $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_excluir"),
  896 + $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_visualizar"),
  897 + $this->consultarRecurso($numIdSistema, "pen_parametros_configuracao_alterar")
  898 + ));
  899 +
  900 + $this->atribuirPerfil($numIdSistema);
1338 901  
  902 + $objPerfilRN = new PerfilRN();
  903 + $objPerfilDTO = new PerfilDTO();
  904 + $objPerfilDTO->retNumIdPerfil();
  905 + $objPerfilDTO->setNumIdSistema($numIdSistema);
  906 + $objPerfilDTO->setStrNome('Administrador');
  907 + $objPerfilDTO = $objPerfilRN->consultar($objPerfilDTO);
  908 + if ($objPerfilDTO == null){
  909 + throw new InfraException('Perfil Administrador do sistema SEI não encontrado.');
  910 + }
  911 +
  912 + $numIdPerfilSeiAdministrador = $objPerfilDTO->getNumIdPerfil();
  913 +
  914 + $objRelPerfilRecursoDTO = new RelPerfilRecursoDTO();
  915 + $objRelPerfilRecursoDTO->retTodos();
  916 + $objRelPerfilRecursoDTO->setNumIdSistema($numIdSistema);
  917 + $objRelPerfilRecursoDTO->setNumIdPerfil($numIdPerfilSeiAdministrador);
  918 + $arrRecursosRemoverAdministrador = array(
  919 + $this->consultarRecurso($numIdSistema, "pen_procedimento_expedido_listar"),
  920 + $this->consultarRecurso($numIdSistema, "pen_procedimento_expedir"),
  921 + );
  922 + $objRelPerfilRecursoDTO->setNumIdRecurso($arrRecursosRemoverAdministrador, InfraDTO::$OPER_IN);
  923 + $objRelPerfilRecursoRN = new RelPerfilRecursoRN();
  924 + $objRelPerfilRecursoRN->excluir($objRelPerfilRecursoRN->listar($objRelPerfilRecursoDTO));
1339 925  
1340 926 /* Corrigir a versão do módulo no banco de dados */
1341 927 $objInfraParametroDTO = new InfraParametroDTO();
1342   - $objInfraParametroDTO->setStrNome($this->sip_versao);
  928 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
1343 929 $objInfraParametroDTO->retTodos();
1344 930 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
1345 931 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
... ...