小テスト合格した時の通知設定について

小テスト合格した時の通知設定について

- 彩乃 中村 の投稿
返信数: 8

生徒が小テストに合格した際、管理者にその都度メールを送って通知する設定は出来ますでしょうか。

宜しくお願い致します。

彩乃 中村 への返信

Re: 小テスト合格した時の通知設定について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
よろしければ、現在お使いのMoodleのバージョン (例 Moodle 3.8.4) をお教えください。
Mitsuhiro Yoshida への返信

Re: 小テスト合格した時の通知設定について

- 彩乃 中村 の投稿
大変申し訳ございません。
バージョンがどのようにしても確認できません。

昨年度ダウンロードしたものとなります。
彩乃 中村 への返信

Re: 小テスト合格した時の通知設定について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

Moodleのバージョンは以下の手順で確認可能です。

  1. Moodleにサイト管理者としてログインする。
  2. 「管理 > サイト管理 > サーバ > 動作環境」に移動する。
  3. 「サーバチェック」セクションに表示されているMoodleのバージョン※1を確認する。

※1 Moodleバージョン表示の例
「バージョン 3.5 以上が必須です。あなたは現在 3.9.1+ (Build: 20200814) を使用しています。」

Mitsuhiro Yoshida への返信

Re: 小テスト合格した時の通知設定について

- 彩乃 中村 の投稿

ご連絡頂き誠にありがとうございます。

バージョンですが、Moodle 3.7.2+ (Build: 20191004)でした。

何卒宜しくお願い致します。

彩乃 中村 への返信

Re: 小テスト合格した時の通知設定について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
ありがとうございます。

「管理者にその都度メールを送って通知する」設定をご希望とのことですが、これはMoodleのサイト管理者宛にメール通知することでしょうか、それとも、各コースの教師 (編集権限のある教師) にメール通知することでしょうか?
Mitsuhiro Yoshida への返信

Re: 小テスト合格した時の通知設定について

- 彩乃 中村 の投稿

ご連絡ありがとうございます。

「各コースの教師 (編集権限のある教師) にメール通知する」をしたいです。

宜しくお願い致します。

彩乃 中村 への返信

Re: 小テスト合格した時の通知設定について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

現在のところ、Moodleには小テストの合格点到達時に教師宛にメール通知する設定はありませんが、以下のプログラム修正でご希望の動作に近くなるかと思います。

Moodleバージョン:
3.7.7+ (Build: 20200814)

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

修正箇所:
737行目

[ 修正前 ]
/**
 * Update grades in central gradebook
 *
 * @category grade
 * @param object $quiz the quiz settings.
 * @param int $userid specific user only, 0 means all users.
 * @param bool $nullifnone If a single user is specified and $nullifnone is true a grade item with a null rawgrade will be inserted
 */
function quiz_update_grades($quiz, $userid = 0, $nullifnone = true) {
    global $CFG, $DB;
    require_once($CFG->libdir . '/gradelib.php');

    if ($quiz->grade == 0) {
        quiz_grade_item_update($quiz);

    } else if ($grades = quiz_get_user_grades($quiz, $userid)) {
        quiz_grade_item_update($quiz, $grades);

    } else if ($userid && $nullifnone) {
        $grade = new stdClass();
        $grade->userid = $userid;
        $grade->rawgrade = null;
        quiz_grade_item_update($quiz, $grade);

    } else {
        quiz_grade_item_update($quiz);
    }
}

[ 修正後 ]
/**
 * Update grades in central gradebook
 *
 * @category grade
 * @param object $quiz the quiz settings.
 * @param int $userid specific user only, 0 means all users.
 * @param bool $nullifnone If a single user is specified and $nullifnone is true a grade item with a null rawgrade will be inserted
 */
function quiz_update_grades($quiz, $userid = 0, $nullifnone = true) {
    global $CFG, $DB;
    require_once($CFG->libdir . '/gradelib.php');

    if ($quiz->grade == 0) {
        quiz_grade_item_update($quiz);

    } else if ($grades = quiz_get_user_grades($quiz, $userid)) {
        quiz_grade_item_update($quiz, $grades);

    } else if ($userid && $nullifnone) {
        $grade = new stdClass();
        $grade->userid = $userid;
        $grade->rawgrade = null;
        quiz_grade_item_update($quiz, $grade);

    } else {
        quiz_grade_item_update($quiz);
    }

    $user = $DB->get_record('user', array('id' => $userid));
    $cm = get_coursemodule_from_instance('quiz', $quiz->id);
    $context = context_module::instance($cm->id);
    $gradeitem = grade_item::fetch(array('courseid' => $quiz->course, 'itemtype' => 'mod',
                     'itemmodule' => 'quiz', 'iteminstance' => $cm->instance, 'outcomeid' => null));
    $gradegrade = grade_grade::fetch(array('userid' => $userid, 'itemid' => $gradeitem->id));

    if ($gradegrade && ($gradegrade->is_passed() === true)) {
        $teachers = get_users_by_capability($context, 'mod/quiz:viewreports', 'u.*', 'u.id ASC', '', '', '', '', false, true);
        foreach ($teachers as $teacher ) {
                 $sendto = $DB->get_record('user', array('id' => $teacher->id));
                 $userfrom = core_user::get_noreply_user();
                 $userinfo = fullname($user). '(' . $user->username . ')';
                 $subject =  $quiz->name . ' - ' . get_string('completion-alt-auto-pass', 'completion', $userinfo);
                 $message = $subject . "\n\n" . $CFG->wwwroot . '/mod/quiz/view.php?id=' . $cm->id;
                 email_to_user($sendto, $userfrom, $subject, $message);
       }
    }
}
Mitsuhiro Yoshida への返信

Re: 小テスト合格した時の通知設定について

- 彩乃 中村 の投稿
ご返信頂き誠にありがとうございます。

プログラムの修正が必要なのですね。
試してみます。
ご丁寧に誠にありがとうございます。