Gestión de un Foro

El concepto del foro es algo muy antiguo pero estimo que en la situación actual, donde impera el teletrabajo y por lo tanto, las comunicaciones entre los miembros de un equipo han bajado, puede ser un elemento de compartición de ideas, inquietudes y de soluciones, y que puede ayudar a mejorar la productividad y colaboración de los equipos.

También, en este caso, lo he hecho a petición de un usuario de PHPRunner que ha solicitado soporte para este tipo de solución.

Requisitos Funcionales

  • Los usuarios deben disponer obligatoriamente de una foto. Se pone un dibujo por defecto.
  • En el sistema se pueden dar de alta los usuarios de forma autónoma, validándose a través de email.
  • Los temas (“topics”) deberán estar clasificados por una categoría.
  • En la bandeja o listados de temas, se identificarán por pestañas: Todos, los que el usuario es el autor y los que se ha suscrito (selección de los temas que le interesa)
  • De los temas se informará: El autor (mediante foto), la fecha de creación, el número de respuestas que tiene y el número de veces que se ha consultado.
  • Todos los usuarios podrán iniciar un tema y podrán responder a cualquiera de ellos.
  • Los autores podrán cambiar (editar y borrar) cualquiera de sus temas y sus respuestas.
  • Para la construcción de los textos se deberá utilizar un editor html (potente) e incluirá la posibilidad de incorporar imágenes y ficheros en el propio sistema, siendo gestionados en directorios particulares de cada uno de los usuarios.

Esta solución es un sistema básico, que se debe ajustar a las necesidades de los equipos ampliándose en aspectos cómo:

  • Cuadro de mando del uso que los usuarios hacen del sistema. Interesante para promover el uso y destacar a los usuarios que más lo utilizan.
  • Necesidad o no de un “moderador” del foro.
  • Bloqueos de usuarios que se salten las condiciones de uso
  • Envío por email de resúmenes de los temas suscritos.

DEMO: https://fhumanes.com/forum

Se recomienda a los usuarios que se den de alta.

Usuario administrador: “admin”/”admin”

Solución técnica

He utilizado PHPRunner 10.4, para que pueda ser utilizado por más usuarios, ya que el usuario que me lo solicitó no dispone de la versión 10.5.

Esta misma solución se podría hacer con la misma funcionalidad  en versión 10.2

Modelo de datos

Es muy simple, disponiendo de este conjunto de tablas. La vista “profil” se ha utilizado porque se ha detectado un bug en la gestión de las imágenes, no funcionado bien en una vista de PHPRunner (pendiente de reportarlo a Xlinesoft).

La configuración del aplicativo se ha hecho a través de un fichero “config.php” situado en directorio “MyCode” y que se ejecuta desde el evento “After application initialized”.

<?php
// Application configuration file
$_SESSION['PLUGIN_ICON'] = "mis_imagenes"; // Location of the icons
$_SESSION['PREF_LINK'] = "http://localhost/forum/files/";  // Pre URL for the location of User images

// Configuration editor "Innovation"
$_SESSION["UserID"] = $_SESSION["id_user"];      // User ID
$_SESSION['EDITOR_BaseVirtual0'] = "/forum/assets"."/".$_SESSION["UserID"]; 
$_SESSION['EDITOR_Base'] = "C:/Apache24/htdocs/forum/assets";
$_SESSION['EDITOR_Base0'] = $_SESSION['EDITOR_Base']."/".$_SESSION["UserID"];
$_SESSION['EDITOR_UrlBase'] = "http://localhost/forum/assets";
// Control diretory of images of User
$name_dir = $_SESSION['EDITOR_Base0']."/";

// Create Directory of images of the connected User
if (isset($_SESSION["id_user"]) ) { // A user is connected?
  if (!file_exists($name_dir)) {
      mkdir($name_dir, 0700);;
  }
}
?>

Se ha utilizado el editor  innovaeditor que se nos entrega con PHPRunner, pero se ha tenido que personalizar por:

  • Eliminar problemas de seguridad, ya que dispone de URL’s que acceden a los recursos sin haberse identificado ningún usuario.
  • Ajustes para que los usuarios dispongan de un directorio distinto para los recursos (imágenes y ficheros) que deseen incorporar a sus temas o respuestas.
  • Soporte de multi-idiomas.

Los cambios que he realizado, en la ubicación de la instalación de PHPRunner (en mi caso C:\Program Files\PHPRunner10.4\source\plugins\innovaeditor) son:

  • En directorio “C:\Program Files\PHPRunner10.4\source\plugins\innovaeditor\assetmanager”:
    Fichero “assetmanager.php”, se añaden estas líneas.

    <?php
    include("settings.php");
    
    // Control environment PHPRunner
    $name_file = __DIR__."/phprunner_setting.php";
    if (file_exists($name_file)) {
        require __DIR__."/phprunner_setting.php";
    }
  • Se ha añadido el fichero “phprunner_setting.php” con este contenido:

    <?php
    require_once("../../../include/dbcommon.php"); // DataBase PHPRunner
    
    // Control user login
    if (!isset($_SESSION["UserID"])) {
      die("Please connect aplications");
    }
    // Config assetmanager
    $bReturnAbsolute=false;
    $sBaseVirtual0=$_SESSION['EDITOR_BaseVirtual0']; 
    $sBase0=$_SESSION['EDITOR_Base0'];
    
    if ($_SESSION["language"] == "Spanish") {
        $sLang="es-ES";
    } else {
        $sLang="en-US";
    }
    
  • En directorio “C:\Program Files\PHPRunner10.4\source”:
    Fichero innova.php (es para la gestión de multi-idioma)

    // FHP
     
    if ($_SESSION["language"] == "Spanish") {
        $sLang="es-ES";
        $LangScript = '<script type="text/javascript" src="'. projectURL() . ("plugins/innovaeditor/scripts/language/".$sLang."/editor_lang.js").'"></script>';
    } else {
        $sLang="en-US";
        $LangScript='';
    }

Explicación del uso

Los usuarios por defecto sólo pueden consultar los Temas y consultar su perfil y cambiar su nombre y su foto.

Esta es la pantalla principal del sistema.

(1).- Los temas se presentan en 3 pestañas (todos los temas, Los temas que soy autor y los temas a los que me he suscrito).

(2).- Mediante los check de los temas y los botones de “suscripción” y “darse de baja” el usuario puede disponer en una nueva solapa de los temas que ha elegido.

(3).- si eres el autor del tema te facilita la edición, e incluso la eliminación del mismo.

(1).- El título del tema y la pregunta o exposición que se ha hecho sale al principio de las páginas de las respuestas.

(2).- A continuación salen las repuestas, la última, sale la primera de la lista. Como se ve en la imagen, se pueden incluir imágenes, enlaces, ficheros, etc.

(1).- La creación y edición es en línea y siempre se utiliza el editor innovaeditor,  con todas sus características.

(2).- Los botones de salvar o cancelar, se ofrecen debajo de la información del usuario.

(1), (2).- Como se ha indicado en diferentes ocasiones, se pueden subir imágenes y ficheros. El repositorio de recursos es propio para cada usuario. El interfaz del editor se puede ajustar al idioma que se requiera.

(1),(2) y (3).- Os recuerdo, lo he comentado en otros artículos, que podemos incluir en el editor cualquiera de las características de Bootstrap 3, con lo que, por ejemplo, se pueden incluir texto colapsables o presentaciones de tipo “acordeón”.

Como siempre os indico, para cualquier duda o explicación, os podéis poner en contacto conmigo a través de mi email [email protected]

También, os dejo los ficheros para que podáis reproducir el ejemplo en vuestros equipos.

Adjuntos

Archivo Tamaño de archivo Descargas
zip Modelo de datos - MySQL WorkBench 12 KB 569
zip Backup de la base de datos 11 KB 516
zip Proyecto PHPRunner 10.4 544 KB 643
zip Backup del directorio "files" 72 KB 502
zip Backup del directorio "assets" 319 KB 525

Blog personal para facilitar soporte gratuito a usuarios de React y PHPRunner