/** * Agregamos un comentario en la foto. * @param int $foto ID de la foto donde comentar. */ public function action_comentar($foto) { // Verificamos el método de envio. if (Request::method() != 'POST') { Request::redirect('/foto/ver/' . $foto); } // Verifico esté conectado. if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes iniciar sessión para poder realizar comentarios.'; Request::redirect('/usuario/login'); } // Convertimos el foto a ID. $foto = (int) $foto; // Cargamos la foto. $model_foto = new Model_Foto($foto); // Verificamos exista. if (!is_array($model_foto->as_array())) { $_SESSION['flash_error'] = 'La foto que quiere comentar no se encuentra disponible.'; Request::redirect('/foto/'); } // Verifico se pueda comentar. if (!(Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR_CERRADO) || $model_foto->soporta_comentarios() && Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR))) { $_SESSION['post_comentario_error'] = 'No tienes permisos para realizar comentarios en esa foto.'; Request::redirect('/foto/ver/' . $foto); } // Obtenemos el comentario. $comentario = isset($_POST['comentario']) ? $_POST['comentario'] : NULL; // Verificamos el formato. $comentario_clean = preg_replace('/\\[.*\\]/', '', $comentario); if (!isset($comentario_clean[20]) || isset($comentario[400])) { $_SESSION['post_comentario_error'] = 'El comentario debe tener entre 20 y 400 caracteres.'; // Evitamos la visualización de la plantilla. $this->template = NULL; Dispatcher::call('/foto/ver/' . $foto, TRUE); } else { // Evitamos XSS. $comentario = htmlentities($comentario, ENT_NOQUOTES, 'UTF-8'); // Insertamos el comentario. $id = $model_foto->comentar(Usuario::$usuario_id, $comentario); // Envio el suceso. $model_suceso = new Model_Suceso(); if (Usuario::$usuario_id != $model_foto->usuario_id) { $model_suceso->crear($model_foto->usuario_id, 'foto_comentario_crear', TRUE, $id); $model_suceso->crear(Usuario::$usuario_id, 'foto_comentario_crear', FALSE, $id); } else { $model_suceso->crear($model_foto->usuario_id, 'foto_comentario_crear', FALSE, $id); } // Informo el resultado. $_SESSION['post_comentario_success'] = 'El comentario se ha realizado correctamente.'; Request::redirect('/foto/ver/' . $foto); } }