🚨 Síntomas del cliente
El cliente reporta que, tras actualizar a Moodle 5 (desde la 4.x), al hacer clic en el icono de mensajería (burbuja de chat):
El cajón de mensajería se abre pero se queda cargando (spinner infinito).
No aparecen los mensajes ni los contactos.
El chat interno da error de carga.
🔍 Diagnóstico técnico
Al inspeccionar la página con la consola del navegador (F12 > Console), aparece el siguiente error en rojo:
TypeError: Cannot read properties of undefined (reading 'lastmessagedate')
Causa Raíz: Conflicto entre el nuevo código Javascript de Moodle 5 y mensajes antiguos almacenados en la base de datos que contienen formato HTML o caracteres especiales. El parser de JS intenta leer el texto plano y falla al encontrar etiquetas HTML huérfanas.
🛠️ Solución (Parche Manual)
⚠️ Advertencia: Esta solución implica modificar un archivo del Core de Moodle. Este cambio se perderá si se actualiza la versión de Moodle, por lo que debe documentarse o revisarse tras futuros updates.
Pasos a seguir:
Accede a los archivos del servidor (FTP/SFTP/cPanel).
Localiza el siguiente archivo:
public_html/message/amd/build/message_drawer_view_overview_section.min.js
Edita el archivo (es un minificado, usa
CTRL+FoCMD+Fpara buscar).
Busca exactamente esta cadena de código:
JavaScript:
var messagePreview=$(lastMessage.text).text()
Reemplázala por esta otra (añadiendo las etiquetas
<p>):JavaScript:
var messagePreview=$("<p>"+lastMessage.text+"</p>").text()
(Esto fuerza a jQuery a tratar el contenido como un nodo HTML válido antes de extraer el texto).
Guarda el archivo.
IMPORTANTE: Ve a Moodle > Administración del sitio > Desarrollo > Purgar cachés y pulsa "Purgar todas las cachés".
✅ Verificación
Recarga la página del cliente con
CTRL + F5para limpiar la caché del navegador.Abre la mensajería. Deberían cargar los contactos y conversaciones antiguas correctamente.
📝 Notas adicionales
Si la actividad "Chat" ha desaparecido, recordar que fue eliminada del Core en Moodle 5. Hay que instalar el plugin
mod_chatmanualmente desde el directorio oficial.Este parche es una solución conocida por la comunidad para instancias actualizadas con bases de datos antiguas.
