/** * 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>¡Felicitaciones!</b> El comentario se ha votado correctamente.'; Request::redirect('/post/index/' . $model_comentario->post_id); }