Para mapear a quantidade mensagens internas no Moodle não lida por perfil / roles dos usuários, execute o seguinte comando SQL:
Lista id do perfil e quantidade de mensagens não lidas
SELECT rs.roleid,COUNT( DISTINCT m.id) AS countmessage FROM mdl_role_assignments rs INNER JOIN mdl_message m ON rs.userid = m.useridto GROUP BY rs.roleid
Lista id e nome do perfil e quantidade de mensagens não lidas
SELECT r.id,r.name,r.shortname,COUNT(DISTINCT m.id) AS countmessage FROM mdl_role_assignments rs INNER JOIN mdl_message m ON rs.userid = m.useridto INNER JOIN mdl_role r ON r.id=rs.roleid GROUP BY r.id,r.name,r.shortname ORDER BY COUNT(DISTINCT m.id)