Sistema de Foros - ManuelJDonoso/Proyecto_daw GitHub Wiki
Sistema de Foros
Propósito y Alcance
El Sistema de Foros en Crónicas de Mérida proporciona una plataforma de discusión integral donde los usuarios pueden participar en conversaciones organizadas a través de una estructura jerárquica de contenido. Este documento detalla la implementación técnica, estructura y funcionalidad del sistema de foros.
Para información sobre los roles de usuario y permisos que afectan el acceso al foro, consulta las secciones de Gestión de Usuarios y Control de Acceso Basado en Roles.
Arquitectura del Sistema
El Sistema de Foros sigue un patrón MVC típico con vistas, controladores e interacciones con la base de datos. Implementa un diseño responsivo de tres secciones con carga dinámica de contenido basada en las selecciones del usuario.
Diagrama del Componente del Foro
Estructura de Contenido
El foro implementa una estructura jerárquica de tres niveles para organizar las discusiones:
Entidad | Descripción | Tabla de Base de Datos |
---|---|---|
Categorías | Unidades de organización de nivel superior | categorias |
Temas | Asuntos de discusión específicos dentro de categorías | temas |
Publicaciones | Contribuciones individuales de usuarios dentro de temas | publicaciones |
Me Gusta | Apreciación de los usuarios a publicaciones específicas | me_gustas |
Implementación de la Interfaz de Usuario
La interfaz del foro se divide en tres secciones principales que se cargan dinámicamente y pueden ser redimensionadas por los usuarios:
Diseño de tres secciones
- Sección Categorías (izquierda): Enumera todas las categorías disponibles con controles de moderación para los administradores
- Sección de temas (centro): muestra los temas dentro de la categoría seleccionada
- Sección de publicaciones (derecha): muestra las publicaciones dentro del tema seleccionado
El diseño utiliza flexibilidad CSS y redimensionamiento impulsado por JavaScript para permitir a los usuarios ajustar el ancho de cada sección según su preferencia.
Permisos Basados en Roles
El foro implementa un sistema de permisos basado en roles que determina qué acciones pueden realizar los usuarios:
Rol | Crear Categorías | Crear Temas | Crear Publicaciones | Eliminar Contenido Propio | Eliminar Cualquier Contenido | Alternar Permisos |
---|---|---|---|---|---|---|
Visitante | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Jugador | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Moderador | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Administrador | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Funcionalidad Principal
Gestión de Categorías
Los administradores pueden:
- Crear nuevas categorías mediante un formulario sencillo.
- Eliminar categorías existentes (con confirmación).
- Alternar si los usuarios pueden crear temas dentro de las categorías.
Gestión de Temas
Los usuarios (según los permisos) pueden:
- Ver temas dentro de una categoría.
- Crear nuevos temas (si está permitido para esa categoría).
- Eliminar sus propios temas.
- Alternar si los usuarios pueden publicar en sus temas.
Los moderadores y administradores pueden adicionalmente:
- Eliminar cualquier tema.
- Alternar los permisos de publicación para cualquier tema.
Gestión de Publicaciones
Los usuarios (según los permisos) pueden:
- Ver publicaciones dentro de un tema.
- Crear nuevas publicaciones (si está permitido para ese tema).
- Eliminar sus propias publicaciones.
- Dar "Me Gusta" o quitar "Me Gusta" a publicaciones.
Los moderadores y administradores pueden:
- Eliminar cualquier publicación.
- Alternar permisos de publicación para cualquier tema
Detalles de implementación:
Listado de temas en
src/www/views/forum.php 54-94
Formulario de creación de temas en
src/www/views/forum.php
98-114
Registros de permisos
src/www/controladores/forum.php
30-36
Gestión de puestos
Los usuarios (según los permisos) pueden:
- Ver publicaciones dentro de un tema
- Crear nuevas publicaciones (si está permitido para ese tema)
- Eliminar sus propias publicaciones
- Me gusta o me gustan las publicaciones
Los moderadores y administradores pueden:
- Eliminar cualquier publicación
Detalles de implementación:
Publicar listado en
src/www/views/forum.php
138-192
Formulario de creación de publicaciones en
src/www/views/forum.php
195-209
Funcionalidad similar/diferente en
src/www/controladores/forum.php
76-108
Esquema de base de datos
El sistema de foros se basa en cuatro tablas principales de bases de datos:
Interacciones front-end
El sistema de foros incluye la funcionalidad de JavaScript para mejorar la experiencia del usuario:
- Alternancia de sección: los usuarios pueden mostrar/ocultar la sección de categorías
- Cambio de tamaño de la sección: los usuarios pueden ajustar el ancho de cada columna usando controladores de arrastre
- Conmutación de formularios: Los formularios de creación de temas y publicaciones se pueden mostrar/ocultar
Estas características se implementan en el archivo que se incluye en la parte inferior de la vista del foro.
Flujo de datos
Creación de contenido
El foro implementa formularios para crear nuevos contenidos en cada nivel de la jerarquía:
- Creación de categorías: Formulario simple en la parte inferior de la sección de categorías (solo para administradores)
- Creación de temas: Alternar formulario en la sección de temas con campos de título y contenido
- Creación de publicaciones: Alternar formulario en la sección de publicaciones con el campo de contenido
Cada formulario se envía al punto de conexión del controlador adecuado para procesar la creación.
Consideraciones de seguridad
El sistema de foros implementa varias medidas de seguridad:
- Saneamiento de entradas: todo el contenido mostrado se procesa para evitar ataques XSShtmlspecialchars()
- Comprobaciones de permisos: el acceso a la funcionalidad está restringido en función de los roles de usuario
- Diálogos de confirmación: Las acciones destructivas (como la eliminación) requieren confirmación
- Instrucciones preparadas: todas las consultas de base de datos utilizan instrucciones preparadas PDO para evitar la inyección de código SQL
Puntos de Integración
El sistema de foros se integra con otras partes de la aplicación:
- Administración de usuarios: Los roles de usuario determinan los permisos de acceso al foro
- Sistema de autenticación: el estado de inicio de sesión del usuario afecta a las acciones disponibles
- Enrutamiento de núcleo: Se accede al foro a través del router principal a través del parámetro "pag=forum"