Commit b81fc219ad0b800c7694e8c031664b7de73d1d9f

Authored by Eduardo Heinske
1 parent 49e40dd3

Correção no SET STORAGE ENGINE

bd/PenMetaBD.php
@@ -83,8 +83,7 @@ class PenMetaBD extends InfraMetaBD { @@ -83,8 +83,7 @@ class PenMetaBD extends InfraMetaBD {
83 $version = $this->getObjInfraIBanco()->consultarSql('SELECT VERSION() as versao'); 83 $version = $this->getObjInfraIBanco()->consultarSql('SELECT VERSION() as versao');
84 $version = $version[0]['versao']; 84 $version = $version[0]['versao'];
85 $arrVersion = explode('.', $version); 85 $arrVersion = explode('.', $version);
86 -  
87 - if($arrVersion[0].$arrVersion[1] < 57){ 86 + if($arrVersion[0].$arrVersion[1] < 56){
88 $this->getObjInfraIBanco()->executarSql('@SET STORAGE_ENGINE=InnoDB'); 87 $this->getObjInfraIBanco()->executarSql('@SET STORAGE_ENGINE=InnoDB');
89 } 88 }
90 case 'InfraSqlServer': 89 case 'InfraSqlServer':
sei_atualizar_versao_modulo_pen.php
@@ -1,70 +0,0 @@ @@ -1,70 +0,0 @@
1 -<?php  
2 -/**  
3 - * Script para atualizaçăo do sistema SEI.  
4 - *  
5 - * Modificar o "short_open_tag" para "On" no php.ini  
6 - *  
7 - * PHP 5.3.3 (cli) (built: Jul 9 2015 17:39:00)  
8 - * Copyright (c) 1997-2010 The PHP Group  
9 - * Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies  
10 - *  
11 - * @author Join Tecnologia  
12 - */  
13 -  
14 -try {  
15 -  
16 - require_once dirname(__FILE__).'/../../SEI.php';  
17 -  
18 - $objPenConsoleRN = new PenConsoleRN();  
19 - $arrArgs = $objPenConsoleRN->getTokens();  
20 -  
21 - $objAtualizarRN = new PenAtualizarSeiRN($arrArgs);  
22 - $objAtualizarRN->atualizarVersao();  
23 -  
24 - exit(0);  
25 -}  
26 -catch(InfraException $e){  
27 -  
28 - print $e->getStrDescricao().PHP_EOL;  
29 -}  
30 -catch(Exception $e) {  
31 -  
32 - print InfraException::inspecionar($e);  
33 -  
34 - try {  
35 - LogSEI::getInstance()->gravar(InfraException::inspecionar($e));  
36 - } catch (Exception $e) {  
37 -  
38 - }  
39 -  
40 - exit(1);  
41 -}  
42 -  
43 -print PHP_EOL;  
44 -  
45 -/**  
46 - # Apagar modulo PEN no SEI pelo MySQL  
47 -  
48 - SET FOREIGN_KEY_CHECKS = 0;  
49 - DROP TABLE `sei`.`pen_componente_digital`;  
50 - DROP TABLE `sei`.`pen_envio_recebimento_tramite`;  
51 - DROP TABLE `sei`.`pen_especie_documental`;  
52 - DROP TABLE `sei`.`pen_procedimento_andamento`;  
53 - DROP TABLE `sei`.`pen_procedimento_expedir_andamento`;  
54 - DROP TABLE `sei`.`pen_processo_eletronico`;  
55 - DROP TABLE `sei`.`pen_protocolo`;  
56 - DROP TABLE `sei`.`pen_receber_tramites_recusados`;  
57 - DROP TABLE `sei`.`pen_recibo_tramite`;  
58 - DROP TABLE `sei`.`pen_recibo_tramite_enviado`;  
59 - DROP TABLE `sei`.`pen_recibo_tramite_recebido`;  
60 - DROP TABLE `sei`.`pen_rel_processo_apensado`;  
61 - DROP TABLE `sei`.`pen_rel_serie_especie`;  
62 - DROP TABLE `sei`.`pen_rel_tarefa_operacao`;  
63 - DROP TABLE `sei`.`pen_rel_tipo_documento_mapeamento_recebido`;  
64 - DROP TABLE `sei`.`pen_tramite`;  
65 - DROP TABLE `sei`.`pen_tramite_pendente`;  
66 - ALTER TABLE unidade DROP COLUMN id_unidade_rh;  
67 - SET FOREIGN_KEY_CHECKS = 1;  
68 -  
69 -  
70 - */  
71 \ No newline at end of file 0 \ No newline at end of file
sip_atualizar_versao_modulo_pen.php
@@ -1,1258 +0,0 @@ @@ -1,1258 +0,0 @@
1 -<?php  
2 -require_once dirname(__FILE__).'/Sip.php';  
3 -  
4 -set_include_path(implode(PATH_SEPARATOR, array(  
5 - realpath(__DIR__ . '/../infra_php'),  
6 - get_include_path(),  
7 -)));  
8 -  
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] < 57){  
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());  
136 -  
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 - const VER_NONE = '0.0.0'; // Modulo não instalado  
428 - const VER_001 = '0.0.1';  
429 - const VER_002 = '0.0.2';  
430 - const VER_003 = '0.0.3';  
431 - const VER_004 = '0.0.4';  
432 - const VER_005 = '0.0.5';  
433 -  
434 - protected $sei_versao;  
435 -  
436 - /**  
437 - * @var string Versão mínima requirida pelo sistema para instalação do PEN  
438 - */  
439 - protected $versaoMinRequirida;  
440 -  
441 - /**  
442 - * @var InfraIBanco Instância da classe de persistência com o banco de dados  
443 - */  
444 - protected $objBanco;  
445 -  
446 - /**  
447 - * @var InfraMetaBD Instância do metadata do banco de dados  
448 - */  
449 - protected $objMeta;  
450 -  
451 - /**  
452 - * @var InfraDebug Instância do debuger  
453 - */  
454 - protected $objDebug;  
455 -  
456 - /**  
457 - * @var integer Tempo de execução do script  
458 - */  
459 - protected $numSeg = 0;  
460 -  
461 - /**  
462 - * @var array Argumentos passados por linha de comando ao script  
463 - */  
464 - protected $arrArgs = array();  
465 -  
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;  
474 - }  
475 -  
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);  
483 - }  
484 -  
485 - /**  
486 - * Inicia o script criando um contator interno do tempo de execução  
487 - *  
488 - * @return null  
489 - */  
490 - protected function inicializar($strTitulo) {  
491 -  
492 - $this->numSeg = InfraUtil::verificarTempoProcessamento();  
493 -  
494 - $this->logar($strTitulo);  
495 - }  
496 -  
497 - /**  
498 - * Finaliza o script informando o tempo de execução.  
499 - *  
500 - * @return null  
501 - */  
502 - protected function finalizar() {  
503 -  
504 - $this->logar('TEMPO TOTAL DE EXECUCAO: ' . InfraUtil::verificarTempoProcessamento($this->numSeg) . ' s');  
505 -  
506 - $this->objDebug->setBolLigado(false);  
507 - $this->objDebug->setBolDebugInfra(false);  
508 - $this->objDebug->setBolEcho(false);  
509 -  
510 - print PHP_EOL;  
511 - die();  
512 - }  
513 -  
514 - /**  
515 - * Método criado em função de um bug com a InfraRN na linha 69, onde usamos  
516 - * uma instância do banco do SIP e a versão esta no banco SEI, essa verificação  
517 - * e lançamento de uma excessão pelos bancos terem nome diferentes tava o  
518 - * atualizado  
519 - *  
520 - * @todo Migrar para classe PenMetaBD  
521 - * @return null  
522 - */  
523 - protected function setVersao($strRegexVersao, $objInfraBanco = null) {  
524 -  
525 - InfraDebug::getInstance()->gravarInfra(sprintf('[%s->%s]', get_class($this), __FUNCTION__));  
526 -  
527 -  
528 - if ($this->getVersao($objInfraBanco)) {  
529 -  
530 - $sql = sprintf("UPDATE infra_parametro SET valor = '%s' WHERE nome = '%s'", $strRegexVersao, $this->sei_versao);  
531 - } else {  
532 -  
533 - $sql = sprintf("INSERT INTO infra_parametro(nome, valor) VALUES('%s', '%s')", $this->sei_versao, $strRegexVersao);  
534 - }  
535 -  
536 - if (empty($objInfraBanco)) {  
537 -  
538 - $objInfraBanco = $this->inicializarObjInfraIBanco();  
539 - }  
540 -  
541 - $objInfraBanco->executarSql($sql);  
542 -  
543 - return $strRegexVersao;  
544 - }  
545 -  
546 - /**  
547 - * Retorna a versão atual do modulo, se já foi instalado  
548 - *  
549 - * @todo Migrar para classe PenMetaBD  
550 - * @param InfraBanco $objInfraBanco Conexão com o banco SEI ou SIP  
551 - * @return string  
552 - */  
553 - protected function getVersao($objInfraBanco = null) {  
554 -  
555 - InfraDebug::getInstance()->gravarInfra(sprintf('[%s->%s]', get_class($this), __FUNCTION__));  
556 -  
557 - $sql = sprintf("SELECT valor FROM infra_parametro WHERE nome = '%s'", $this->sei_versao);  
558 -  
559 - if (empty($objInfraBanco)) {  
560 -  
561 - $objInfraBanco = $this->inicializarObjInfraIBanco();  
562 - }  
563 -  
564 - $arrResultado = $objInfraBanco->consultarSql($sql);  
565 -  
566 - if (empty($arrResultado)) {  
567 - return null;  
568 - }  
569 -  
570 - $arrLinha = current($arrResultado);  
571 -  
572 - return $arrLinha['valor'];  
573 - }  
574 -  
575 - /**  
576 - * Verifica se o número da versão é valido  
577 - *  
578 - * @param string $strVersao Versão a ser instalada  
579 - * @return bool  
580 - */  
581 - protected function isVersaoValida($strVersao = self::VER_NONE) {  
582 -  
583 - if (empty($strVersao)) {  
584 - return false;  
585 - }  
586 -  
587 - // Remove os caracteres não númericos  
588 - $strVersao = preg_replace('/\D+/', '', $strVersao);  
589 -  
590 - // Tem que no mínimo 3 digitos  
591 - if (strlen($strVersao) < 3) {  
592 - return false;  
593 - }  
594 -  
595 - return is_numeric($strVersao) ? true : false;  
596 - }  
597 -  
598 - /**  
599 - * Verifica se um paramêtro existe, caso sim retorna o seu valor, senão  
600 - * retorna o default especificado.  
601 - *  
602 - * @param string $strChave Nome do paramêtro  
603 - * @param string $strParam String a ser formatada com o valor do paramêtro  
604 - * @param string $strParamDefault String que retorna caso o valor do  
605 - * paramêtro não exista  
606 - * @param bool $bolAlgumFiltroUsado Ponteiro de controle para verificar se  
607 - * pelo menos um paramêtro foi encontrado  
608 - * @return string  
609 - */  
610 - private function getStrArg($strChave = '', $strParam = '', $strParamDefault = '', &$bolAlgumFiltroUsado) {  
611 -  
612 - if (array_key_exists($strChave, $this->arrArgs)) {  
613 - $bolAlgumFiltroUsado = true;  
614 - return sprintf($strParam, str_pad($this->arrArgs[$strChave], 3, '0', STR_PAD_LEFT));  
615 - }  
616 - return $strParamDefault;  
617 - }  
618 -  
619 - /**  
620 - * Retorna a última versão disponivel. Verifica as constantes que iniciam  
621 - * com VER_  
622 - */  
623 - private function getUltimaVersao() {  
624 -  
625 - $objReflection = new ReflectionClass(__CLASS__);  
626 - $arrVersao = array_flip(preg_grep('/^VER\_/', array_flip($objReflection->getConstants())));  
627 - sort($arrVersao);  
628 - return array_pop($arrVersao);  
629 - }  
630 -  
631 - /**  
632 - * Encontra os métodos com notação para instalar a versão selecionada  
633 - *  
634 - * @return string Número da versão  
635 - */  
636 - protected function executarControlado() {  
637 -  
638 - $this->inicializarObjMetaBanco()  
639 - ->isDriverSuportado()  
640 - ->isDriverPermissao();  
641 - //->isVersaoSuportada(SEI_VERSAO, $this->versaoMinRequirida);  
642 -  
643 - $arrMetodo = array();  
644 -  
645 - // Retorna a última versão disponibilizada pelo script. Sempre tenta atualizar  
646 - // para versão mais antiga  
647 - $strVersaoInstalar = $this->getUltimaVersao();  
648 -  
649 - //throw new InfraException($strVersaoInstalar);  
650 - $objInfraBanco = $this->inicializarObjInfraIBanco();  
651 - // Versão atual  
652 - $strPenVersao = $this->getVersao($objInfraBanco);  
653 - if (!$this->isVersaoValida($strPenVersao)) {  
654 - // Não instalado  
655 - $strPenVersao = $this->setVersao(self::VER_NONE, $objInfraBanco);  
656 - }  
657 -  
658 - $numPenVersao = substr($strPenVersao, -1);  
659 - $numVersaoInstalar = intval(substr($strVersaoInstalar, -1));  
660 -  
661 - $bolAlgumFiltroUsado = false;  
662 - $strRegexRelease = $this->getStrArg('release', '(R%s)', '(R[0-9]{1,3})?', $bolAlgumFiltroUsado);  
663 - $strRegexSprint = $this->getStrArg('sprint', '(S%s)', '(S[0-9]{1,3})?', $bolAlgumFiltroUsado);  
664 - $strRegexItem = $this->getStrArg('user-story', '(US%s)', '(US|IW[0-9]{1,3})?', $bolAlgumFiltroUsado);  
665 - $strRegexItem = $this->getStrArg('item-worker', '(IW%s)', $strRegexItem, $bolAlgumFiltroUsado);  
666 -  
667 - // Instalar todas atualizações  
668 - if ($bolAlgumFiltroUsado === false) {  
669 -  
670 - $strRegexVersao = sprintf('[%d-%d]', ($numPenVersao + 1), $numVersaoInstalar);  
671 - }  
672 - // Instalar somente a solicitada  
673 - else {  
674 - // Caso algum paramêtro seja adicionado não deve passar para próxima versão  
675 - $strVersaoInstalar = $strPenVersao;  
676 - $strRegexVersao = intval(substr($strPenVersao, -1) + 1);  
677 - }  
678 -  
679 - // instalarV[0-9]{1,2}[0-9](R[0-9]{1,3})?(S[0-9]{1,3})?(US|IW[0-9]{1,4})?  
680 - $strRegex = sprintf('/^instalarV[0-9][0-9]%s%s%s%s/i', $strRegexVersao, $strRegexRelease, $strRegexSprint, $strRegexItem  
681 - );  
682 -  
683 - // Tenta encontrar métodos que iniciem com instalar  
684 - $arrMetodo = (array) preg_grep($strRegex, get_class_methods($this));  
685 -  
686 - if (empty($arrMetodo)) {  
687 -  
688 - throw new InfraException(sprintf('NENHUMA ATUALIZACAO FOI ENCONTRADA SUPERIOR A VERSAO %s DO MODULO PEN', $strPenVersao));  
689 - } else {  
690 -  
691 - foreach ($arrMetodo as $strMetodo) {  
692 -  
693 - $this->{$strMetodo}();  
694 - }  
695 - }  
696 - $this->setVersao($strVersaoInstalar, $objInfraBanco);  
697 -  
698 - return $strVersaoInstalar;  
699 - }  
700 -  
701 - /**  
702 - * Método que inicia o processo  
703 - */  
704 - public function atualizarVersao() {  
705 -  
706 - $this->inicializar('INICIANDO ATUALIZACAO DO MODULO PEN NO SEI VERSAO ' . SIP_VERSAO);  
707 -  
708 - try {  
709 -  
710 - $strRegexVersao = $this->executar();  
711 - $this->logar('ATUALIZADA VERSAO: ' . $strRegexVersao);  
712 - } catch (InfraException $e) {  
713 -  
714 - $this->logar('Erro: ' . $e->getStrDescricao());  
715 - } catch (\Exception $e) {  
716 -  
717 - $this->logar('Erro: ' . $e->getMessage());  
718 - }  
719 -  
720 - $this->finalizar();  
721 - }  
722 -  
723 - /**  
724 - * Construtor  
725 - *  
726 - * @param array $arrArgs Argumentos enviados pelo script  
727 - */  
728 - public function __construct($arrArgs = array()) {  
729 -  
730 - ini_set('max_execution_time', '0');  
731 - ini_set('memory_limit', '-1');  
732 - @ini_set('zlib.output_compression', '0');  
733 - @ini_set('implicit_flush', '1');  
734 - ob_implicit_flush();  
735 -  
736 - $this->arrArgs = $arrArgs;  
737 -  
738 - $this->inicializarObjMetaBanco();  
739 -  
740 - $this->objDebug = InfraDebug::getInstance();  
741 - $this->objDebug->setBolLigado(true);  
742 - $this->objDebug->setBolDebugInfra(true);  
743 - $this->objDebug->setBolEcho(true);  
744 - $this->objDebug->limpar();  
745 - }  
746 -  
747 -}  
748 -  
749 -class PenAtualizarSipRN extends PenAtualizadorRN {  
750 -  
751 - protected $versaoMinRequirida = '1.30.0';  
752 - protected $sei_versao = 'PEN_VERSAO_MODULO_SIP';  
753 - private $arrRecurso = array();  
754 - private $arrMenu = array();  
755 -  
756 - /**  
757 - * Retorna/Cria a conexão com o banco de dados  
758 - *  
759 - * @return InfraIBanco  
760 - */  
761 - protected function inicializarObjInfraIBanco() {  
762 - if (empty($this->objBanco)) {  
763 -  
764 - $this->objBanco = BancoSip::getInstance();  
765 - }  
766 - return $this->objBanco;  
767 - }  
768 -  
769 - /**  
770 - * Retorna o ID do sistema  
771 - *  
772 - * @return int  
773 - */  
774 - protected function getNumIdSistema($strSigla = 'SIP') {  
775 -  
776 - $objDTO = new SistemaDTO();  
777 - $objDTO->setStrSigla($strSigla);  
778 - $objDTO->setNumMaxRegistrosRetorno(1);  
779 - $objDTO->retNumIdSistema();  
780 -  
781 - $objRN = new SistemaRN();  
782 - $objDTO = $objRN->consultar($objDTO);  
783 -  
784 - return (empty($objDTO)) ? '0' : $objDTO->getNumIdSistema();  
785 - }  
786 -  
787 - /**  
788 - *  
789 - * @return int Código do Menu  
790 - */  
791 - protected function getNumIdMenu($strMenu = 'Principal', $numIdSistema = 0) {  
792 -  
793 - $objDTO = new MenuDTO();  
794 - $objDTO->setNumIdSistema($numIdSistema);  
795 - $objDTO->setStrNome($strMenu);  
796 - $objDTO->setNumMaxRegistrosRetorno(1);  
797 - $objDTO->retNumIdMenu();  
798 -  
799 - $objRN = new MenuRN();  
800 - $objDTO = $objRN->consultar($objDTO);  
801 -  
802 - if (empty($objDTO)) {  
803 - throw new InfraException('Menu ' . $strMenu . ' não encontrado.');  
804 - }  
805 -  
806 - return $objDTO->getNumIdMenu();  
807 - }  
808 -  
809 - /**  
810 - *  
811 - * @return int Código do Recurso gerado  
812 - */  
813 - protected function criarRecurso($strNome = '', $strDescricao = null, $numIdSistema = 0) {  
814 -  
815 - $objDTO = new RecursoDTO();  
816 - $objDTO->setNumIdSistema($numIdSistema);  
817 - $objDTO->setStrNome($strNome);  
818 - $objDTO->setNumMaxRegistrosRetorno(1);  
819 - $objDTO->retNumIdRecurso();  
820 -  
821 - $objBD = new RecursoBD($this->getObjInfraIBanco());  
822 - $objDTO = $objBD->consultar($objDTO);  
823 -  
824 - if (empty($objDTO)) {  
825 -  
826 - $objDTO = new RecursoDTO();  
827 - $objDTO->setNumIdRecurso(null);  
828 - $objDTO->setStrDescricao($strDescricao);  
829 - $objDTO->setNumIdSistema($numIdSistema);  
830 - $objDTO->setStrNome($strNome);  
831 - $objDTO->setStrCaminho('controlador.php?acao=' . $strNome);  
832 - $objDTO->setStrSinAtivo('S');  
833 -  
834 - $objDTO = $objBD->cadastrar($objDTO);  
835 - }  
836 -  
837 - $this->arrRecurso[] = $objDTO->getNumIdRecurso();  
838 -  
839 - return $objDTO->getNumIdRecurso();  
840 - }  
841 -  
842 - /**  
843 - * Cria um menu  
844 - *  
845 - * @return int  
846 - */  
847 - protected function criarMenu($strRotulo = '', $numSequencia = 10, $numIdItemMenuPai = null, $numIdMenu = null, $numIdRecurso = null, $numIdSistema = 0) {  
848 -  
849 - $objDTO = new ItemMenuDTO();  
850 - $objDTO->setNumIdItemMenuPai($numIdItemMenuPai);  
851 - $objDTO->setNumIdSistema($numIdSistema);  
852 - $objDTO->setStrRotulo($strRotulo);  
853 - $objDTO->setNumIdRecurso($numIdRecurso);  
854 - $objDTO->setNumMaxRegistrosRetorno(1);  
855 - $objDTO->retNumIdItemMenu();  
856 -  
857 - $objBD = new ItemMenuBD($this->inicializarObjInfraIBanco());  
858 - $objDTO = $objBD->consultar($objDTO);  
859 -  
860 - if (empty($objDTO)) {  
861 -  
862 - $objDTO = new ItemMenuDTO();  
863 - $objDTO->setNumIdMenu($numIdMenu);  
864 - $objDTO->setNumIdMenuPai($numIdMenu);  
865 - $objDTO->setNumIdItemMenu(null);  
866 - $objDTO->setNumIdItemMenuPai($numIdItemMenuPai);  
867 - $objDTO->setNumIdSistema($numIdSistema);  
868 - $objDTO->setNumIdRecurso($numIdRecurso);  
869 - $objDTO->setStrRotulo($strRotulo);  
870 - $objDTO->setStrDescricao(null);  
871 - $objDTO->setNumSequencia($numSequencia);  
872 - $objDTO->setStrSinNovaJanela('N');  
873 - $objDTO->setStrSinAtivo('S');  
874 -  
875 - $objDTO = $objBD->cadastrar($objDTO);  
876 - }  
877 -  
878 - if (!empty($numIdRecurso)) {  
879 -  
880 - $this->arrMenu[] = array($objDTO->getNumIdItemMenu(), $numIdMenu, $numIdRecurso);  
881 - }  
882 -  
883 - return $objDTO->getNumIdItemMenu();  
884 - }  
885 -  
886 - public function addRecursosToPerfil($numIdPerfil, $numIdSistema) {  
887 -  
888 - if (!empty($this->arrRecurso)) {  
889 -  
890 - $objDTO = new RelPerfilRecursoDTO();  
891 - $objBD = new RelPerfilRecursoBD($this->inicializarObjInfraIBanco());  
892 -  
893 - foreach ($this->arrRecurso as $numIdRecurso) {  
894 -  
895 - $objDTO->setNumIdSistema($numIdSistema);  
896 - $objDTO->setNumIdPerfil($numIdPerfil);  
897 - $objDTO->setNumIdRecurso($numIdRecurso);  
898 -  
899 - if ($objBD->contar($objDTO) == 0) {  
900 - $objBD->cadastrar($objDTO);  
901 - }  
902 - }  
903 - }  
904 - }  
905 -  
906 - public function addMenusToPerfil($numIdPerfil, $numIdSistema) {  
907 -  
908 - if (!empty($this->arrMenu)) {  
909 -  
910 - $objDTO = new RelPerfilItemMenuDTO();  
911 - $objBD = new RelPerfilItemMenuBD($this->inicializarObjInfraIBanco());  
912 -  
913 - foreach ($this->arrMenu as $array) {  
914 -  
915 - list($numIdItemMenu, $numIdMenu, $numIdRecurso) = $array;  
916 -  
917 - $objDTO->setNumIdPerfil($numIdPerfil);  
918 - $objDTO->setNumIdSistema($numIdSistema);  
919 - $objDTO->setNumIdRecurso($numIdRecurso);  
920 - $objDTO->setNumIdMenu($numIdMenu);  
921 - $objDTO->setNumIdItemMenu($numIdItemMenu);  
922 -  
923 - if ($objBD->contar($objDTO) == 0) {  
924 - $objBD->cadastrar($objDTO);  
925 - }  
926 - }  
927 - }  
928 - }  
929 -  
930 - public function atribuirPerfil($numIdSistema) {  
931 -  
932 - $objDTO = new PerfilDTO();  
933 - $objBD = new PerfilBD($this->inicializarObjInfraIBanco());  
934 - $objRN = $this;  
935 -  
936 - // Vincula a um perfil os recursos e menus adicionados nos métodos criarMenu e criarReturso  
937 - $fnCadastrar = function($strNome, $numIdSistema) use($objDTO, $objBD, $objRN) {  
938 -  
939 - $objDTO->unSetTodos();  
940 - $objDTO->setNumIdSistema($numIdSistema);  
941 - $objDTO->setStrNome($strNome, InfraDTO::$OPER_LIKE);  
942 - $objDTO->setNumMaxRegistrosRetorno(1);  
943 - $objDTO->retNumIdPerfil();  
944 -  
945 - $objPerfilDTO = $objBD->consultar($objDTO);  
946 -  
947 - if (!empty($objPerfilDTO)) {  
948 - $objRN->addRecursosToPerfil($objPerfilDTO->getNumIdPerfil(), $numIdSistema);  
949 - $objRN->addMenusToPerfil($objPerfilDTO->getNumIdPerfil(), $numIdSistema);  
950 - }  
951 - };  
952 -  
953 - $fnCadastrar('ADMINISTRADOR', $numIdSistema);  
954 - $fnCadastrar('BASICO', $numIdSistema);  
955 - }  
956 -  
957 - /**  
958 - * Instala/Atualiza os módulo PEN para versão 1.0  
959 - */  
960 - protected function instalarV001() {  
961 -  
962 - $numIdSistema = $this->getNumIdSistema('SEI');  
963 - $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema);  
964 -  
965 - //----------------------------------------------------------------------  
966 - // Expedir procedimento  
967 - //----------------------------------------------------------------------  
968 - $this->criarRecurso('pen_procedimento_expedir', 'Expedir Procedimento', $numIdSistema);  
969 - $this->criarRecurso('apensados_selecionar_expedir_procedimento', 'Processos Apensados', $numIdSistema);  
970 - $numIdRecurso = $this->criarRecurso('pen_procedimento_expedido_listar', 'Processos Expedidos', $numIdSistema);  
971 - $this->criarMenu('Processos Expedidos', 55, null, $numIdMenu, $numIdRecurso, $numIdSistema);  
972 - //----------------------------------------------------------------------  
973 - // Mapeamento de documentos enviados  
974 - //----------------------------------------------------------------------  
975 - $this->criarRecurso('pen_map_tipo_doc_enviado_visualizar', 'Visualização de mapeamento de documentos enviados', $numIdSistema);  
976 -  
977 - // Acha o menu existente de Tipos de Documento  
978 - $objItemMenuDTO = new ItemMenuDTO();  
979 - $objItemMenuDTO->setNumIdSistema($numIdSistema);  
980 - $objItemMenuDTO->setNumIdMenu($numIdMenu);  
981 - $objItemMenuDTO->setStrRotulo('Tipos de Documento');  
982 - $objItemMenuDTO->setNumMaxRegistrosRetorno(1);  
983 - $objItemMenuDTO->retNumIdItemMenu();  
984 -  
985 - $objItemMenuBD = new ItemMenuBD($this->inicializarObjInfraIBanco());  
986 - $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO);  
987 -  
988 - if (empty($objItemMenuDTO)) {  
989 - throw new InfraException('Menu "Tipo de Documentos" não foi localizado');  
990 - }  
991 -  
992 - $numIdItemMenuPai = $objItemMenuDTO->getNumIdItemMenu();  
993 -  
994 - // Gera o submenu Mapeamento  
995 - $_numIdItemMenuPai = $this->criarMenu('Mapeamento', 50, $numIdItemMenuPai, $numIdMenu, null, $numIdSistema);  
996 -  
997 - // Gera o submenu Mapeamento > Envio  
998 - $numIdItemMenuPai = $this->criarMenu('Envio', 10, $_numIdItemMenuPai, $numIdMenu, null, $numIdSistema);  
999 -  
1000 - // Gera o submenu Mapeamento > Envio > Cadastrar  
1001 - $numIdRecurso = $this->criarRecurso('pen_map_tipo_doc_enviado_cadastrar', 'Cadastro de mapeamento de documentos enviados', $numIdSistema);  
1002 - $this->criarMenu('Cadastrar', 10, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema);  
1003 -  
1004 - // Gera o submenu Mapeamento > Envio > Listar  
1005 - $numIdRecurso = $this->criarRecurso('pen_map_tipo_doc_enviado_listar', 'Listagem de mapeamento de documentos enviados', $numIdSistema);  
1006 - $this->criarMenu('Listar', 20, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema);  
1007 -  
1008 - // Gera o submenu Mapeamento > Recebimento  
1009 - $numIdItemMenuPai = $this->criarMenu('Recebimento', 20, $_numIdItemMenuPai, $numIdMenu, null, $numIdSistema);  
1010 -  
1011 - // Gera o submenu Mapeamento > Recebimento > Cadastrar  
1012 - $numIdRecurso = $this->criarRecurso('pen_map_tipo_doc_recebido_cadastrar', 'Cadastro de mapeamento de documentos recebidos', $numIdSistema);  
1013 - $this->criarMenu('Cadastrar', 10, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema);  
1014 -  
1015 - // Gera o submenu Mapeamento > Recebimento > Listar  
1016 - $numIdRecurso = $this->criarRecurso('pen_map_tipo_doc_recebido_listar', 'Listagem de mapeamento de documentos recebidos', $numIdSistema);  
1017 - $this->criarMenu('Listar', 20, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema);  
1018 -  
1019 - //Atribui as permissões aos recursos e menus  
1020 - $this->atribuirPerfil($numIdSistema);  
1021 - }  
1022 -  
1023 - protected function instalarV003R003S003IW001() {  
1024 -  
1025 -  
1026 - $objBD = new ItemMenuBD($this->inicializarObjInfraIBanco());  
1027 -  
1028 - //----------------------------------------------------------------------  
1029 - // Achar o root  
1030 -  
1031 - $numIdSistema = $this->getNumIdSistema('SEI');  
1032 - $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema);  
1033 -  
1034 - $objDTO = new ItemMenuDTO();  
1035 - $objDTO->setNumIdSistema($numIdSistema);  
1036 - $objDTO->setNumIdMenu($numIdMenu);  
1037 - $objDTO->setStrRotulo('Administração');  
1038 - $objDTO->setNumMaxRegistrosRetorno(1);  
1039 - $objDTO->retNumIdItemMenu();  
1040 -  
1041 - $objDTO = $objBD->consultar($objDTO);  
1042 -  
1043 - if (empty($objDTO)) {  
1044 - throw new InfraException('Menu "Administração" não foi localizado');  
1045 - }  
1046 -  
1047 - $numIdItemMenuRoot = $objDTO->getNumIdItemMenu();  
1048 - //----------------------------------------------------------------------  
1049 - // Acha o nodo do mapeamento  
1050 -  
1051 - $objItemMenuDTO = new ItemMenuDTO();  
1052 - $objItemMenuDTO->setNumIdSistema($numIdSistema);  
1053 - $objItemMenuDTO->setNumIdMenu($numIdMenu);  
1054 - $objItemMenuDTO->setStrRotulo('Mapeamento');  
1055 - $objItemMenuDTO->setNumSequencia(50);  
1056 - $objItemMenuDTO->setNumMaxRegistrosRetorno(1);  
1057 - $objItemMenuDTO->retTodos();  
1058 -  
1059 - $objItemMenuDTO = $objBD->consultar($objItemMenuDTO);  
1060 - if (!empty($objItemMenuDTO)) {  
1061 -  
1062 - $numIdItemMenuMapeamento = $objItemMenuDTO->getNumIdItemMenu();  
1063 -  
1064 - $objDTO = new ItemMenuDTO();  
1065 - $objDTO->setNumIdSistema($numIdSistema);  
1066 - $objDTO->setNumIdMenu($numIdMenu);  
1067 - $objDTO->setNumIdItemMenuPai($numIdItemMenuMapeamento);  
1068 - $objDTO->retTodos();  
1069 -  
1070 - $arrObjDTO = $objBD->listar($objDTO);  
1071 -  
1072 - if (!empty($arrObjDTO)) {  
1073 -  
1074 - $numIdItemMenuPai = $this->criarMenu('Processo Eletrônico Nacional', 0, $numIdItemMenuRoot, $numIdMenu, null, $numIdSistema);  
1075 - $numIdItemMenuPai = $this->criarMenu('Mapeamento de Tipos de Documento', 10, $numIdItemMenuPai, $numIdMenu, null, $numIdSistema);  
1076 -  
1077 - foreach ($arrObjDTO as $objDTO) {  
1078 -  
1079 - $objDTO->setNumIdItemMenuPai($numIdItemMenuPai);  
1080 -  
1081 - $objBD->alterar($objDTO);  
1082 - }  
1083 -  
1084 - $objBD->excluir($objItemMenuDTO);  
1085 - }  
1086 - }  
1087 - }  
1088 -  
1089 -}  
1090 -  
1091 -class PenConsoleRN extends InfraRN {  
1092 -  
1093 - protected $objRN;  
1094 - protected $strAction;  
1095 - protected $arrTokens = array();  
1096 - protected $objInfraBanco;  
1097 -  
1098 - public function __construct($objRN = null, $tokens = array()) {  
1099 -  
1100 - if(!is_null($objRN)) {  
1101 -  
1102 - parent::__construct();  
1103 -  
1104 - if(!is_object($objRN)) {  
1105 - throw new InfraException('Requerido objeto Infra');  
1106 - }  
1107 -  
1108 - if(get_parent_class($objRN) !== 'InfraRN') {  
1109 - throw new InfraException('Requerido objeto Infra que seja extendido de InfraRN');  
1110 - }  
1111 -  
1112 - $this->objRN = $objRN;  
1113 - }  
1114 -  
1115 - if(empty($tokens)) {  
1116 - $tokens = $_SERVER['argv'];  
1117 - }  
1118 -  
1119 - $this->criarTokens($tokens);  
1120 - }  
1121 -  
1122 - /**  
1123 - * Inicializador o banco de dados  
1124 - */  
1125 - protected function inicializarObjInfraIBanco() {  
1126 - if(empty($this->objInfraBanco)){  
1127 - $this->objInfraBanco = BancoSEI::getInstance();  
1128 - }  
1129 - return $this->objInfraBanco;  
1130 - }  
1131 -  
1132 - /**  
1133 - * Processa os parâmetros passados ao script pelo cli  
1134 - *  
1135 - * @param array $arguments  
1136 - * @return null  
1137 - */  
1138 - protected function criarTokens($arguments = array()){  
1139 -  
1140 - if(empty($arguments)) {  
1141 - throw new InfraException('Script não pode ser executado pela web');  
1142 - }  
1143 -  
1144 - $strScript = array_shift($arguments);  
1145 -  
1146 - if(!empty($this->objRN)) {  
1147 -  
1148 - $strAction = array_shift($arguments);  
1149 -  
1150 - if(substr($strAction, 0, 2) == '--') {  
1151 - throw new InfraException('O primeiro paramêtro deve ser uma action da RN');  
1152 - }  
1153 -  
1154 - $this->strAction = $strAction;  
1155 - }  
1156 -  
1157 - foreach($arguments as $key => $argument) {  
1158 -  
1159 - if(substr($argument, 0, 2) === '--'){  
1160 -  
1161 - $string = preg_replace('/^--/', '', $argument);  
1162 - $array = explode('=', $string);  
1163 -  
1164 - $key = array_shift($array);  
1165 - $value = (count($array) > 0) ? array_shift($array) : true;  
1166 -  
1167 - $this->arrTokens[$key] = $value;  
1168 - }  
1169 - }  
1170 - }  
1171 -  
1172 - /**  
1173 - * Retorna os parâmetros  
1174 - */  
1175 - public function getTokens(){  
1176 - return $this->arrTokens;  
1177 - }  
1178 -  
1179 - public function run(){  
1180 -  
1181 - if(empty($this->objRN)) {  
1182 - throw new InfraException('Nenhuma RN foi adicionada ao console');  
1183 - }  
1184 -  
1185 - if(!method_exists($this->objRN, $this->strAction)) {  
1186 -  
1187 - throw new InfraException(sprintf('Nenhuma ação "%s" foi encontrada em %s '.PHP_EOL.$this->objRN->ajuda(), $this->strAction, get_class($this->objRN)));  
1188 - }  
1189 -  
1190 - if(array_key_exists('ajuda', $this->arrTokens)) {  
1191 -  
1192 - print $this->objRN->ajuda();  
1193 - return true;  
1194 - }  
1195 -  
1196 - return call_user_func(array($this->objRN, $this->strAction), $this->getTokens());  
1197 - }  
1198 -  
1199 - public static function format($strMensagem = '', $strFonte = '', $bolBold = false){  
1200 -  
1201 - $strBold = ($bolBold !== false) ? '1' : '0';  
1202 -  
1203 - //$strMensagem = escapeshellarg($strMensagem);  
1204 -  
1205 - if(!empty($strFonte)) {  
1206 -  
1207 - switch($strFonte){  
1208 -  
1209 - case 'green':  
1210 - $strMensagem = "\033[".$strBold.";32m".$strMensagem;  
1211 - break;  
1212 -  
1213 - case 'red':  
1214 - $strMensagem = "\033[".$strBold.";31m".$strMensagem;  
1215 - break;  
1216 -  
1217 - case 'blue':  
1218 - $strMensagem = "\033[".$strBold.";34m".$strMensagem;  
1219 - break;  
1220 -  
1221 - case 'yellow':  
1222 - $strMensagem = "\033[".$strBold.";33m".$strMensagem;  
1223 - break;  
1224 -  
1225 - }  
1226 - }  
1227 - return static::resetAfter($strMensagem);  
1228 - }  
1229 -  
1230 - public static function resetAfter($strMensagem = ''){  
1231 -  
1232 - return $strMensagem. "\033[0m";  
1233 - }  
1234 -}  
1235 -  
1236 -try {  
1237 -  
1238 - $objPenConsoleRN = new PenConsoleRN();  
1239 - $arrArgs = $objPenConsoleRN->getTokens();  
1240 -  
1241 - $objAtualizarRN = new PenAtualizarSipRN($arrArgs);  
1242 - $objAtualizarRN->atualizarVersao();  
1243 -  
1244 - exit(0);  
1245 -} catch (Exception $e) {  
1246 -  
1247 - print InfraException::inspecionar($e);  
1248 -  
1249 - try {  
1250 - LogSEI::getInstance()->gravar(InfraException::inspecionar($e));  
1251 - } catch (Exception $e) {  
1252 -  
1253 - }  
1254 -  
1255 - exit(1);  
1256 -}  
1257 -  
1258 -print PHP_EOL;