* 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>
 /**
  * @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;
 }