public function assert(Core_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null)
 {
     $auth = Zend_Auth::getInstance();
     if (!$auth->hasIdentity()) {
         return false;
     }
     $controller = Controlador::getInstance();
     $usuario = $controller->usuario;
     $somenteUltimo = false;
     $contexto = $resource->getContexto($somenteUltimo);
     // Se houver um contexto, e o usuario tem permissao para o recurso
     if (!is_null($contexto)) {
         // Checa se o usuario tem permissao de acessar o recurso
         if (!$controller->cache->test('privilegio_' . $usuario->ID . '_' . $resource->id)) {
             // não existe o cache, pegar o valor do banco
             $privilegio = DaoRecurso::getPrivilegioByUsuario($usuario, $resource);
             $controller->cache->save($privilegio, 'privilegio_' . $usuario->ID . '_' . $resource->id, array('acl_usuario_' . $usuario->ID, 'acl_unidade_' . $usuario->ID_UNIDADE));
         } else {
             $privilegio = $controller->cache->load('privilegio_' . $usuario->ID . '_' . $resource->id);
         }
         if ($privilegio) {
             foreach ($contexto as $umContexto) {
                 // checa se o objeto do contexto tem a mesma area de trabalho do usuario
                 if ($umContexto['id_unid_area_trabalho'] == $usuario->ID_UNIDADE) {
                     return true;
                 }
             }
         }
     }
     return false;
 }
 public function assert(Core_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null)
 {
     $auth = Zend_Auth::getInstance();
     if (!$auth->hasIdentity()) {
         return false;
     }
     $controller = Controlador::getInstance();
     $usuario = $controller->usuario;
     if (!$controller->cache->test('privilegio_' . $usuario->ID . '_' . $resource->id)) {
         // não existe o cache, pegar o valor do banco
         $privilegio = DaoRecurso::getPrivilegioByUsuario($usuario, $resource);
         $controller->cache->save($privilegio, 'privilegio_' . $usuario->ID . '_' . $resource->id, array('acl_usuario_' . $usuario->ID, 'acl_unidade_' . $usuario->ID_UNIDADE));
     } else {
         $privilegio = $controller->cache->load('privilegio_' . $usuario->ID . '_' . $resource->id);
     }
     // Checa se o usuario tem permissao de acessar o recurso incondicionalmente
     if ($acl->has($resource) && $privilegio) {
         return true;
     } else {
         $contexto = $resource->getContexto();
         if (!is_null($contexto) && count($contexto) > 0) {
             // Existe um contexto, avaliar se o id_unid_area_trabalho do objeto contexto == ID_UNIDADE do usuario logado
             return $contexto['id_unid_area_trabalho'] == $usuario->ID_UNIDADE;
         } else {
             // Não existe objeto de contexto, retorna true se recurso original da requisicao for AREA DE TRABALHO
             return Controlador::getInstance()->recurso->id == 3;
         }
     }
     return false;
 }
Ejemplo n.º 3
0
 /**
  * Creates an ACL for a specific user
  * @param stdClass $usuario - usuario logado, recebido do Zend_Auth
  * @return Core_Acl
  */
 public static function createAcl($usuario)
 {
     //Lets assume we have a model for the page_privileges with a method like this
     //which would return PagePrivilege objects with the page_id passed as the param.
     $privilegios_unidade = DaoPrivilegio::getPrivilegiosPorUnidade((int) $usuario->ID_UNIDADE);
     $privilegios_usuario = DaoPrivilegioUsuario::getPrivilegiosPorUsuario((int) $usuario->ID);
     $acl = new Core_Acl();
     $acl->addRole(new Zend_Acl_Role($usuario->ID));
     $acl->setIdUnidade($usuario->ID_UNIDADE);
     $acl->setNomeUnidade($usuario->DIRETORIA);
     $acl->setTrocouUnidade($usuario->TROCOU ? true : false);
     foreach ($privilegios_unidade as $privilege) {
         $recurso = DaoRecurso::getRecursoById($privilege['ID_RECURSO']);
         if (!$acl->has($recurso)) {
             $acl->addResource($recurso);
         }
         // Checa pela presenca de assertion
         if ($recurso->hasClasseAssertion()) {
             $acl->allow($usuario->ID, $recurso, null, new $recurso->classe_assertion());
         } else {
             if ($privilege['PERMISSAO'] == 1) {
                 $acl->allow($usuario->ID, $recurso);
             } else {
                 $acl->deny($usuario->ID, $recurso);
             }
         }
     }
     foreach ($privilegios_usuario as $privilege2) {
         $recurso = DaoRecurso::getRecursoById($privilege2['ID_RECURSO']);
         // @todo foi adicionado a condicao !NULL para corrigir possivel bug, analizar!
         if (!is_null($recurso) && !$acl->has($recurso)) {
             $acl->addResource($recurso);
         }
         // @todo foi adicionado a condicao !NULL para corrigir possivel bug, analizar!
         // Checa pela presenca de assertion
         if (!is_null($recurso) && $recurso->hasClasseAssertion()) {
             $acl->allow($usuario->ID, $recurso, null, new $recurso->classe_assertion());
         } else {
             if ($privilege2['PERMISSAO'] == "1") {
                 $acl->allow($usuario->ID, $recurso);
             } else {
                 $acl->deny($usuario->ID, $recurso);
             }
         }
     }
     if ($acl->isTrocouUnidade()) {
         $acl->allow($usuario->ID, 115);
     }
     return $acl;
 }
Ejemplo n.º 4
0
 public function assert(Core_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null)
 {
     // Secondly, we need a authenticated user
     $auth = Zend_Auth::getInstance();
     if (!$auth->hasIdentity()) {
         return false;
     }
     $controller = Controlador::getInstance();
     $usuario = $controller->usuario;
     $protocolizadora = DaoUnidade::getUnidade($usuario->ID_UNIDADE, 'up');
     if (intval($protocolizadora) == 1) {
         if (!$controller->cache->test('privilegio_' . $usuario->ID . '_' . $resource->id)) {
             // não existe o cache, pegar o valor do banco
             $privilegio = DaoRecurso::getPrivilegioByUsuario($usuario, $resource);
             $controller->cache->save($privilegio, 'privilegio_' . $usuario->ID . '_' . $resource->id, array('acl_usuario_' . $usuario->ID, 'acl_unidade_' . $usuario->ID_UNIDADE));
         } else {
             $privilegio = $controller->cache->load('privilegio_' . $usuario->ID . '_' . $resource->id);
         }
         return $privilegio;
     } else {
         return false;
     }
 }
 /**
  * @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' ) );
 }
 * 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
 * */
$controller = Controlador::getInstance();
$auth = $controller->usuario;
$file = 'detalhar_processos.php';
$name_recurso = str_replace('.', '_', $file);
if (!$controller->cache->test('recurso_' . $name_recurso)) {
    $recurso = DaoRecurso::getRecursoByUrl($file);
    if (isset($recurso->id)) {
        $controller->cache->save($recurso, 'recurso_' . $name_recurso, array('recurso_' . $recurso->id, 'paginas'));
    } else {
        $recurso = null;
    }
} else {
    $recurso = $controller->cache->load('recurso_' . $name_recurso);
}
$controller->setContexto(null);
$botoes = Util::getMenus($auth, $recurso, $controller->acl);
foreach ($recurso->dependencias as $arquivo) {
    include 'interfaces/' . $arquivo;
}
?>
<html>
Ejemplo n.º 7
0
<?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();
}
Ejemplo n.º 9
0
 /**
  * @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');
 }
 /**
  * @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();
 }
Ejemplo n.º 12
0
                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;
 }
Ejemplo n.º 14
0
 /**
  * @return Controlador
  */
 private function _check()
 {
     if (is_null($this->usuario) && !strstr($this->_view, 'captcha.php') && !strstr($this->_view, 'modelos/login/login.php') && !strstr($this->_view, 'recuperar_senha_usuario.php') && !strstr($this->_view, 'webservices/') && !strstr($this->_view, 'logoff.php') && !strstr($this->_view, 'modelos/prazos/verificar_prazos_pendentes.php') && !strstr($this->_view, 'modelos/usuarios/recuperar_senha_usuario.php')) {
         $this->_view = 'identificacao.php';
     }
     if (!is_null($this->usuario)) {
         if (is_null($this->usuario->ID_UNIDADE) && $this->_view != 'logoff.php') {
             if (count($this->unidades) > 1) {
                 $this->_view = 'usuario_selecionar_unidade.php';
             } else {
                 if (count($this->unidades) == 1) {
                     $this->usuario->DIRETORIA = current($this->unidades)->NOME;
                     $this->usuario->ID_UNIDADE = current($this->unidades)->ID;
                     $this->usuario->ID_UNIDADE_ORIGINAL = current($this->unidades)->ID;
                     Zend_Auth::getInstance()->getStorage()->write($this->usuario);
                     $this->_prepareAcl();
                 } else {
                     $this->_view = 'usuario_sem_unidade_vinculada.php';
                 }
             }
         }
         if ($this->_view == '' || $this->_view == '/' || $this->_view == 'identificacao.php') {
             $this->_view = 'sistemas.php';
         }
         /*
          * Pegar o id do recurso que o usuário está tentando acessar
          * isso não deve ser feito no caso do recurso ser login ou logoff
          */
         if (substr_count($this->_view, '/') == 0 && array_search($this->_view, $this->_excessoes) === false) {
             $name_recurso = str_replace('.', '_', $this->_view);
             if (!$this->cache->test('recurso_' . $name_recurso)) {
                 $this->recurso = DaoRecurso::getRecursoByUrl($this->_view);
                 if (isset($this->recurso->id)) {
                     $this->cache->save($this->recurso, 'recurso_' . $name_recurso, array('recurso_' . $this->recurso->id, 'paginas'));
                 } else {
                     $this->recurso = null;
                 }
             } else {
                 $this->recurso = $this->cache->load('recurso_' . $name_recurso);
             }
             /*
              * Verificacao de ACL ocorre abaixo
              * mas não deve ocorrer a menos que o usuário esteja requisitando
              * um recurso contido na pasta interfaces
              * Não existe verificacao de Acl para a pasta modelos/
              */
             if (isset($this->recurso->id)) {
                 if ($this->acl->has($this->recurso->id)) {
                     if (!$this->acl->isAllowed($this->usuario->ID, $this->recurso)) {
                         $this->_view = 'denied.php';
                     } else {
                         // nao recusou o acl, montar os submenus do recurso
                         $this->botoes = Util::getMenus($this->usuario, $this->recurso, $this->acl);
                     }
                 } else {
                     // TODO: Aqui negará novamente, pois se o recurso não existe no acl
                     // deve ser negado por segurança
                     $this->_view = 'denied.php';
                 }
             } else {
                 $this->_view = 'denied.php';
             }
         }
     }
     return $this;
 }
 /**
  * @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()));
     }
 }
// 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)) {
    ?>
/*
 * 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>