La semana pasada, la persona que administra la plataforma Moodle vino a reclamar que (según la opinión/reclamo de un luser) los mensajes de Moodle no estaban llegando. Veamos si esto es cierto haciendo una pequeña incursión a la base de datos de Moodle (PostgreSQL).



Moodle cuenta con un subsistema de mensajería interno que permite que tanto estudiantes como docentes puedan intercambiar mensajes a través de la plataforma. En este caso un docente aducía que los mensajes no estaban funcionando.

Veamos cómo verificar el funcionamiento de los mensajes de Moodle en una base de datos PostgreSQL.

Moodle cuenta con dos tablas idénticas para almacenar los mensajes no leídos (mdl_message) y leídos (mdl_message_read):

moodle=# \d+ mdl_message_read
                                                              Table "public.mdl_message_read"
       Column        |          Type          | Collation | Nullable |                   Default                    
---------------------+------------------------+-----------+----------+----------------------------------------------
 id                  | bigint                 |           | not null | nextval('mdl_message_read_id_seq'::regclass) 
 useridfrom          | bigint                 |           | not null | 0                                            
 useridto            | bigint                 |           | not null | 0                                            
 subject             | text                   |           |          |                                              
 fullmessage         | text                   |           |          |                                              
 fullmessageformat   | smallint               |           |          | 0                                            
 fullmessagehtml     | text                   |           |          |                                              
 smallmessage        | text                   |           |          |                                              
 notification        | smallint               |           |          | 0                                            
 contexturl          | text                   |           |          |                                              
 contexturlname      | text                   |           |          |                                              
 timecreated         | bigint                 |           | not null | 0                                            

moodle=# \d+ mdl_message
                                                              Table "public.mdl_message"
       Column        |          Type          | Collation | Nullable |                 Default                 
---------------------+------------------------+-----------+----------+-----------------------------------------
 id                  | bigint                 |           | not null | nextval('mdl_message_id_seq'::regclass) 
 useridfrom          | bigint                 |           | not null | 0                                       
 useridto            | bigint                 |           | not null | 0                                       
 subject             | text                   |           |          |                                         
 fullmessage         | text                   |           |          |                                         
 fullmessageformat   | smallint               |           |          | 0                                       
 fullmessagehtml     | text                   |           |          |                                         
 smallmessage        | text                   |           |          |                                         
 notification        | smallint               |           |          | 0                                       
 contexturl          | text                   |           |          |                                         
 contexturlname      | text                   |           |          |                                         
 timecreated         | bigint                 |           | not null | 0                                       

Es posible buscar un mensaje por su contenido (plano) examinando la columna smallmessage, y a su vez filtrando por id del usuario emisor (useridfrom) y receptor (useridto) del mensaje.

Por ejemplo, si el usuario cuyo id es 2 le envía el mensaje "ola ke ase" al usuario 8, es posible encontrarlo (antes de que sea leído) en la tabla mdl_message ejecutando la siguiente consulta SQL:

moodle=# select id,smallmessage,useridto from mdl_message where useridfrom=2 and fullmessage like '%ola ke ase%';
   id    | smallmessage | useridto 
---------+--------------+----------
 5995796 | ola ke ase   |        8
(1 row)

Mientras no sea leído, el mensaje permanece en la tabla mdl_message. Al mismo tiempo, es posible comprobar que no se encuentra en la tabla de mensajes leídos:

moodle=# select id,smallmessage,useridto from mdl_message_read where useridfrom=2 and useridto=8;
id | smallmessage | useridto 
----+--------------+----------
(0 rows)

Una vez que el usuario 8 lee el mensaje, este aparece en la tabla mdl_message_read, y desaparece de la tabla mdl_message:

moodle=# select id,smallmessage,useridto from mdl_message_read where useridfrom=2 and useridto=8;
   id    | smallmessage | useridto 
---------+--------------+----------
 5923489 | ola ke ase   |        8
(1 row)

moodle=# select id,smallmessage,useridto from mdl_message where useridfrom=2 and useridto=8;
 id | smallmessage | useridto 
----+--------------+----------
(0 rows)

De esta forma se comprueba que la mensajería funciona correctamente.


Tal vez pueda interesarte


Compartí este artículo