コード例 #1
0
ファイル: perfil.php プロジェクト: 4bs4/marifa
 /**
  * Denunciamos a un usuario.
  * @param int $usuario ID del usuario a denunciar.
  */
 public function action_denunciar($usuario)
 {
     // Cargamos el usuario.
     $this->cargar_usuario($usuario);
     // Verifico estar logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes estar logueado para poder realizar denuncias.';
         Request::redirect('/usuario/login');
     }
     // Verificamos no sea uno mismo.
     if (Usuario::$usuario_id == $this->usuario->id) {
         $_SESSION['flash_error'] = 'El usuario al cual quieres denunciar no se encuentra disponible.';
         Request::redirect('/perfil/index/' . $this->usuario->nick);
     }
     // Verifico el estado.
     if ($this->usuario->estado !== Model_Usuario::ESTADO_ACTIVA) {
         $_SESSION['flash_error'] = 'El usuario al cual quieres denunciar no se encuentra disponible.';
         Request::redirect('/perfil/index/' . $this->usuario->nick);
     }
     // Asignamos el título.
     $this->template->assign('title', 'Denunciar usuario');
     // Cargamos la vista.
     $view = View::factory('perfil/denunciar');
     $view->assign('usuario', $this->usuario->nick);
     // Elementos por defecto.
     $view->assign('motivo', '');
     $view->assign('comentario', '');
     $view->assign('error_motivo', FALSE);
     $view->assign('error_comentario', FALSE);
     if (Request::method() == 'POST') {
         // Seteamos sin error.
         $error = FALSE;
         // Obtenemos los campos.
         $motivo = isset($_POST['motivo']) ? (int) $_POST['motivo'] : NULL;
         $comentario = isset($_POST['comentario']) ? preg_replace('/\\s+/', '', trim($_POST['comentario'])) : NULL;
         // Valores para cambios.
         $view->assign('motivo', $motivo);
         $view->assign('comentario', $comentario);
         // Verifico el tipo.
         if (!in_array($motivo, array(0, 1, 2, 3, 4, 5))) {
             $error = TRUE;
             $view->assign('error_motivo', 'No ha seleccionado un motivo válido.');
         }
         // Verifico la razón si corresponde.
         if ($motivo === 5) {
             if (!isset($comentario[10]) || isset($comentario[400])) {
                 $error = TRUE;
                 $view->assign('error_contenido', 'La descripción de la denuncia debe tener entre 10 y 400 caracteres.');
             }
         } else {
             if (isset($comentario[400])) {
                 $error = TRUE;
                 $view->assign('error_contenido', 'La descripción de la denuncia debe tener entre 10 y 400 caracteres.');
             }
             $comentario = NULL;
         }
         if (!$error) {
             // Creo la denuncia.
             $id = $this->usuario->denunciar(Usuario::$usuario_id, $motivo, $comentario);
             // Envio el suceso
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id != $this->usuario->id) {
                 $model_suceso->crear($this->usuario->id, 'usuario_denuncia_crear', TRUE, $id);
                 $model_suceso->crear(Usuario::$usuario_id, 'usuario_denuncia_crear', FALSE, $id);
             } else {
                 $model_suceso->crear($this->usuario->id, 'usuario_denuncia_crear', FALSE, $id);
             }
             // Informo el resultado.
             $_SESSION['flash_success'] = 'El usuario ha sido denunciado correctamente.';
             Request::redirect('/perfil/index/' . $this->usuario->nick);
         }
     }
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $view->parse());
     unset($view);
     // Seteamos el titulo.
     $this->template->assign('title', 'Perfil - ' . $this->usuario->get('nick'));
 }