/** * Suceso producido cuando se edita el comentario de un usuario en una foto. * @param array $suceso Datos del suceso. * @return array */ protected static function suceso_foto_comentario_editar($suceso) { // Verifico si fui yo. if ($suceso['objeto_id1'] == Usuario::$usuario_id) { return NULL; } // Cargo el comentario. $model_comentario = new Model_Foto_Comentario((int) $suceso['objeto_id']); // Cargo el usuario que edita. $model_usuario = new Model_Usuario((int) $suceso['objeto_id1']); return array('foto' => $model_comentario->foto()->as_array(), 'comentario_usuario' => $model_comentario->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 fotos.'; Request::redirect('/usuario/login'); } $comentario = (int) $comentario; // Cargamos el comentario. $model_comentario = new Model_Foto_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('/foto/ver/' . $model_comentario->foto_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('/foto/ver/' . $model_comentario->foto_id); } // Cargo la vista. $vista = View::factory('/foto/editar_comentario'); // Seteo información del comentario. $vista->assign('contenido', $model_comentario->comentario); $vista->assign('error_contenido', FALSE); $vista->assign('usuario', $model_comentario->usuario()->as_array()); $vista->assign('foto', $model_comentario->foto()->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('comentario', $contenido); // Envio el suceso. $model_suceso = new Model_Suceso(); if (Usuario::$usuario_id == $model_comentario->usuario_id) { $model_suceso->crear(Usuario::$usuario_id, 'foto_comentario_editar', FALSE, $comentario, Usuario::$usuario_id); if (Usuario::$usuario_id != $model_comentario->foto()->usuario_id) { $model_suceso->crear($model_comentario->foto()->usuario_id, 'foto_comentario_editar', TRUE, $comentario, Usuario::$usuario_id); } } else { $model_suceso->crear($model_comentario->usuario_id, 'foto_comentario_editar', TRUE, $comentario, Usuario::$usuario_id); $model_suceso->crear(Usuario::$usuario_id, 'foto_comentario_editar', FALSE, $comentario, Usuario::$usuario_id); if (Usuario::$usuario_id == $model_comentario->foto()->usuario_id) { $model_suceso->crear($model_comentario->foto()->usuario_id, 'foto_comentario_editar', FALSE, $comentario, Usuario::$usuario_id); } } $_SESSION['post_comentario_success'] = 'El comentario se ha actualizado correctamente.'; Request::redirect('/foto/ver/' . $model_comentario->foto_id); } } // Menu. $this->template->assign('master_bar', parent::base_menu('foto')); $this->template->assign('top_bar', Controller_Home::submenu()); // Asignamos la vista. $this->template->assign('contenido', $vista->parse()); }