生徒が小テストに合格した際、管理者にその都度メールを送って通知する設定は出来ますでしょうか。
宜しくお願い致します。
現在のところ、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);
}
}
}