Beispiel #1
0
 /**
  * Votar un comentario.
  * @param int $comentario ID del comentario a votar.
  * @param int $voto 1 para positivo, -1 para negativo.
  */
 public function action_voto_comentario($comentario, $voto)
 {
     // Verificamos usuario logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder votar comentario en posts.';
         Request::redirect('/usuario/login');
     }
     $comentario = (int) $comentario;
     // Obtenemos el voto.
     $voto = $voto == 1;
     // Cargamos el comentario.
     $model_comentario = new Model_Post_Comentario($comentario);
     // Verificamos existencia.
     if (!is_array($model_comentario->as_array())) {
         $_SESSION['flash_error'] = 'El comentario que deseas votar no se encuentra disponible.';
         Request::redirect('/');
     }
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_VOTAR)) {
         $_SESSION['flash_error'] = 'El comentario que deseas votar no se encuentra disponible.';
         Request::redirect('/post/index/' . $model_comentario->post_id);
     }
     // Post donde se encuentra el comentario.
     $model_post = $model_comentario->post();
     // Verifico estado del post.
     if ($model_post->estado !== Model_Post::ESTADO_ACTIVO) {
         $_SESSION['flash_error'] = 'El comentario que deseas votar no se encuentra disponible.';
         Request::redirect('/post/index/' . $model_comentario->post_id);
     }
     unset($model_post);
     // Verifico autor del post.
     if ($model_comentario->usuario_id == Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'El comentario que deseas votar no se encuentra disponible.';
         Request::redirect('/post/index/' . $model_comentario->post_id);
     }
     // Verifico si ya votó.
     if ($model_comentario->ya_voto(Usuario::$usuario_id)) {
         $_SESSION['flash_error'] = 'El comentario que deseas votar no se encuentra disponible.';
         Request::redirect('/post/index/' . $model_comentario->post_id);
     }
     // Agrego el voto.
     $model_comentario->votar(Usuario::$usuario_id, $voto);
     // Agrego el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_comentario->usuario_id) {
         $model_suceso->crear($model_comentario->usuario_id, 'post_comentario_voto', TRUE, $comentario, Usuario::$usuario_id, (int) $voto);
         $model_suceso->crear(Usuario::$usuario_id, 'post_comentario_voto', FALSE, $comentario, Usuario::$usuario_id, (int) $voto);
     } else {
         $model_suceso->crear($model_comentario->usuario_id, 'post_comentario_voto', FALSE, $comentario, Usuario::$usuario_id, (int) $voto);
     }
     $_SESSION['flash_success'] = '<b>&iexcl;Felicitaciones!</b> El comentario se ha votado correctamente.';
     Request::redirect('/post/index/' . $model_comentario->post_id);
 }