MDL-55360 workshop: Allow creating workshops with empty grades to pass
authorDavid Mudrák <david@moodle.com>
Wed, 27 Jul 2016 14:20:18 +0000 (16:20 +0200)
committerDavid Mudrák <david@moodle.com>
Thu, 28 Jul 2016 07:54:43 +0000 (09:54 +0200)
As a regression of MDL-55360, it was not possible to create new
workshops if the field "Submission grade to pass" or "Assessment grade
to pass" was left empty. The validation failed with "You must enter a
number here".

The fields submissiongradepass and gradinggradepass are always present
as we explicitly define them in the mod form. So the isset() condition
in the validation was useless and it did not allow to submit the form
with these fields empty.

Additionally, the unformat_float() returns null only if it receives
empty value on the input. Which can't happen in our case so I am
removing this condition to improve the readability of the code.

mod/workshop/mod_form.php

index 0a87b5b..db864e0 100644 (file)
@@ -396,9 +396,9 @@ class mod_workshop_mod_form extends moodleform_mod {
         }
 
         // Check that the submission grade pass is a valid number.
-        if (isset($data['submissiongradepass'])) {
+        if (!empty($data['submissiongradepass'])) {
             $submissiongradefloat = unformat_float($data['submissiongradepass'], true);
-            if ($submissiongradefloat === false || $submissiongradefloat === null) {
+            if ($submissiongradefloat === false) {
                 $errors['submissiongradepass'] = get_string('err_numeric', 'form');
             } else {
                 if ($submissiongradefloat > $data['grade']) {
@@ -408,9 +408,9 @@ class mod_workshop_mod_form extends moodleform_mod {
         }
 
         // Check that the grade pass is a valid number.
-        if (isset($data['gradinggradepass'])) {
+        if (!empty($data['gradinggradepass'])) {
             $gradepassfloat = unformat_float($data['gradinggradepass'], true);
-            if ($gradepassfloat === false || $gradepassfloat === null) {
+            if ($gradepassfloat === false) {
                 $errors['gradinggradepass'] = get_string('err_numeric', 'form');
             } else {
                 if ($gradepassfloat > $data['gradinggrade']) {