全般的日本語フォーラム

学生に評点を通知するメールの保存テーブル

 
画像 Noriko Tokuno
学生に評点を通知するメールの保存テーブル
 

お世話になります。

現在下記環境でMoodleの運用をしている徳野と申します。

Moodle 2.7.1 (Build: 20140714)
mysql (5.5.5-10.0.31-MariaDB)
PHP Version 5.4.45
LiteSpeed V6.9

ホスティングサーバ移行後、教師が課題の採点した際の「学生に通知する」メールが送信されていませんでいた。(http://xxxxxxxx/member/mod/assign/view.php?id=63&rownum=0&action=grade)

原因はウェブホスティングサービス会社がCronサービスの設定を削除したため admin/cron.php が実行されていなかったのですが、今、実行すると大量のメールが送信されることになると思います。混乱を避けるため admin/cron.php が処理する未送信メールを削除したいのですが対処法をご教授いただけないでしょうか?

よろしくお願いいたします。



 
評点平均:有益(Useful) (1)
画像 Mitsuhiro Yoshida
Re: 学生に評点を通知するメールの保存テーブル
DevelopersTranslators

Moodleからのすべてのメッセージを送信しなようにするため、一時的に下記プログラム修正をお試しになってはいかがでしょうか。

修正対象プログラム:
lib/messagelib.php

修正箇所:
56行目

[ 修正前 ]
function message_send($eventdata) {
    global $CFG, $DB;

    //new message ID to return
    $messageid = false;

[ 修正後 ]
function message_send($eventdata) {
    global $CFG, $DB;

    continue;

    //new message ID to return
    $messageid = false;


 
評点平均:有益(Useful) (1)
画像 Noriko Tokuno
Re: 学生に評点を通知するメールの保存テーブル
 

早速のご回答、誠にありがとうございます。

私の記述が悪く申し訳ございません。

今後発生する送信メールは admin/cron.php の実行で送信されなければならないのですが、現在cronに溜まっているjobの内、送信メールだけを削除したいのです。

恐らく、送信対象となるレコードがテーブルのどこかにあり、それを削除すればいいのではないかと早計し質問いたしました。

以上となります。

 
評点平均:有益(Useful) (1)
画像 Mitsuhiro Yoshida
Re: 学生に評点を通知するメールの保存テーブル
DevelopersTranslators

> 今後発生する送信メールは admin/cron.php の実行で送信されなければならないのですが、現在cronに溜まっているjobの内、送信メールだけを削除したいのです。

現在のところ、送信予定のメッセージがMoodleのデータベーステーブル内に事前に溜められることはありません。

課題モジュールでは「mod/assign/locallib.php」の1665行目あたりで下記のように1日以内の提出に限りメッセージを送信するよう設定されています。

    public static function cron() {
        global $DB;

        // Only ever send a max of one days worth of updates.
        $yesterday = time() - (24 * 3600);
        $timenow   = time();
        $lastcron = $DB->get_field('modules', 'lastcron', array('name' => 'assign'));

また、フォーラムモジュールでは「mod/forum/lib.php」の484行目あたりで下記のように2日以上古い投稿に関してはメッセージを送信しないよう設定されています。

    // Posts older than 2 days will not be mailed.  This is to avoid the problem where
    // cron has not been running for a long time, and then suddenly people are flooded
    // with mail from the past few weeks or months

    $timenow   = time();
    $endtime   = $timenow - $CFG->maxeditingtime;
    $starttime = $endtime - 48 * 3600;   // Two days earlier

恐らく、Moodle上で頻繁にメールが送信されます課題モジュールおよびフォーラムモジュールで上記のように送信範囲が制限されていますため、仮にadmin/cron.phpを実行されたとしても、大量のメールが個別のユーザに送信されるようなトラブルになることは極めて少ないかと思います。

 
評点平均:有益(Useful) (1)
画像 Noriko Tokuno
Re: 学生に評点を通知するメールの保存テーブル
 

ご丁寧なご回答頂き感謝いたします。

ご教示いただいた「mod/assign/locallib.php」を確認し安心いたしました。
ありがとうございます。

話は違うのですが学生が課題を提出した際は教師と自分自身に確認メールの送信ができますが、教師が評点した際は「学生に通知する」の選択しかなく、教師本人に評点を行った確認メールは送信されません。

設定を仔細にチェックしましたが、そういった項目は見当たりませんでした。
教師が評点した際に自分自身にメール送付することはできないのでしょうか?

質問中に新たな質問をしてしまい申し訳ありません。

以上です。






 
評点平均:有益(Useful) (1)
画像 Mitsuhiro Yoshida
Re: 学生に評点を通知するメールの保存テーブル
DevelopersTranslators

> 教師が評点した際に自分自身にメール送付することはできないのでしょうか?

最新のMoodle 3.4dev (Build: 20170608) も含めて、教師自身にメールを送信する機能はないようです。