我正在使用Moodle 2.9。
我已将消息块添加到moodle站点并将其显示在站点的每个页面上。但是在用户收到系统上的新消息(他们在他们的个人资料的消息区域中显示)之后,该块只是说“没有消息等待”??
这个块有问题,还是在moodle的某个地方有一个设置来激活它?
对此的任何建议都会很棒!
似乎直接通过消息区域发送的消息出现在块中,但是我正在使用来自Activity Mod的message_send()函数,并且这些消息没有出现在块中,但它们出现在消息部分中?我错过了一些代码吗?
$message = new \core\message\message();
$message->component = 'moodle';
$message->name = 'instantmessage';
$message->userfrom = $userfrom;
$message->userto = $userto;
$message->subject = 'Test';
$message->fullmessage = 'Test.';
$message->fullmessageformat = FORMAT_HTML;
$message->fullmessagehtml = '<p>Text</p>';
$message->smallmessage = '';
$message->notification = '1';
$message->contexturl = '';
$message->contexturlname = '';
$message->replyto = "";
$content = '';
$messageid = message_send($message);
答案 0 :(得分:0)
解决
消息块仅显示设置为不通知的消息。因此通知对象需要设置为“0”,它不会在Moodle中显示弹出窗口,但它会出现在块中。
或者您可以在此处更改块本身,以便无论通知设置是什么,都允许所有消息传递到块中: -
的moodle \块\消息\ block_messages.php
从第58行更改SQL查询: -
$users = $DB->get_records_sql("SELECT $ufields, COUNT(m.useridfrom) AS count
FROM {user} u, {message} m
WHERE m.useridto = ? AND u.id = m.useridfrom AND m.notification = 0
GROUP BY $ufields", array($USER->id));
要
$users = $DB->get_records_sql("SELECT $ufields, COUNT(m.useridfrom) AS count
FROM {user} u, {message} m
WHERE m.useridto = ? AND u.id = m.useridfrom
GROUP BY $ufields", array($USER->id));