/** * Suceso producido cuando se publica un comentario en un post. * @param array $suceso Datos del suceso. * @return array */ protected static function suceso_post_comentario_crear($suceso) { // Cargo el comentario. $model_comentario = new Model_Post_Comentario((int) $suceso['objeto_id']); // Verifico no sea yo. if (Usuario::$usuario_id == $model_comentario->usuario_id) { return NULL; } // Post donde se crea el comentario. $model_post = $model_comentario->post(); // Usuario que crea el post. $model_usuario = $model_comentario->usuario(); return array('comentario' => $model_comentario->as_array(), 'post' => $model_post->as_array(), 'post_usuario' => $model_post->usuario()->as_array(), 'usuario' => $model_usuario->as_array()); }
/** * Editamos un comentario. * @param int $comentario ID del comentario a editar. */ public function action_editar_comentario($comentario) { // Verificamos usuario logueado. if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder editar comentarios en posts.'; Request::redirect('/usuario/login'); } $comentario = (int) $comentario; // 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 editar no se encuentra disponible.'; Request::redirect('/'); } // Verifico el estado. if ($model_comentario->estado === 2) { $_SESSION['flash_error'] = 'El comentario que deseas editar no se encuentra disponible.'; Request::redirect('/post/index/' . $model_comentario->post_id); } // Verifico permisos estado. if ($model_comentario->usuario_id !== Usuario::$usuario_id && !Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_EDITAR)) { $_SESSION['flash_error'] = 'No tienes los permisos para editar el comentario.'; Request::redirect('/post/index/' . $model_comentario->post_id); } // Cargo la vista. $vista = View::factory('/post/editar_comentario'); // Seteo información del comentario. $vista->assign('contenido', $model_comentario->contenido); $vista->assign('error_contenido', FALSE); $vista->assign('usuario', $model_comentario->usuario()->as_array()); $vista->assign('post', $model_comentario->post()->as_array()); $vista->assign('comentario', $model_comentario->as_array()); if (Request::method() === 'POST') { // Cargo el comentario. $contenido = isset($_POST['contenido']) ? $_POST['contenido'] : ''; // Seteo enviado. $vista->assign('contenido', $contenido); // Verificamos el formato. $comentario_clean = preg_replace('/\\[.*\\]/', '', $contenido); if (!isset($comentario_clean[20]) || isset($contenido[400])) { $vista->assign('error_contenido', 'El comentario debe tener entre 20 y 400 caracteres.'); } else { // Transformamos entidades HTML. $contenido = htmlentities($contenido, ENT_NOQUOTES, 'UTF-8'); // Insertamos el comentario. $model_comentario->actualizar_campo('contenido', $contenido); // Envio el suceso. $model_suceso = new Model_Suceso(); if (Usuario::$usuario_id == $model_comentario->usuario_id) { $model_suceso->crear(Usuario::$usuario_id, 'post_comentario_editar', FALSE, $comentario, Usuario::$usuario_id); if (Usuario::$usuario_id != $model_comentario->post()->usuario_id) { $model_suceso->crear($model_comentario->post()->usuario_id, 'post_comentario_editar', TRUE, $comentario, Usuario::$usuario_id); } } else { $model_suceso->crear($model_comentario->usuario_id, 'post_comentario_editar', TRUE, $comentario, Usuario::$usuario_id); $model_suceso->crear(Usuario::$usuario_id, 'post_comentario_editar', FALSE, $comentario, Usuario::$usuario_id); if (Usuario::$usuario_id == $model_comentario->post()->usuario_id) { $model_suceso->crear($model_comentario->post()->usuario_id, 'post_comentario_editar', FALSE, $comentario, Usuario::$usuario_id); } } $_SESSION['post_comentario_success'] = 'El comentario se ha actualizado correctamente.'; Request::redirect('/post/index/' . $model_comentario->post_id); } } // Menu. $this->template->assign('master_bar', parent::base_menu('posts')); $this->template->assign('top_bar', Controller_Home::submenu()); // Asignamos la vista. $this->template->assign('contenido', $vista->parse()); }