Skip to content
Browse files

MDL-29336 Saving grade mapping table in the Workshop

The Workshop module using the "Number of errors" grading strategy did
not save all items in the grade mapping table. If some assessment form
fields have weight > 1, the number of possible errors is greater that
the number of the assessment form fields. The previous code deleted all
mappings where the number of errors was greater than the number of
fields.

In this patch, the maximum number of possible errors is calculated as a
sum of weights of all fields. Only mappings over this maximum are
deleted now.
  • Loading branch information...
1 parent 51e1e3d commit c418df9c94c637c22c432ca534af086046459de2 @mudrd8mz mudrd8mz committed Sep 22, 2011
Showing with 4 additions and 2 deletions.
  1. +4 −2 mod/workshop/form/numerrors/lib.php
View
6 mod/workshop/form/numerrors/lib.php
@@ -164,6 +164,7 @@ public function save_edit_strategy_form(stdclass $data) {
$records = $data->numerrors; // data to be saved into {workshopform_numerrors}
$mappings = $data->mappings; // data to be saved into {workshopform_numerrors_map}
$todelete = array(); // dimension ids to be deleted
+ $maxnonegative = 0; // maximum number of (weighted) negative responses
for ($i=0; $i < $norepeats; $i++) {
$record = $records[$i];
@@ -181,6 +182,7 @@ public function save_edit_strategy_form(stdclass $data) {
// exiting field
$DB->update_record('workshopform_numerrors', $record);
}
+ $maxnonegative += $record->weight;
// re-save with correct path to embeded media files
$record = file_postupdate_standard_editor($record, 'description', $this->descriptionopts, $PAGE->context,
'workshopform_numerrors', 'description', $record->id);
@@ -212,8 +214,8 @@ public function save_edit_strategy_form(stdclass $data) {
$insql = '';
}
$sql = "DELETE FROM {workshopform_numerrors_map}
- WHERE (($insql nonegative > :nodimensions) AND (workshopid = :workshopid))";
- $params['nodimensions'] = $norepeats;
+ WHERE (($insql nonegative > :maxnonegative) AND (workshopid = :workshopid))";
+ $params['maxnonegative'] = $maxnonegative;
$params['workshopid'] = $this->workshop->id;
$DB->execute($sql, $params);
}

0 comments on commit c418df9

Please sign in to comment.
Something went wrong with that request. Please try again.