diff --git a/course/editsection_form.php b/course/editsection_form.php index 870f76c75b2..edd156b91d4 100644 --- a/course/editsection_form.php +++ b/course/editsection_form.php @@ -180,10 +180,41 @@ class editsection_form extends moodleform { // Conditions: Don't let them set dates which make no sense if (array_key_exists('availablefrom', $data) && $data['availablefrom'] && $data['availableuntil'] && - $data['availablefrom'] > $data['availableuntil']) { + $data['availablefrom'] >= $data['availableuntil']) { $errors['availablefrom'] = get_string('badavailabledates', 'condition'); } + // Conditions: Verify that the grade conditions are numbers, and make sense. + if (array_key_exists('conditiongradegroup', $data)) { + foreach ($data['conditiongradegroup'] as $i => $gradedata) { + if ($gradedata['conditiongrademin'] !== '' && + !is_numeric(unformat_float($gradedata['conditiongrademin']))) { + $errors["conditiongradegroup[{$i}]"] = get_string('gradesmustbenumeric', 'condition'); + continue; + } + if ($gradedata['conditiongrademax'] !== '' && + !is_numeric(unformat_float($gradedata['conditiongrademax']))) { + $errors["conditiongradegroup[{$i}]"] = get_string('gradesmustbenumeric', 'condition'); + continue; + } + if ($gradedata['conditiongrademin'] !== '' && $gradedata['conditiongrademax'] !== '' && + unformat_float($gradedata['conditiongrademax']) <= unformat_float($gradedata['conditiongrademin'])) { + $errors["conditiongradegroup[{$i}]"] = get_string('badgradelimits', 'condition'); + continue; + } + if ($gradedata['conditiongrademin'] === '' && $gradedata['conditiongrademax'] === '' && + $gradedata['conditiongradeitemid']) { + $errors["conditiongradegroup[{$i}]"] = get_string('gradeitembutnolimits', 'condition'); + continue; + } + if (($gradedata['conditiongrademin'] !== '' || $gradedata['conditiongrademax'] !== '') && + !$gradedata['conditiongradeitemid']) { + $errors["conditiongradegroup[{$i}]"] = get_string('gradelimitsbutnoitem', 'condition'); + continue; + } + } + } + return $errors; } } diff --git a/course/moodleform_mod.php b/course/moodleform_mod.php index 292387b9dbd..a62cb976944 100644 --- a/course/moodleform_mod.php +++ b/course/moodleform_mod.php @@ -332,7 +332,7 @@ abstract class moodleform_mod extends moodleform { continue; } if ($gradedata['conditiongrademin'] !== '' && $gradedata['conditiongrademax'] !== '' && - unformat_float($gradedata['conditiongrademax']) < unformat_float($gradedata['conditiongrademin'])) { + unformat_float($gradedata['conditiongrademax']) <= unformat_float($gradedata['conditiongrademin'])) { $errors["conditiongradegroup[{$i}]"] = get_string('badgradelimits', 'condition'); continue; }