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,7 +37,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
37 37
38 // Aplicação de scripts de atualização de forma incremental 38 // Aplicação de scripts de atualização de forma incremental
39 // Ausência de [break;] proposital para realizar a atualização incremental de versões 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 switch ($strVersaoModuloPen) { 41 switch ($strVersaoModuloPen) {
42 case '': $this->instalarV100(); // Nenhuma versão instalada 42 case '': $this->instalarV100(); // Nenhuma versão instalada
43 case '1.0.0': $this->instalarV101(); 43 case '1.0.0': $this->instalarV101();
@@ -1097,10 +1097,12 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { @@ -1097,10 +1097,12 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
1097 /* Contem atualizações da versao 1.1.1 do módulo */ 1097 /* Contem atualizações da versao 1.1.1 do módulo */
1098 protected function instalarV111() { 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 /* altera o parâmetro da versão de banco */ 1103 /* altera o parâmetro da versão de banco */
1102 $objInfraParametroDTO = new InfraParametroDTO(); 1104 $objInfraParametroDTO = new InfraParametroDTO();
1103 - $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO); 1105 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
1104 $objInfraParametroDTO->retTodos(); 1106 $objInfraParametroDTO->retTodos();
1105 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); 1107 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
1106 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); 1108 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
sip_atualizar_versao_modulo_pen.php
@@ -7,479 +7,20 @@ set_include_path(implode(PATH_SEPARATOR, array( @@ -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,44 +30,26 @@ abstract class PenAtualizadorRN extends InfraRN {
489 */ 30 */
490 protected function inicializar($strTitulo) { 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 ini_set('max_execution_time', '0'); 36 ini_set('max_execution_time', '0');
506 ini_set('memory_limit', '-1'); 37 ini_set('memory_limit', '-1');
507 @ini_set('zlib.output_compression', '0'); 38 @ini_set('zlib.output_compression', '0');
508 @ini_set('implicit_flush', '1'); 39 @ini_set('implicit_flush', '1');
509 ob_implicit_flush(); 40 ob_implicit_flush();
510 41
511 - $this->inicializarObjInfraIBanco();  
512 - $this->inicializarObjMetaBanco();  
513 -  
514 $this->objDebug = InfraDebug::getInstance(); 42 $this->objDebug = InfraDebug::getInstance();
515 $this->objDebug->setBolLigado(true); 43 $this->objDebug->setBolLigado(true);
516 $this->objDebug->setBolDebugInfra(true); 44 $this->objDebug->setBolDebugInfra(true);
517 $this->objDebug->setBolEcho(true); 45 $this->objDebug->setBolEcho(true);
518 $this->objDebug->limpar(); 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 try { 53 try {
531 $this->inicializar('INICIANDO ATUALIZACAO DO MODULO PEN NO SIP VERSAO 1.0.0'); 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,10 +60,9 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
537 60
538 $this->finalizar('BANCO DE DADOS NAO SUPORTADO: ' . get_parent_class(BancoSip::getInstance()), true); 61 $this->finalizar('BANCO DE DADOS NAO SUPORTADO: ' . get_parent_class(BancoSip::getInstance()), true);
539 } 62 }
540 -  
541 - 63 +
542 //testando permissoes de criações de tabelas 64 //testando permissoes de criações de tabelas
543 - $objInfraMetaBD = new InfraMetaBD($this->objInfraBanco); 65 + $objInfraMetaBD = new InfraMetaBD(BancoSip::getInstance());
544 66
545 if (count($objInfraMetaBD->obterTabelas('pen_sip_teste')) == 0) { 67 if (count($objInfraMetaBD->obterTabelas('pen_sip_teste')) == 0) {
546 BancoSip::getInstance()->executarSql('CREATE TABLE pen_sip_teste (id ' . $objInfraMetaBD->tipoNumero() . ' null)'); 68 BancoSip::getInstance()->executarSql('CREATE TABLE pen_sip_teste (id ' . $objInfraMetaBD->tipoNumero() . ' null)');
@@ -548,12 +70,11 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -548,12 +70,11 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
548 BancoSip::getInstance()->executarSql('DROP TABLE pen_sip_teste'); 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 // Aplicação de scripts de atualização de forma incremental 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 switch ($strVersaoModuloPen) { 78 switch ($strVersaoModuloPen) {
558 //case '' - Nenhuma versão instalada 79 //case '' - Nenhuma versão instalada
559 case '': $this->instalarV100(); 80 case '': $this->instalarV100();
@@ -580,19 +101,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -580,19 +101,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
580 throw new InfraException('Erro atualizando VERSAO.', $e); 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 * Finaliza o script informando o tempo de execução. 106 * Finaliza o script informando o tempo de execução.
598 * 107 *
@@ -667,7 +176,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -667,7 +176,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
667 } 176 }
668 177
669 /** 178 /**
670 - * 179 + * Cria novo recurso no SIP
671 * @return int Código do Recurso gerado 180 * @return int Código do Recurso gerado
672 */ 181 */
673 protected function criarRecurso($strNome = '', $strDescricao = null, $numIdSistema = 0) { 182 protected function criarRecurso($strNome = '', $strDescricao = null, $numIdSistema = 0) {
@@ -699,6 +208,44 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -699,6 +208,44 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
699 return $objDTO->getNumIdRecurso(); 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 * Cria um menu 250 * Cria um menu
704 * 251 *
@@ -714,7 +261,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -714,7 +261,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
714 $objDTO->setNumMaxRegistrosRetorno(1); 261 $objDTO->setNumMaxRegistrosRetorno(1);
715 $objDTO->retNumIdItemMenu(); 262 $objDTO->retNumIdItemMenu();
716 263
717 - $objBD = new ItemMenuBD($this->objInfraBanco); 264 + $objBD = new ItemMenuBD(BancoSip::getInstance());
718 $objDTO = $objBD->consultar($objDTO); 265 $objDTO = $objBD->consultar($objDTO);
719 266
720 if (empty($objDTO)) { 267 if (empty($objDTO)) {
@@ -748,7 +295,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -748,7 +295,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
748 if (!empty($this->arrRecurso)) { 295 if (!empty($this->arrRecurso)) {
749 296
750 $objDTO = new RelPerfilRecursoDTO(); 297 $objDTO = new RelPerfilRecursoDTO();
751 - $objBD = new RelPerfilRecursoBD($this->objInfraBanco); 298 + $objBD = new RelPerfilRecursoBD(BancoSip::getInstance());
752 299
753 foreach ($this->arrRecurso as $numIdRecurso) { 300 foreach ($this->arrRecurso as $numIdRecurso) {
754 301
@@ -768,7 +315,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -768,7 +315,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
768 if (!empty($this->arrMenu)) { 315 if (!empty($this->arrMenu)) {
769 316
770 $objDTO = new RelPerfilItemMenuDTO(); 317 $objDTO = new RelPerfilItemMenuDTO();
771 - $objBD = new RelPerfilItemMenuBD($this->objInfraBanco); 318 + $objBD = new RelPerfilItemMenuBD(BancoSip::getInstance());
772 319
773 foreach ($this->arrMenu as $array) { 320 foreach ($this->arrMenu as $array) {
774 321
@@ -789,7 +336,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -789,7 +336,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
789 336
790 public function atribuirPerfil($numIdSistema) { 337 public function atribuirPerfil($numIdSistema) {
791 $objDTO = new PerfilDTO(); 338 $objDTO = new PerfilDTO();
792 - $objBD = new PerfilBD($this->objInfraBanco); 339 + $objBD = new PerfilBD(BancoSip::getInstance());
793 $objRN = $this; 340 $objRN = $this;
794 341
795 // Vincula a um perfil os recursos e menus adicionados nos métodos criarMenu e criarReturso 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,7 +387,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
840 $objItemMenuDTO->setNumMaxRegistrosRetorno(1); 387 $objItemMenuDTO->setNumMaxRegistrosRetorno(1);
841 $objItemMenuDTO->retNumIdItemMenu(); 388 $objItemMenuDTO->retNumIdItemMenu();
842 389
843 - $objItemMenuBD = new ItemMenuBD($this->objInfraBanco); 390 + $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance());
844 $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); 391 $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO);
845 392
846 if (empty($objItemMenuDTO)) { 393 if (empty($objItemMenuDTO)) {
@@ -878,7 +425,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -878,7 +425,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
878 $this->atribuirPerfil($numIdSistema); 425 $this->atribuirPerfil($numIdSistema);
879 426
880 // ---------- antigo método (instalarV003R003S003IW001) ---------- // 427 // ---------- antigo método (instalarV003R003S003IW001) ---------- //
881 - $objBD = new ItemMenuBD($this->objInfraBanco); 428 + $objBD = new ItemMenuBD(BancoSip::getInstance());
882 429
883 // Achar o root 430 // Achar o root
884 $numIdSistema = $this->getNumIdSistema('SEI'); 431 $numIdSistema = $this->getNumIdSistema('SEI');
@@ -939,7 +486,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -939,7 +486,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
939 } 486 }
940 487
941 $objInfraParametroDTO = new InfraParametroDTO(); 488 $objInfraParametroDTO = new InfraParametroDTO();
942 - $objInfraParametroDTO->setStrNome($this->sip_versao); 489 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
943 $objInfraParametroDTO->setStrValor('1.0.0'); 490 $objInfraParametroDTO->setStrValor('1.0.0');
944 491
945 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); 492 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
@@ -1054,7 +601,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -1054,7 +601,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1054 601
1055 /* altera o parâmetro da versão de banco */ 602 /* altera o parâmetro da versão de banco */
1056 $objInfraParametroDTO = new InfraParametroDTO(); 603 $objInfraParametroDTO = new InfraParametroDTO();
1057 - $objInfraParametroDTO->setStrNome($this->sip_versao); 604 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
1058 $objInfraParametroDTO->retTodos(); 605 $objInfraParametroDTO->retTodos();
1059 606
1060 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); 607 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
@@ -1112,7 +659,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -1112,7 +659,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1112 659
1113 /* altera o parâmetro da versão de banco */ 660 /* altera o parâmetro da versão de banco */
1114 $objInfraParametroDTO = new InfraParametroDTO(); 661 $objInfraParametroDTO = new InfraParametroDTO();
1115 - $objInfraParametroDTO->setStrNome($this->sip_versao); 662 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
1116 $objInfraParametroDTO->retTodos(); 663 $objInfraParametroDTO->retTodos();
1117 664
1118 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); 665 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
@@ -1241,7 +788,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -1241,7 +788,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1241 788
1242 /* altera o parâmetro da versão de banco */ 789 /* altera o parâmetro da versão de banco */
1243 $objInfraParametroDTO = new InfraParametroDTO(); 790 $objInfraParametroDTO = new InfraParametroDTO();
1244 - $objInfraParametroDTO->setStrNome($this->sip_versao); 791 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
1245 $objInfraParametroDTO->retTodos(); 792 $objInfraParametroDTO->retTodos();
1246 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); 793 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
1247 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); 794 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
@@ -1320,7 +867,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -1320,7 +867,7 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1320 867
1321 /* altera o parâmetro da versão de banco */ 868 /* altera o parâmetro da versão de banco */
1322 $objInfraParametroDTO = new InfraParametroDTO(); 869 $objInfraParametroDTO = new InfraParametroDTO();
1323 - $objInfraParametroDTO->setStrNome($this->sip_versao); 870 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO_ANTIGO);
1324 $objInfraParametroDTO->retTodos(); 871 $objInfraParametroDTO->retTodos();
1325 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); 872 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
1326 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); 873 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);
@@ -1332,14 +879,53 @@ class PenAtualizarSipRN extends PenAtualizadorRN { @@ -1332,14 +879,53 @@ class PenAtualizarSipRN extends PenAtualizadorRN {
1332 * Instala/Atualiza os módulo PEN para versão 1.1.1 879 * Instala/Atualiza os módulo PEN para versão 1.1.1
1333 */ 880 */
1334 protected function instalarV111() { 881 protected function instalarV111() {
1335 - 882 + $numIdSistema = $this->getNumIdSistema('SEI');
  883 +
1336 //Ajuste em nome da variável de versão do módulo VERSAO_MODULO_PEN 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 /* Corrigir a versão do módulo no banco de dados */ 926 /* Corrigir a versão do módulo no banco de dados */
1341 $objInfraParametroDTO = new InfraParametroDTO(); 927 $objInfraParametroDTO = new InfraParametroDTO();
1342 - $objInfraParametroDTO->setStrNome($this->sip_versao); 928 + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
1343 $objInfraParametroDTO->retTodos(); 929 $objInfraParametroDTO->retTodos();
1344 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco()); 930 $objInfraParametroBD = new InfraParametroBD($this->inicializarObjInfraIBanco());
1345 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); 931 $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO);