-
Bug
-
Resolution: Fixed
-
Critical
-
1.9.10, 2.1.3, 2.2, STABLE backlog
-
Apache 2.2.10, PHP 5.2.14, SLES 11 SP1, Oracle 11g
-
Oracle
-
MOODLE_19_STABLE, MOODLE_21_STABLE, MOODLE_22_STABLE
-
MOODLE_23_STABLE
-
MDL-26275_large_grader -
-
We have a course with 47 students and 18 assignments/tests/quizzes. When we try to update the grades for the students in the gradebook, only part of the grades are saved. For the ones that don't save, we have to click on the little "hand" icon to manually "edit" the grade, and it will save then.
Using Firebug, I traced this down to a problem with how Moodle saves the changes to the gradebook, basically by creating one giant form POST containing all the fields and values, like:
id=2161&sesskey=F9J3pymnk6&report=grader&oldgrade_13214_4098=8.00&grade_13214_4098=8.00&oldgrade_13214_4099=&grade_13214_4099=&oldgrade_13214_4100=&grade_13214_4100=&oldgrade_13214_4101=.....
In our case, the form post for this gradebook ended up being 33184 bytes, which appears to be too large for something (Apache/Firefox/IE/PHP/linux/etc.) to handle.
To test things out, I made a php page in our Moodle instance (moodle/test/index.php) containing the following code to output all the information it received:
<?php
|
if ($_REQUEST) {
|
echo "<table border=1> \n";
|
echo " <tr> \n";
|
echo " <td><b>result_name </b></td> \n ";
|
echo " <td><b>result_val </b></td> \n ";
|
echo " </tr> \n";
|
while (list($result_nme, $result_val) = each($_REQUEST)) {
|
echo " <tr> \n";
|
echo " <td> $result_nme </td> \n";
|
echo " <td> $result_val </td> \n";
|
echo " </tr> \n";
|
}
|
echo "</table> \n";
|
}
|
?>
|
I then created a copy of the index.php page inside moodle/grade/report/grader/ and pointed that copy of the page to post its data to the test page I created.
I've attached a couple of files to help illustrate this:
outputPostAttribs.pdf contains the browser output of that test recipient page I made.
FirebugLocationWithRequestHeaders.txt is an output of the Form POST data that Firebug reported
The two grades I entered (at the bottom of the list) were the grades for students with Moodle ID's 32738 and 7348 (I gave them a grade of 2.) When you parse through the Firebug file, you can see the following values:
grade_32738_4098=2
grade_7348_4098=2
However, those fields aren't in the list that Apache received.
The bad thing is that I'm not aware of an easy workaround for this issue short of a complete overhaul of the Moodle gradebook.
- Discovered while testing
-
MDL-32306 shift tab in the grader report while editing doesn't work quite right
- Closed
- has a non-specific relationship to
-
MDL-40614 Large quiz won't submit due to PHP max_input_vars value
- Closed
- has been marked as being related by
-
MDL-41819 Grades lost when editing in the grader report due to max_input_vars
- Closed
-
MDL-29181 Grades Entered with Quick Grading Not Saving
- Closed
-
MDL-31433 Gradebook scale type item, FINALGRADE = 0/(null)
- Closed
-
MDL-35074 Ease limit on number of students per page in Grader Report imposed by max_input_vars
- Closed
- is duplicated by
-
MDL-24940 Manually entered grades do not save
- Closed
-
MDL-31801 incomplete update of gradebook (grader view) when overriding grades
- Closed
-
MDL-31706 grade form submission fails due to low/default PHP max_input_vars value
- Closed
-
MDL-31744 Can't enter grades in a gradebook for the last students with 200 students per page
- Closed
-
MDL-34789 Grader report with more than 40 users not saving changes
- Closed
-
MDL-31764 Unable to save a large number of input fields from PHP 5.3.9 onwards, eg. the grader report
- Closed
- will be (partly) resolved by
-
MDL-31818 Submitting grades on the grader report (non-ajax) causes the page you're on to be forgotten
- Closed