/** * Constrói os menus de uma página com base no recurso ativo e no acl * @param StdClass $usuario * @param Recurso $recurso * @param Core_Acl $acl * * return array */ public static function getMenus($usuario, Recurso $recurso, Core_Acl $acl) { $retorno = array(); // Verificar permissao de cada botao em $recurso->filhos foreach ($recurso->filhos as $botao) { $hasBotao = AclFactory::checaPermissao($acl, $usuario, $botao); // verifica se no fim das contas o botão foi inserido if ($hasBotao) { // botão deve ser inserido // verifica se o botao em questao tem um dialog if ($botao->hasDialog()) { $botao = $botao->dialog; } // verifica se o botao em questao é de um dialog // caso positivo, adicioná-lo às dependencias if ($botao->id_recurso_tipo == Recurso::TIPO_DIALOG && $botao->hasUrl()) { $recurso->addDependencia($botao); } // verifica se o recurso em questão é de uma aba // caso positivo, adicioná-la à lista de abas if ($botao->id_recurso_tipo == Recurso::TIPO_ABA) { $recurso->addAba($botao); // verifica se a aba possui dependencias if (is_array($botao->filhos)) { foreach ($botao->filhos as $dependencia) { if ($dependencia->hasUrl() && ($dependencia->id_recurso_tipo != Recurso::TIPO_PAGINA && $dependencia->id_recurso_tipo != Recurso::TIPO_POPUP) && AclFactory::checaPermissao($acl, $usuario, $dependencia)) { $recurso->addDependencia($dependencia); } } } } if ($botao->hasImage() && ($botao->hasUrl() || $botao->hasDomId())) { $retorno[] = $botao; } } } // ao final de todas as verificacoes, retorna a array de recursos return $retorno; }
// verifica a existencia da permissao para receber documentos if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(201))) { ?> // Autuar $("<img/>", { src: 'imagens/receber.png', title: 'Receber Trâmite', 'class': 'botao30' }).bind("click", function() { jquery_receber_documentos(aData[3]); }).appendTo($line); <?php } // verifica a existencia da permissao para visualizar anexos/apensos if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(3101))) { ?> // Anexos/Apensos $("<img/>", { src: 'imagens/lista_anexos.png', title: 'Anexos/Apensos', 'class': 'botao30' }).bind("click", function() { jquery_listar_vinculacao_documento(aData[3], false); }).appendTo($line); <?php } // verifica a existencia da permissao para detalhar documentos if (array_key_exists('3102', Controlador::getInstance()->recurso->dependencias)) { ?>
/** * @param type $pai * @param type $filho * @param type $vinculacao * @return \Output */ public function desvincularDocumento($pai, $filho, $vinculacao) { try { /* Valida se o vínculo é associação (que não tem regra de validação de área de trabalho) * OU * Validar se os documentos pai e filho ainda estao na area de trabalho do usuario * OU * Privilegio total para usuarios com permissao */ $controller = Controlador::getInstance(); $auth = $controller->usuario; // permissao desanexar documento = 310114 if ($vinculacao == 3 || DocumentoDemanda::validarDocumentoAreaDeTrabalho($pai) || $vinculacao == 1 && AclFactory::checaPermissao($controller->acl, $auth, DaoRecurso::getRecursoById(31120616))) { if ($vinculacao == 3 || DocumentoDemanda::validarDocumentoAreaDeTrabalho($filho) || $vinculacao == 1 && AclFactory::checaPermissao($controller->acl, $auth, DaoRecurso::getRecursoById(31120616))) { switch ($vinculacao) { case 1: $operacao = 'desanexado'; break; case 2: $operacao = 'desapensado'; break; case 3: $operacao = 'desassociado'; break; default: break; } /* Inicar transacao */ Controlador::getInstance()->getConnection()->connection->beginTransaction(); /* Verificar se existe um vinculo existe ativo e quais sao os historicos de tramite */ $stmt = Controlador::getInstance()->getConnection()->connection->prepare("SELECT\n DV.ID AS ID_VINCULO,\n HF.ID AS ID_HISTORICO_FILHO,\n HP.ID AS ID_HISTORICO_PAI,\n DCF.DIGITAL AS FILHO,\n DCP.DIGITAL AS PAI\n FROM TB_DOCUMENTOS_VINCULACAO DV\n INNER JOIN TB_DOCUMENTOS_CADASTRO DCP ON DV.ID_DOCUMENTO_PAI = DCP.ID\n INNER JOIN TB_DOCUMENTOS_CADASTRO DCF ON DV.ID_DOCUMENTO_FILHO = DCF.ID\n LEFT JOIN TB_HISTORICO_TRAMITE_DOCUMENTOS HP ON DV.ID_HISTORICO_TRAMITE_PAI = HP.ID\n LEFT JOIN TB_HISTORICO_TRAMITE_DOCUMENTOS HF ON DV.ID_HISTORICO_TRAMITE_FILHO = HF.ID\n WHERE\n DCP.DIGITAL = ? AND\n DCF.DIGITAL = ? AND\n DV.ID_VINCULACAO = ? AND\n DV.FG_ATIVO = 1 AND DV.ST_ATIVO = 1 LIMIT 1"); $stmt->bindParam(1, $pai, PDO::PARAM_STR); $stmt->bindParam(2, $filho, PDO::PARAM_STR); $stmt->bindParam(3, $vinculacao, PDO::PARAM_INT); $stmt->execute(); $out = $stmt->fetch(PDO::FETCH_ASSOC); /* Se desanexacao */ if (!empty($out) && $vinculacao == 1) { /* Desvincular */ $sthp = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_DOCUMENTOS_VINCULACAO SET FG_ATIVO = 0 WHERE ID = ?"); $sthp->bindParam(1, $out['ID_VINCULO'], PDO::PARAM_INT); $sthp->execute(); /* Log Vinculo */ new Log('TB_DOCUMENTOS_VINCULACAO', $out['ID_VINCULO'], $auth->ID, 'desanexar'); /* Remover historico tramite pai */ if (!is_null($out['ID_HISTORICO_PAI'])) { $sthp = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_HISTORICO_TRAMITE_DOCUMENTOS SET ST_ATIVO = 0 WHERE ID = ?"); $sthp->bindParam(1, $out['ID_HISTORICO_PAI'], PDO::PARAM_INT); $sthp->execute(); /* Log Historico Pai */ new Log('HISTORICO_TRAMITE', $out['ID_HISTORICO_PAI'], $auth->ID, 'excluir'); } /* Remover historico tramite filho */ if (!is_null($out['ID_HISTORICO_FILHO'])) { $sthf = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_HISTORICO_TRAMITE_DOCUMENTOS SET ST_ATIVO = 0 WHERE ID = ?"); $sthf->bindParam(1, $out['ID_HISTORICO_FILHO'], PDO::PARAM_INT); $sthf->execute(); /* Log Historico Filho */ new Log('HISTORICO_TRAMITE', $out['ID_HISTORICO_FILHO'], $auth->ID, 'excluir'); } } /* Se desapensacao */ if (!empty($out) && $vinculacao == 2) { /* Variaveis do historico de tramite */ $acao_filho = "Este documento foi {$operacao} do documento {$pai}"; // historico filho $acao_pai = "O documento {$filho} foi {$operacao}."; // historico pai $ultimo_tramite = "Este documento foi {$operacao} do documento {$pai}."; //ultimo tramite filho $destino = "XXXXX"; $origem = "XXXXX"; $id_usuario = $auth->ID; $id_unidade = $auth->ID_UNIDADE_ORIGINAL; $nome_usuario = $auth->NOME; $diretoria = DaoUnidade::getUnidade($id_unidade, 'nome'); /* Desvincular */ $sthp = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_DOCUMENTOS_VINCULACAO SET FG_ATIVO = 0 WHERE ID = ?"); $sthp->bindParam(1, $out['ID_VINCULO'], PDO::PARAM_INT); $sthp->execute(); /* Adicionar historico tramite pai */ $sthp = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_HISTORICO_TRAMITE_DOCUMENTOS" . " (DIGITAL,ID_USUARIO,USUARIO,ID_UNIDADE,DIRETORIA,ACAO,ORIGEM,DESTINO,DT_TRAMITE)" . " VALUES (?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP(0))"); $sthp->bindParam(1, $pai, PDO::PARAM_STR); //digital pai $sthp->bindParam(2, $id_usuario, PDO::PARAM_INT); //id usuario $sthp->bindParam(3, $nome_usuario, PDO::PARAM_STR); //nome usuario $sthp->bindParam(4, $id_unidade, PDO::PARAM_INT); //id unidade $sthp->bindParam(5, $diretoria, PDO::PARAM_STR); //nome diretoria $sthp->bindParam(6, $acao_pai, PDO::PARAM_STR); //acao pai $sthp->bindParam(7, $origem, PDO::PARAM_STR); //origem $sthp->bindParam(8, $destino, PDO::PARAM_STR); //destino $sthp->execute(); /* Adicionar historico tramite filho */ $sthf = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_HISTORICO_TRAMITE_DOCUMENTOS" . " (DIGITAL,ID_USUARIO,USUARIO,ID_UNIDADE,DIRETORIA,ACAO,ORIGEM,DESTINO,DT_TRAMITE)" . " VALUES (?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP(0))"); $sthf->bindParam(1, $filho, PDO::PARAM_STR); //digital filho $sthf->bindParam(2, $id_usuario, PDO::PARAM_INT); //id usuario $sthf->bindParam(3, $nome_usuario, PDO::PARAM_STR); //nome usuario $sthf->bindParam(4, $id_unidade, PDO::PARAM_INT); //id unidade $sthf->bindParam(5, $diretoria, PDO::PARAM_STR); //nome diretoria $sthf->bindParam(6, $acao_filho, PDO::PARAM_STR); //acao filho $sthf->bindParam(7, $origem, PDO::PARAM_STR); //origem $sthf->bindParam(8, $destino, PDO::PARAM_STR); //destino $sthf->execute(); /* Ultimo tramite - Documento Filho */ $stmt = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_DOCUMENTOS_CADASTRO SET ULTIMO_TRAMITE = ? WHERE DIGITAL = ?"); $stmt->bindParam(1, $ultimo_tramite, PDO::PARAM_STR); //acao $stmt->bindParam(2, $filho, PDO::PARAM_STR); //digital filho $stmt->execute(); } /* Se desassociação */ if (!empty($out) && $vinculacao == 3) { /* Variaveis do historico de tramite */ $acao_filho = "Este documento foi {$operacao} do documento {$pai}"; // historico filho $acao_pai = "O documento {$filho} foi {$operacao}."; // historico pai $ultimo_tramite = "Este documento foi {$operacao} do documento {$pai}."; //ultimo tramite filho $destino = "XXXXX"; $origem = "XXXXX"; $id_usuario = $auth->ID; $id_unidade = $auth->ID_UNIDADE_ORIGINAL; $nome_usuario = $auth->NOME; $diretoria = DaoUnidade::getUnidade($id_unidade, 'nome'); /* Desvincular */ $sthp = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_DOCUMENTOS_VINCULACAO SET FG_ATIVO = 0 WHERE ID = ?"); $sthp->bindParam(1, $out['ID_VINCULO'], PDO::PARAM_INT); $sthp->execute(); /* Adicionar historico tramite pai */ $sthp = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_HISTORICO_TRAMITE_DOCUMENTOS" . " (DIGITAL,ID_USUARIO,USUARIO,ID_UNIDADE,DIRETORIA,ACAO,ORIGEM,DESTINO,DT_TRAMITE)" . " VALUES (?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP(0))"); $sthp->bindParam(1, $pai, PDO::PARAM_STR); //digital pai $sthp->bindParam(2, $id_usuario, PDO::PARAM_INT); //id usuario $sthp->bindParam(3, $nome_usuario, PDO::PARAM_STR); //nome usuario $sthp->bindParam(4, $id_unidade, PDO::PARAM_INT); //id unidade $sthp->bindParam(5, $diretoria, PDO::PARAM_STR); //nome diretoria $sthp->bindParam(6, $acao_pai, PDO::PARAM_STR); //acao pai $sthp->bindParam(7, $origem, PDO::PARAM_STR); //origem $sthp->bindParam(8, $destino, PDO::PARAM_STR); //destino $sthp->execute(); /* Adicionar historico tramite filho */ $sthf = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_HISTORICO_TRAMITE_DOCUMENTOS" . " (DIGITAL,ID_USUARIO,USUARIO,ID_UNIDADE,DIRETORIA,ACAO,ORIGEM,DESTINO,DT_TRAMITE)" . " VALUES (?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP(0))"); $sthf->bindParam(1, $filho, PDO::PARAM_STR); //digital filho $sthf->bindParam(2, $id_usuario, PDO::PARAM_INT); //id usuario $sthf->bindParam(3, $nome_usuario, PDO::PARAM_STR); //nome usuario $sthf->bindParam(4, $id_unidade, PDO::PARAM_INT); //id unidade $sthf->bindParam(5, $diretoria, PDO::PARAM_STR); //nome diretoria $sthf->bindParam(6, $acao_filho, PDO::PARAM_STR); //acao filho $sthf->bindParam(7, $origem, PDO::PARAM_STR); //origem $sthf->bindParam(8, $destino, PDO::PARAM_STR); //destino $sthf->execute(); /* Ultimo tramite - Documento Filho */ $stmt = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_DOCUMENTOS_CADASTRO SET ULTIMO_TRAMITE = ? WHERE DIGITAL = ?"); $stmt->bindParam(1, $ultimo_tramite, PDO::PARAM_STR); //acao $stmt->bindParam(2, $filho, PDO::PARAM_STR); //digital filho $stmt->execute(); } /* Comitar */ Controlador::getInstance()->getConnection()->connection->commit(); return new Output(array('success' => 'true', 'message' => "Documento {$operacao} com sucesso!")); } else { /* Retorna quando o documento filho nao esta na area de trabalho do usuario */ return new Output(array('success' => 'false', 'error' => "O documento {$filho} não está na sua área de trabalho!")); } } else { /* Retorna quando o documento pai nao esta na area de trabalho do usuario */ return new Output(array('success' => 'false', 'error' => "O documento {$pai} não está na sua área de trabalho!")); } } catch (PDOException $e) { Controlador::getInstance()->getConnection()->connection->rollBack(); return new Output(array('success' => 'false', 'error' => $e->getMessage())); } }
/** * @todo Realizar verificação de permissão e parametrizar */ public function getPDF() { include_once 'fpdf/fpdf.php'; include_once 'pdfbookmark/PDF_Bookmark.php'; $allExists = true; $tiffs = ''; foreach ($this->_rowset as $page) { $absoluteFilename = $this->_cachePath . $page['MD5'] . '.png'; if (!file_exists($absoluteFilename)) { $allExists = false; } //Forma lista de TIFFs para conversão em multipágina, caso seja necessário $tiffs .= sprintf('%s.tif,0 ', $this->_uploadPath . $page['MD5']); } $pdfData = null; if ($allExists) { $allow = \AclFactory::checaPermissao(\Controlador::getInstance()->acl, \Controlador::getInstance()->usuario, \DaoRecurso::getRecursoById(999)); $pdf = new \PDF_Bookmark(); $pdf->SetMargins(0, 0, 0); $pdf->SetFont('Arial', '', 12); foreach ($this->_rowset as $key => $page) { if (!$allow && $page['FLG_PUBLICO'] == 0) { continue; } $pdf->author = utf8_decode(__CABECALHO_ORGAO__); $pdf->title = 'Sistema Gerenciador de Documentos - v' . __VERSAO__; $pdf->creator = $pdf->title . ' (' . utf8_decode(\Controlador::getInstance()->usuario->NOME) . ')'; $imagePath = $this->_cachePath . $page['MD5'] . '.png'; if (!is_file($imagePath)) { $imagePath = 'imagens/imagem_quebrada_a4.jpg'; } if ($page["IMG_WIDTH"] < $page["IMG_HEIGHT"]) { $pdf->AddPage("P", "A4"); $pdf->Image($imagePath, 0, 0, 210, 297, "PNG"); } else { $pdf->AddPage("L", "A4"); $pdf->Image($imagePath, 0, 0, 297, 210, "PNG"); } $pdf->Bookmark('Pág. ' . $key + 1); } $pdfData = $pdf->Output("", 'S'); } else { //Realiza estratégia de gerar TIFF multipágina e utilizar chamada ao sistema para gerar o PDF $absoluteFilename = $this->_cachePath . $page['MD5']; $absoluteTIFFFilename = $absoluteFilename . '.tif'; $absolutePDFFilename = $absoluteFilename . '.pdf'; // shell_exec("tiffcp -c lzw -t {$tiffs} {$absoluteTIFFFilename}");//Dá erros para TIFFs específicos shell_exec("tiffcp {$tiffs} {$absoluteTIFFFilename}"); // shell_exec("tiff2pdf -p A4 -j -q 200 -f -o {$absolutePDFFilename} {$absoluteTIFFFilename}"); shell_exec("tiff2pdf -p A4 -q 200 -o {$absolutePDFFilename} {$absoluteTIFFFilename}"); // shell_exec("tiff2pdf -o {$absolutePDFFilename} {$absoluteTIFFFilename}"); //Recupera conteúdo $pdfData = file_get_contents($absolutePDFFilename); //Apaga arquivos PDFs físicos unlink($absoluteTIFFFilename); unlink($absolutePDFFilename); } //Retorna FormatoPDF para manipulação return new Formato\FormatoPDF("", "{$this->_rowset[0]['DIGITAL']}", $pdfData); // fpassthru( fopen( $absolutePDFFilename, 'r' ) ); }
<?php $manager = AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(998)); $allow = AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999)); $informations = Imagens::factory()->recoverInformationDBByProcess($_REQUEST['numero_processo']); //$digitais = array(); //var_dump($images); die; foreach ($informations as $information) { $digitais[$information['DIGITAL']] = $information['DIGITAL']; } $images = array(); foreach ($digitais as $digital) { $documentoImagemAgg = Documento\Imagem\DocumentoImagemFactory::factory($digital); $imagensDoDocumento = $documentoImagemAgg->getImageList(); if (!empty($imagensDoDocumento)) { $images = array_merge($images, $imagensDoDocumento); } } if (empty($images)) { exit; } $urlPDF = sprintf("%s/modelos/imagens/getPDF.php?numero_processo=%s", __URLSERVERAPP__, $_REQUEST['numero_processo']); ?> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="/plugins/galleriffic/css/basic.css" type="text/css" /> <link rel="stylesheet" href="/plugins/galleriffic/css/galleriffic-5.css" type="text/css" /> <link rel="stylesheet" href="/plugins/galleriffic/css/white.css" type="text/css" />
<?php /* * Copyright 2008 ICMBio * Este arquivo é parte do programa SISICMBio * O SISICMBio é um software livre; você pode redistribuíção e/ou modifição dentro dos termos * da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); na versão * 2 da Licença. * * Este programa é distribuíção na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem * uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a * Licença Pública Geral GNU/GPL em português para maiores detalhes. * Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", * junto com este programa, se não, acesse o Portal do Software Público Brasileiro no endereço * www.softwarepublico.gov.br ou escreva para a Fundação do Software Livre(FSF) * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * */ /** * Restaurar Etiquetas */ // Verifica se existe permissão para restaurar etiquetas if (isset($_POST['DIGITAL']) && AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(1140502))) { $restore = new RecuperarEtiquetas($_POST); $restore->buildPaginas(); $restore->outputPDF(); }
/* * Copyright 2008 ICMBio * Este arquivo é parte do programa SISICMBio * O SISICMBio é um software livre; você pode redistribuíção e/ou modifição dentro dos termos * da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); na versão * 2 da Licença. * * Este programa é distribuíção na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem * uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a * Licença Pública Geral GNU/GPL em português para maiores detalhes. * Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", * junto com este programa, se não, acesse o Portal do Software Público Brasileiro no endereço * www.softwarepublico.gov.br ou escreva para a Fundação do Software Livre(FSF) * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * */ $allowForever = AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(301206)); $session = unserialize($_SESSION['sgdoc']['_upload']); if (Documento::validarDocumentoPecaProcesso($session['digital']) && !$allowForever) { die('<br /><br /><br /><span class="red"><strong>ESTE DOCUMENTO NÃO PODE RECEBER NOVAS IMAGENS ENQUANTO FOR PEÇA DE UM PROCESSO!</strong></span>'); } if (!Documento::validarDocumentoAreaDeTrabalho($session['digital']) && !$allowForever) { die('<br /><br /><br /><span class="red"><strong>ESTE DOCUMENTO NÃO ESTÁ NA SUA ÁREA DE TRABALHO!</strong></span>'); } if (Documento::validarDocumentoVinculadoDocumentoPrincipal($session['digital']) && !$allowForever) { die('<br /><br /><br /><span class="red"><strong>ESTE DOCUMENTO NÃO PODE RECEBER NOVAS IMAGENS ENQUANTO ESTIVER VINCULADO À OUTRO DOCUMENTO!</strong></span>'); } ?> <!DOCTYPE HTML> <html> <head>
/** * @return void */ public function load() { $userZendSession = Controlador::getInstance()->usuario; /** * @todo A carga abaixo deverá existir para que o recursos do SGDOC-e funcionem... * * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999999,'(SGDOCE) Integração Minuta Eletrônica','(SGDOCE) Integração Minuta Eletrônica',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999411,'(SGDOCE) Caixa de Minutas','(SGDOCE) Caixa de Minutas',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999402,'(SGDOCE) Mensagem','(SGDOCE) Mensagem',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999408,'(SGDOCE) Minuta Eletrônica','(SGDOCE) Minuta EletrÙnica',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999403,'(SGDOCE) Modelo Carimbo','(SGDOCE) Modelo Carimbo',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999409,'(SGDOCE) Modelo de Minuta','(SGDOCE) Modelo de Minuta',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999405,'(SGDOCE) Sequencial de Unidade','(SGDOCE) Sequencial de Unidade',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999406,'(SGDOCE) Tipo de Documento','(SGDOCE) Tipo de Documento',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999404,'(SGDOCE) Tipo de Prioridade','(SGDOCE) Tipo de Prioridade',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999407,'(SGDOCE) Vinculo de Prazo','(SGDOCE) Vinculo de Prazo',4); * * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999412,'(SGDOCE) Documento Eletrônico','(SGDOCE) Documento Eletrônico',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999413,'(SGDOCE) Dossiê Eletrônico','(SGDOCE) Dossiê Eletrônico',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999414,'(SGDOCE) Processo Eletrônico','(SGDOCE) Processo Eletrônico',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999415,'(SGDOCE) Artefato','(SGDOCE) Artefato',4); * insert into sgdoc.tb_recursos (id,nome,descricao,id_recurso_tipo) values(999999416,'(SGDOCE) Área de Trabalho - Documentos','(SGDOCE) Área de Trabalho - Documentos',4); */ if (!isset($_SESSION['USER'])) { $user = new \stdClass(); $user->sqUsuario = current($this->find($userZendSession->ID))->SQ_PESSOA; $user->noUsuario = $userZendSession->NOME; $user->sqTipoPessoa = 1; $user->ativo = 1; $user->sqPessoa = current($this->find($userZendSession->ID))->SQ_PESSOA; $user->nuCpf = $userZendSession->CPF; $user->sqSistema = 5; $user->sqUnidadeOrg = $userZendSession->ID_UNIDADE; //@todo consultar e recuperar ID-UNIDADE do corporativo $user->sqPerfil = 33; $user->sistemas = array(0 => array('noSistema' => 'Sistema de Gerenciamento de documentos eletrônicos', 'sgSistema' => 'SGDOC-e', 'txEnderecoImagem' => 'http://dev.sgdoc3.sisicmbio.icmbio.gov.br/img/sgdoc_logo.png')); $menusFilhos = array(); if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999411))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 411, 'sqMenuPai' => 410, 'noMenu' => 'Caixa de Minutas', 'sqFuncionalidade' => 431, 'stRegistroAtivo' => 1), 'Acao' => '/artefato/visualizar-caixa-minuta/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999402))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 402, 'sqMenuPai' => 401, 'noMenu' => 'Mensagem', 'sqFuncionalidade' => 402, 'stRegistroAtivo' => 1), 'Acao' => '/auxiliar/mensagem/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999408))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 408, 'sqMenuPai' => 401, 'noMenu' => 'Minuta Eletrônica', 'sqFuncionalidade' => 425, 'stRegistroAtivo' => 1), 'Acao' => '/artefato/minuta-eletronica/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999403))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 403, 'sqMenuPai' => 401, 'noMenu' => 'Modelo de Carimbo', 'sqFuncionalidade' => 406, 'stRegistroAtivo' => 1), 'Acao' => '/auxiliar/carimbo/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999409))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 409, 'sqMenuPai' => 401, 'noMenu' => 'Modelo de Minuta', 'sqFuncionalidade' => 428, 'stRegistroAtivo' => 1), 'Acao' => '/modelo-minuta/modelo-minuta/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999405))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 405, 'sqMenuPai' => 401, 'noMenu' => 'Sequencial de Unidade', 'sqFuncionalidade' => 414, 'stRegistroAtivo' => 1), 'Acao' => '/auxiliar/sequnidorg/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999406))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 406, 'sqMenuPai' => 401, 'noMenu' => 'Tipo de Documento', 'sqFuncionalidade' => 417, 'stRegistroAtivo' => 1), 'Acao' => '/auxiliar/tipodoc/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999404))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 404, 'sqMenuPai' => 401, 'noMenu' => 'Tipo de Prioridade', 'sqFuncionalidade' => 409, 'stRegistroAtivo' => 1), 'Acao' => '/auxiliar/prioridade/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999407))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 407, 'sqMenuPai' => 401, 'noMenu' => 'Vinculo de Prazo', 'sqFuncionalidade' => 421, 'stRegistroAtivo' => 1), 'Acao' => '/auxiliar/vincularprazo/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999412))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 412, 'sqMenuPai' => 401, 'noMenu' => 'Documento Eletrônico', 'sqFuncionalidade' => 421, 'stRegistroAtivo' => 1), 'Acao' => '/artefato/documento/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999413))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 413, 'sqMenuPai' => 401, 'noMenu' => 'Dossiê Eletrônico', 'sqFuncionalidade' => 421, 'stRegistroAtivo' => 1), 'Acao' => '/artefato/dossie/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999414))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 414, 'sqMenuPai' => 401, 'noMenu' => 'Processo Eletrônico', 'sqFuncionalidade' => 421, 'stRegistroAtivo' => 1), 'Acao' => '/artefato/processo-eletronico/index'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999415))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 415, 'sqMenuPai' => 401, 'noMenu' => 'Artefato', 'sqFuncionalidade' => 421, 'stRegistroAtivo' => 1), 'Acao' => '/artefato/consultar-artefato/consultar-artefato-padrao'); } if (AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999416))) { $menusFilhos[] = array('MenuFilho' => array('sqMenu' => 416, 'sqMenuPai' => 401, 'noMenu' => 'Área de Trabalho - Documentos', 'sqFuncionalidade' => 421, 'stRegistroAtivo' => 1), 'Acao' => '/artefato/area-trabalho/index'); } $user->MenuExterno = array(array('MenuPai' => array('sqMenu' => 410, 'sqMenuPai' => NULL, 'noMenu' => 'Minutas Eletrônicas', 'sqFuncionalidade' => NULL, 'stRegistroAtivo' => 1), 'MenuFilho' => $menusFilhos)); $user->Acl = array(array('funcionalidade' => 414, 'classe' => '/auxiliar/sequnidorg', 'metodo' => 'index'), array('funcionalidade' => 409, 'classe' => '/auxiliar/prioridade', 'metodo' => 'index'), array('funcionalidade' => 402, 'classe' => '/auxiliar/mensagem', 'metodo' => 'index'), array('funcionalidade' => 425, 'classe' => '/minuta/artefato', 'metodo' => 'index'), array('funcionalidade' => 406, 'classe' => '/auxiliar/carimbo', 'metodo' => 'index'), array('funcionalidade' => 427, 'classe' => '/minuta/modelo-minuta', 'metodo' => 'index'), array('funcionalidade' => 417, 'classe' => '/auxiliar/tipodoc', 'metodo' => 'index'), array('funcionalidade' => 421, 'classe' => '/auxiliar/vincularprazo', 'metodo' => 'index'), array('funcionalidade' => 432, 'classe' => '/minuta/visualizar-caixa-minuta', 'metodo' => 'index'), array('funcionalidade' => 441, 'classe' => '/artefato/documento', 'metodo' => 'index'), array('funcionalidade' => 442, 'classe' => '/artefato/dossie', 'metodo' => 'index'), array('funcionalidade' => 443, 'classe' => '/artefato/processo-eletronico', 'metodo' => 'index'), array('funcionalidade' => 444, 'classe' => '/artefato/consultar-artefato', 'metodo' => 'consultar-artefato-padrao'), array('funcionalidade' => 447, 'classe' => '/artefato/area-trabalho', 'metodo' => 'index')); $_SESSION['Messaging'] = array('packets'); $_SESSION['USER'] = $user; } }
protected function _saveImageData() { $session = \Session::get('_upload'); /** * Verifica se a operação é de exclusão e se tiver permissão, executa exclusão * Insere novo arquivo forçando a captura das informações do novo arquivo. */ if ($session['fg_operacao'] !== 'add') { //Unir? $isAdmin = \AclFactory::checaPermissao(\Controlador::getInstance()->acl, \Controlador::getInstance()->usuario, \DaoRecurso::getRecursoById(998)); //Se não for administrador, não permite a substituição if (!$isAdmin) { throw new \Exception("Não é permitido substituir o documento"); } $this->_deleteImagem(); //exclusão lógica na imagem anterior, caso exista } $absoluteFileName = ''; if ($absoluteFileName == '') { $absoluteFileName = $this->_uploadPath . $this->_img_name . '.pdf'; } //cria um md5 para nomear o arquivo da imagem (pdf) $md5 = md5($absoluteFileName); $absoluteNewFileName = $this->_uploadPath . $md5 . '.pdf'; $this->_img_name = $md5; rename($absoluteFileName, $absoluteNewFileName); $stmt = $this->_conn->prepare("\r\n INSERT INTO TB_DOCUMENTOS_IMAGEM \r\n ( DIGITAL, MD5, ORDEM, DES_HASH_FILE, IMG_WIDTH, IMG_HEIGHT, IMG_TYPE, \r\n ID_USUARIO, ID_UNIDADE, FLG_PUBLICO, TOTAL_PAGINAS, IMG_BYTES ) \r\n VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )\r\n "); $ordem = 0; $nrBytes = (int) filesize($absoluteNewFileName); $stmt->bindParam(1, $this->_digital, \PDO::PARAM_STR); $stmt->bindParam(2, $this->_img_name, \PDO::PARAM_STR); $stmt->bindParam(3, $ordem, \PDO::PARAM_INT); $stmt->bindParam(4, $this->_generateHashSha2FromFile($absoluteNewFileName), \PDO::PARAM_INT); $stmt->bindValue(5, self::IMG_WIDTH, \PDO::PARAM_INT); $stmt->bindValue(6, self::IMG_HEIGHT, \PDO::PARAM_INT); $stmt->bindValue(7, self::IMG_TYPE, \PDO::PARAM_INT); $stmt->bindParam(8, $this->_usuario, \PDO::PARAM_INT); $stmt->bindParam(9, $this->_unidade, \PDO::PARAM_INT); $stmt->bindParam(10, $session['fg_publico'], \PDO::PARAM_INT); $stmt->bindParam(11, $this->_listaArquivosBehavior->getQuantidadePaginas(), \PDO::PARAM_INT); $stmt->bindParam(12, $nrBytes, \PDO::PARAM_INT); $stmt->execute(); }
background-color: #B4F5B4; border-radius: 3px 3px 3px 3px; height: 20px; width: 0; } .percent { display: inline-block; left: 48%; position: absolute; top: 3px; } </style> <?php if (Config::factory()->getParam('extra.integration.sgdoc-e') == 'true' && AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999999999))) { ?> <script type="text/javascript" src="javascripts/integration.sgdoc-e.js"></script> <?php } ?> <script type="text/javascript"> $(document).ready(function() { var items = $('#menus img').length; var largura = (items * 48); $('#central').width(largura); sistemas.init(); }); var sistemas = { init: function()
/** * Verifica se o usuário atualmente logado é autorizado a ver/manipular * documentos confidenciais. Caso o documento em questão não seja Confidencial * o valor de retorno é verdadeiro. * Para o usuário possuir permissão, ele pode ser expressamente autorizado * ou ser um administrador do sistema. * @return boolean */ protected function _isConfidentialAuthorized() { //Se nao for confidencial, qualquer um é autorizado a ver if (!$this->_isConfidentialDocument()) { return true; } $isAdmin = \AclFactory::checaPermissao(\Controlador::getInstance()->acl, \Controlador::getInstance()->usuario, \DaoRecurso::getRecursoById(998)); $isAllowed = \AclFactory::checaPermissao(\Controlador::getInstance()->acl, \Controlador::getInstance()->usuario, \DaoRecurso::getRecursoById(999)); if ($isAdmin || $isAllowed) { return true; } //Se o documento é confidencial e o usuário não é Admin, não possui permissão return false; }
/** * @return controlar */ private function _prepareAcl() { if (!is_null($this->usuario) && !is_null($this->usuario->ID_UNIDADE)) { // atualizar informações da unidade do usuário na sessão // com as informações do banco, a menos que o usuário tenha trocado // Testar a existência de um cache de acl para o usuário if (!$this->cache->test('acl_' . $this->usuario->ID)) { $this->acl = AclFactory::createAcl($this->usuario); $this->cache->save($this->acl, 'acl_' . $this->usuario->ID, array('acl_usuario_' . $this->usuario->ID, 'acl_unidade_' . $this->usuario->ID_UNIDADE)); } else { $this->acl = $this->cache->load('acl_' . $this->usuario->ID); if ($this->usuario->ID_UNIDADE != $this->acl->getIdUnidade()) { if (!$this->acl->isTrocouUnidade() && !$this->usuario->TROCOU) { // id do cache e da session não batem, e usuário não trocou de unidade // limpar o cache e recriá-lo $this->cache->remove('acl_' . $this->usuario->ID); $this->cache->clean('matchingAnyTag', array('acl_usuario_' . $this->usuario->ID)); $this->acl = AclFactory::createAcl($this->usuario); $this->cache->save($this->acl, 'acl_' . $this->usuario->ID, array('acl_usuario_' . $this->usuario->ID, 'acl_unidade_' . $this->usuario->ID_UNIDADE)); // limpar } } $this->usuario = $this->acl->updateSession(); } // Forçar permissão de troca de unidades pro usuário que já trocou de unidade if ($this->acl->isTrocouUnidade()) { $this->acl->allow($this->usuario->ID, 115); } } return $this; }
/** * @return void * @param array $pages */ public function generatePDF($pages, $high = false, $type = 'jpg') { $allow = AclFactory::checaPermissao(Controlador::getInstance()->acl, Controlador::getInstance()->usuario, DaoRecurso::getRecursoById(999)); $pdf = new PDF_Bookmark(); $pdf->SetMargins(0, 0, 0); $pdf->SetFont('Arial', '', 12); foreach ($pages as $key => $page) { if (!$allow && $page['FLG_PUBLICO'] == 0) { continue; } $pdf->author = utf8_decode(__CABECALHO_ORGAO__); $pdf->title = 'Sistema Gerenciador de Documentos - v' . __VERSAO__; $pdf->creator = $pdf->title . ' (' . utf8_decode(Controlador::getInstance()->usuario->NOME) . ')'; $imagePath = sprintf('%s/cache/%s/%s/%s_view_%d.jpg', __CAM_UPLOAD__, $this->generateLote($page['DIGITAL']), $page['DIGITAL'], $page['MD5'], $high ? self::Q_HIGH : self::Q_LOW); if ($type == 'png') { $imagePath = sprintf('%s/%s/%s/%s.png', __CAM_UPLOAD__, $this->generateLote($page['DIGITAL']), $page['DIGITAL'], $page['MD5']); } if (!is_file($imagePath)) { $imagePath = 'imagens/imagem_quebrada_a4.jpg'; } $typeToUp = strtoupper($type); if ($page["IMG_WIDTH"] < $page["IMG_HEIGHT"]) { $pdf->AddPage("P", "A4"); $pdf->Image($imagePath, 0, 0, 210, 297, "{$typeToUp}"); } else { $pdf->AddPage("L", "A4"); $pdf->Image($imagePath, 0, 0, 297, 210, "{$typeToUp}"); } $pdf->Bookmark('Pag. ' . $key + 1); } $pdf->Output("", 'I'); }