예제 #1
0
 function datos_get($filename)
 {
     $id = $this->input->get('id');
     $token = $this->input->get('token');
     //Chequeamos los permisos en el frontend
     $file = Doctrine_Query::create()->from('File f, f.Tramite t, t.Etapas e, e.Usuario u')->where('f.id = ? AND f.llave = ? AND u.id = ?', array($id, $token, UsuarioSesion::usuario()->id))->fetchOne();
     if (!$file) {
         //Chequeamos permisos en el backend
         $file = Doctrine_Query::create()->from('File f, f.Tramite.Proceso.Cuenta.UsuariosBackend u')->where('f.id = ? AND f.llave = ? AND u.id = ? AND (u.rol="super" OR u.rol="operacion" OR u.rol="seguimiento")', array($id, $token, UsuarioBackendSesion::usuario()->id))->fetchOne();
         if (!$file) {
             echo 'Usuario no tiene permisos para ver este archivo.';
             exit;
         }
     }
     $path = 'uploads/datos/' . $file->filename;
     if (preg_match('/^\\.\\./', $file->filename)) {
         echo 'Archivo invalido';
         exit;
     }
     if (!file_exists($path)) {
         echo 'Archivo no existe';
         exit;
     }
     header('Content-Type: ' . get_mime_by_extension($path));
     header('Content-Length: ' . filesize($path));
     readfile($path);
 }
예제 #2
0
 private function force_email()
 {
     if (uri_string() != 'cuentas/editar' && uri_string() != 'cuentas/editar_form' && uri_string() != 'autenticacion/logout' && UsuarioSesion::usuario() && UsuarioSesion::usuario()->registrado && !UsuarioSesion::usuario()->email) {
         $this->session->set_flashdata('redirect', current_url());
         redirect('cuentas/editar');
     }
 }
예제 #3
0
 public function index()
 {
     $pendientes = Doctrine::getTable('Etapa')->findPendientes(UsuarioSesion::usuario()->id);
     if (UsuarioSesion::usuario()->registrado && $pendientes->count() > 0) {
         redirect('etapas/inbox');
     } else {
         redirect('tramites/disponibles');
     }
 }
예제 #4
0
 public function iniciar($proceso_id)
 {
     $proceso = Doctrine::getTable('Proceso')->find($proceso_id);
     $this->proceso_id = $proceso->id;
     $this->pendiente = 1;
     $etapa = new Etapa();
     $etapa->tarea_id = $proceso->getTareaInicial(UsuarioSesion::usuario()->id)->id;
     $etapa->pendiente = 1;
     $this->Etapas[] = $etapa;
     $this->save();
     $etapa->asignar(UsuarioSesion::usuario()->id);
 }
예제 #5
0
 public function eliminar($tramite_id)
 {
     $tramite = Doctrine::getTable('Tramite')->find($tramite_id);
     if ($tramite->Etapas->count() > 1) {
         echo 'Tramite no se puede eliminar, ya ha avanzado mas de una etapa';
         exit;
     }
     if (UsuarioSesion::usuario()->id != $tramite->Etapas[0]->usuario_id) {
         echo 'Usuario no tiene permisos para eliminar este tramite';
         exit;
     }
     $tramite->delete();
     redirect($this->input->server('HTTP_REFERER'));
 }
예제 #6
0
 public function iniciar($proceso_id)
 {
     // Aumentar el contador de Proceso
     Doctrine_Query::create()->update('Proceso p')->set("proc_cont", "proc_cont + 1")->where("p.id = ?", $proceso_id)->execute();
     $proceso = Doctrine::getTable('Proceso')->find($proceso_id);
     $this->proceso_id = $proceso->id;
     $this->pendiente = 1;
     $this->tramite_proc_cont = $proceso->proc_cont;
     $etapa = new Etapa();
     $etapa->tarea_id = $proceso->getTareaInicial(UsuarioSesion::usuario()->id)->id;
     $etapa->pendiente = 1;
     $this->Etapas[] = $etapa;
     $this->save();
     $etapa->asignar(UsuarioSesion::usuario()->id);
 }
예제 #7
0
 function firma_post()
 {
     $id = $this->input->post('id');
     $llave_firma = $this->input->post('token');
     $documento = $this->input->post('documento');
     if (!$id || !$llave_firma || !$documento) {
         $resultado = new stdClass();
         $resultado->status = 1;
         $resultado->error = 'Faltan parametros';
         echo json_encode($resultado);
         exit;
     }
     $file = Doctrine_Query::create()->from('File f, f.Tramite.Etapas.Usuario u')->where('f.id = ? AND f.tipo = ? AND f.llave_firma = ? AND u.id = ?', array($id, 'documento', $llave_firma, UsuarioSesion::usuario()->id))->fetchOne();
     $resultado = new stdClass();
     if (!$file) {
         $resultado->status = 1;
         $resultado->error = 'Token no corresponde';
     } else {
         $resultado->status = 0;
         file_put_contents('uploads/documentos/' . $file->filename, base64_decode($documento));
     }
     echo json_encode($resultado);
 }
예제 #8
0
 public function cerrar()
 {
     //Si ya fue cerrada, retornamos inmediatamente.
     if (!$this->pendiente) {
         return;
     }
     if ($this->Tarea->almacenar_usuario) {
         $dato = Doctrine::getTable('DatoSeguimiento')->findOneByNombreAndEtapaId($this->Tarea->almacenar_usuario_variable, $this->id);
         if (!$dato) {
             $dato = new DatoSeguimiento();
         }
         $dato->nombre = $this->Tarea->almacenar_usuario_variable;
         $dato->valor = UsuarioSesion::usuario()->id;
         $dato->etapa_id = $this->id;
         $dato->save();
     }
     //Ejecutamos los eventos
     $eventos = Doctrine_Query::create()->from('Evento e')->where('e.tarea_id = ? AND e.instante = ? AND e.paso_id IS NULL', array($this->Tarea->id, 'despues'))->execute();
     foreach ($eventos as $e) {
         $r = new Regla($e->regla);
         if ($r->evaluar($this->id)) {
             $e->Accion->ejecutar($this);
         }
     }
     //Cerramos la etapa
     $this->pendiente = 0;
     $this->ended_at = date('Y-m-d H:i:s');
     $this->save();
 }
예제 #9
0
 public function ver($etapa_id, $secuencia = 0)
 {
     $etapa = Doctrine::getTable('Etapa')->find($etapa_id);
     if (UsuarioSesion::usuario()->id != $etapa->usuario_id) {
         echo 'No tiene permisos para hacer seguimiento a este tramite.';
         exit;
     }
     $paso = $etapa->getPasoEjecutable($secuencia);
     $data['etapa'] = $etapa;
     $data['paso'] = $paso;
     $data['secuencia'] = $secuencia;
     $data['sidebar'] = 'participados';
     $data['title'] = 'Historial - ' . $etapa->Tarea->nombre;
     $data['content'] = 'etapas/ver';
     $this->load->view('template', $data);
 }
예제 #10
0
         }
         echo $tramite_descripcion != '' ? $tramite_descripcion : $t->Proceso->nombre;
     ?>
 </td>
 <td>
     <?php
     $etapas_array = array();
     foreach ($t->getEtapasActuales() as $e)
         $etapas_array[] = $e->Tarea->nombre;
     echo implode(', ', $etapas_array);
     ?>
 </td>
 <td class="time"><?= strftime('%d.%b.%Y', mysql_to_unix($t->updated_at)) ?><br /><?= strftime('%H:%M:%S', mysql_to_unix($t->updated_at)) ?></td>
 <td><?= $t->pendiente ? 'Pendiente' : 'Completado' ?></td>
 <td class="actions">
     <?php $etapas = $t->getEtapasParticipadas(UsuarioSesion::usuario()->id) ?>
     <?php if (count($etapas) == 3e4354) : ?>
         <a href="<?= site_url('etapas/ver/' . $etapas[0]->id) ?>" class="btn btn-primary">Ver historial</a>
     <?php else: ?>
         <div class="btn-group">
             <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
                 Ver historial
                 <span class="caret"></span>
             </a>
             <ul class="dropdown-menu">
                 <?php foreach ($etapas as $e): ?>
                     <li><a href="<?= site_url('etapas/ver/' . $e->id) ?>"><?= $e->Tarea->nombre ?></a></li>
                 <?php endforeach ?>
             </ul>
         </div>
     <?php endif ?>
예제 #11
0
파일: etapas.php 프로젝트: e-gob/SIMPLE
 public function descargar_form()
 {
     if (!Cuenta::cuentaSegunDominio()->descarga_masiva) {
         echo 'Servicio no tiene permisos para descargar.';
         exit;
     }
     if (!UsuarioSesion::usuario()->registrado) {
         echo 'Usuario no tiene permisos para descargar.';
         exit;
     }
     $tramites = $this->input->post('tramites');
     $opcionesDescarga = $this->input->post('opcionesDescarga');
     $tramites = explode(",", $tramites);
     $ruta_documentos = 'uploads/documentos/';
     $ruta_generados = 'uploads/datos/';
     $ruta_tmp = 'uploads/tmp/';
     $fecha = new DateTime();
     $fecha = date_format($fecha, "Y-m-d");
     $tipoDocumento = "";
     switch ($opcionesDescarga) {
         case 'documento':
             $tipoDocumento = 'documento';
             break;
         case 'dato':
             $tipoDocumento = 'dato';
             break;
     }
     //Recorriendo los trámites
     $this->load->library('zip');
     foreach ($tramites as $t) {
         if (empty($tipoDocumento)) {
             $files = Doctrine::getTable('File')->findByTramiteId($t);
         } else {
             $files = Doctrine::getTable('File')->findByTramiteIdAndTipo($t, $tipoDocumento);
         }
         if (count($files) > 0) {
             //Recorriendo los archivos
             foreach ($files as $f) {
                 $tr = Doctrine::getTable('Tramite')->find($t);
                 $participado = $tr->usuarioHaParticipado(UsuarioSesion::usuario()->id);
                 if (!$participado) {
                     echo 'Usuario no ha participado en el trámite.';
                     exit;
                 }
                 $nombre_documento = $tr->id;
                 $tramite_nro = '';
                 foreach ($tr->getValorDatoSeguimiento() as $tra_nro) {
                     if ($tra_nro->valor == $f->filename) {
                         $nombre_documento = $tra_nro->nombre;
                     }
                     if ($tra_nro->nombre == 'tramite_ref') {
                         $tramite_nro = $tra_nro->valor;
                     }
                 }
                 if ($f->tipo == 'documento' && !empty($nombre_documento)) {
                     $path = $ruta_documentos . $f->filename;
                     $tramite_nro = $tramite_nro != '' ? $tramite_nro : $tr->Proceso->nombre;
                     $tramite_nro = str_replace(" ", "", $tramite_nro);
                     $nombre_archivo = pathinfo($path, PATHINFO_FILENAME);
                     $ext = pathinfo($path, PATHINFO_EXTENSION);
                     $new_file = $ruta_tmp . $nombre_documento . "." . $nombre_archivo . "." . $tramite_nro . "." . $ext;
                     copy($path, $new_file);
                     $this->zip->read_file($new_file);
                     //Eliminación del archivo para no ocupar espacio en disco
                     unlink($new_file);
                 } elseif ($f->tipo == 'dato' && !empty($nombre_documento)) {
                     $path = $ruta_generados . $f->filename;
                     $this->zip->read_file($path);
                 }
             }
             if (count($tramites) > 1) {
                 $tr = Doctrine::getTable('Tramite')->find($t);
                 $tramite_nro = '';
                 foreach ($tr->getValorDatoSeguimiento() as $tra_nro) {
                     if ($tra_nro->nombre == 'tramite_ref') {
                         $tramite_nro = $tra_nro->valor;
                     }
                 }
                 $tramite_nro = $tramite_nro != '' ? $tramite_nro : $tr->Proceso->nombre;
                 $nombre = $fecha . "_" . $t . "_" . $tramite_nro;
                 //creando un zip por cada trámite
                 $this->zip->archive($ruta_tmp . $nombre . '.zip');
                 $this->zip->clear_data();
             }
         }
     }
     if (count($tramites) > 1) {
         foreach ($tramites as $t) {
             $tr = Doctrine::getTable('Tramite')->find($t);
             $tramite_nro = '';
             foreach ($tr->getValorDatoSeguimiento() as $tra_nro) {
                 if ($tra_nro->nombre == 'tramite_ref') {
                     $tramite_nro = $tra_nro->valor;
                 }
             }
             $tramite_nro = $tramite_nro != '' ? $tramite_nro : $tr->Proceso->nombre;
             $nombre = $fecha . "_" . $t . "_" . $tramite_nro;
             $this->zip->read_file($ruta_tmp . $nombre . '.zip');
         }
         //Eliminando los archivos antes de descargar
         foreach ($tramites as $t) {
             $tr = Doctrine::getTable('Tramite')->find($t);
             $tramite_nro = '';
             foreach ($tr->getValorDatoSeguimiento() as $tra_nro) {
                 if ($tra_nro->nombre == 'tramite_ref') {
                     $tramite_nro = $tra_nro->valor;
                 }
             }
             $tramite_nro = $tramite_nro != '' ? $tramite_nro : $tr->Proceso->nombre;
             $nombre = $fecha . "_" . $t . "_" . $tramite_nro;
             unlink($ruta_tmp . $nombre . '.zip');
         }
         $this->zip->download('tramites.zip');
     } else {
         $tr = Doctrine::getTable('Tramite')->find($tramites);
         $tramite_nro = '';
         foreach ($tr->getValorDatoSeguimiento() as $tra_nro) {
             if ($tra_nro->nombre == 'tramite_ref') {
                 $tramite_nro = $tra_nro->valor;
             }
         }
         $tramite_nro = $tramite_nro != '' ? $tramite_nro : $tr->Proceso->nombre;
         $nombre = $fecha . "_" . $t . "_" . $tramite_nro;
         $this->zip->download($nombre . '.zip');
     }
 }
예제 #12
0
파일: cuentas.php 프로젝트: e-gob/SIMPLE
 function check_email($email)
 {
     $usuario = Doctrine::getTable('Usuario')->findOneByEmailAndOpenId($email, 0);
     if (!$usuario || $usuario == UsuarioSesion::usuario()) {
         return TRUE;
     }
     $this->form_validation->set_message('check_email', 'Correo electrónico ya esta en uso por otro usuario.');
     return FALSE;
 }
예제 #13
0
                echo site_url('tramites/iniciar/' . $p->id);
                ?>
"><?php 
                echo $p->nombre;
                ?>
</a>
                        <?php 
            }
            ?>
                    <?php 
        }
        ?>
                </td>
                <td class="actions">
                    <?php 
        if ($p->canUsuarioIniciarlo(UsuarioSesion::usuario()->id)) {
            ?>
                    <a href="<?php 
            echo site_url('tramites/iniciar/' . $p->id);
            ?>
" class="btn btn-primary preventDoubleRequest"><i class="icon-file icon-white"></i> Iniciar</a>
                    <?php 
        } else {
            ?>
                        <?php 
            if ($p->getTareaInicial()->acceso_modo == 'claveunica') {
                ?>
                        <a href="<?php 
                echo site_url('autenticacion/login_openid');
                ?>
?redirect=<?php 
예제 #14
0
                    <div class="span3">
                        <ul id="sideMenu" class="nav nav-list">    
                            <li class="iniciar <?php 
echo isset($sidebar) && $sidebar == 'disponibles' ? 'active' : '';
?>
"><a href="<?php 
echo site_url('tramites/disponibles');
?>
">Iniciar trámite</a></li>
                            <?php 
if (UsuarioSesion::usuario()->registrado) {
    ?>
                                <?php 
    $npendientes = Doctrine::getTable('Etapa')->findPendientes(UsuarioSesion::usuario()->id, Cuenta::cuentaSegunDominio())->count();
    $nsinasignar = Doctrine::getTable('Etapa')->findSinAsignar(UsuarioSesion::usuario()->id, Cuenta::cuentaSegunDominio())->count();
    $nparticipados = Doctrine::getTable('Tramite')->findParticipados(UsuarioSesion::usuario()->id, Cuenta::cuentaSegunDominio())->count();
    ?>
                                <li class="<?php 
    echo isset($sidebar) && $sidebar == 'inbox' ? 'active' : '';
    ?>
"><a href="<?php 
    echo site_url('etapas/inbox');
    ?>
">Bandeja de Entrada (<?php 
    echo $npendientes;
    ?>
)</a></li>
                                <?php 
    if ($nsinasignar) {
        ?>
<li class="<?php