mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
MDL-54802 mod_quiz: Add validation to require passing grade greater than 0
This commit adds a form validation to prevent the creation of quizzes using zero or null grade to pass when using require passing grade.
This commit is contained in:
parent
1f2744851f
commit
981356b23d
4 changed files with 34 additions and 1 deletions
|
@ -193,5 +193,30 @@ function xmldb_quiz_upgrade($oldversion) {
|
||||||
// Moodle v3.1.0 release upgrade line.
|
// Moodle v3.1.0 release upgrade line.
|
||||||
// Put any upgrade step following this.
|
// Put any upgrade step following this.
|
||||||
|
|
||||||
|
// Moodle v3.2.0 release upgrade line.
|
||||||
|
// Put any upgrade step following this.
|
||||||
|
|
||||||
|
if ($oldversion < 2016052301) {
|
||||||
|
// Find quizzes with the combination of require passing grade and grade to pass 0.
|
||||||
|
$quizzes = $DB->get_records_sql("
|
||||||
|
SELECT gi.id, gi.iteminstance
|
||||||
|
FROM {quiz} q
|
||||||
|
INNER JOIN {course_modules} cm ON q.id = cm.instance
|
||||||
|
INNER JOIN {grade_items} gi ON q.id = gi.iteminstance
|
||||||
|
WHERE q.completionpass = 1
|
||||||
|
AND gi.gradepass = 0
|
||||||
|
AND cm.completiongradeitemnumber IS NULL");
|
||||||
|
if ($quizzes) {
|
||||||
|
foreach ($quizzes as $quiz) {
|
||||||
|
$DB->execute("UPDATE {course_modules}
|
||||||
|
SET completiongradeitemnumber = :gradeitemid
|
||||||
|
WHERE instance = :quizid",
|
||||||
|
array('gradeitemid' => $quiz->id, 'quizid' => $quiz->iteminstance));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Quiz savepoint reached.
|
||||||
|
upgrade_mod_savepoint(true, 2016052301, 'quiz');
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -396,6 +396,7 @@ $string['grademethod_help'] = 'When multiple attempts are allowed, the following
|
||||||
* Last attempt (all other attempts are ignored)';
|
* Last attempt (all other attempts are ignored)';
|
||||||
$string['gradesdeleted'] = 'Quiz grades deleted';
|
$string['gradesdeleted'] = 'Quiz grades deleted';
|
||||||
$string['gradesofar'] = '{$a->method}: {$a->mygrade} / {$a->quizgrade}.';
|
$string['gradesofar'] = '{$a->method}: {$a->mygrade} / {$a->quizgrade}.';
|
||||||
|
$string['gradetopassnotset'] = 'This quiz does not have a grade to pass set so you cannot use this option. Please use the require grade setting instead.';
|
||||||
$string['gradingdetails'] = 'Marks for this submission: {$a->raw}/{$a->max}.';
|
$string['gradingdetails'] = 'Marks for this submission: {$a->raw}/{$a->max}.';
|
||||||
$string['gradingdetailsadjustment'] = 'With previous penalties this gives <strong>{$a->cur}/{$a->max}</strong>.';
|
$string['gradingdetailsadjustment'] = 'With previous penalties this gives <strong>{$a->cur}/{$a->max}</strong>.';
|
||||||
$string['gradingdetailspenalty'] = 'This submission attracted a penalty of {$a}.';
|
$string['gradingdetailspenalty'] = 'This submission attracted a penalty of {$a}.';
|
||||||
|
|
|
@ -533,6 +533,13 @@ class mod_quiz_mod_form extends moodleform_mod {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('completion', $data) && $data['completion'] == COMPLETION_TRACKING_AUTOMATIC) {
|
||||||
|
// Show an error if require passing grade was selected and the grade to pass was setted to 0.
|
||||||
|
if ($data['completionpass'] == 1 && (empty($data['gradepass']) || grade_floatval($data['gradepass']) == 0)) {
|
||||||
|
$errors['gradepass'] = get_string('gradetopassnotset', 'quiz');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check the boundary value is a number or a percentage, and in range.
|
// Check the boundary value is a number or a percentage, and in range.
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while (!empty($data['feedbackboundaries'][$i] )) {
|
while (!empty($data['feedbackboundaries'][$i] )) {
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
defined('MOODLE_INTERNAL') || die();
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
$plugin->version = 2016052300;
|
$plugin->version = 2016052301;
|
||||||
$plugin->requires = 2016051900;
|
$plugin->requires = 2016051900;
|
||||||
$plugin->component = 'mod_quiz';
|
$plugin->component = 'mod_quiz';
|
||||||
$plugin->cron = 60;
|
$plugin->cron = 60;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue