I am new to Workshop module.
Would anyone please explain how the Assmnt Grade of each user (7.8, 9.7, 8.3) is automatically calculated in the following example?
I would like to know the equation for the calculation.
Or information of which part of a php file calcuates it will also be a help.
Assessments.php (in mod/workshop)
Let me know if you need help translating
-glenn
//determine what kind of grading we have switch ($workshop->gradingstrategy) { case 0: // no grading // Insert all the elements that contain something for ($i = 0; $i < $workshop->nelements; $i++) { unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = $i; $element->feedback = clean_param($form->{"feedback_$i"}, PARAM_CLEAN); if (!$element->id = insert_record("workshop_grades", $element)) {error(
"Could not insert workshop grade!");}
}
$grade = 0; // set to satisfy save to db break;case 1: // accumulative grading // Insert all the elements that contain something foreach ($form->grade as $key => $thegrade) { unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = $key; $element->feedback = clean_param($form->{"feedback_$key"}, PARAM_CLEAN); $element->grade = $thegrade; if (!$element->id = insert_record("workshop_grades", $element)) {
error(
"Could not insert workshop grade!");}
}
// now work out the grade... $rawgrade=0; $totalweight=0; foreach ($form->grade as $key => $grade) { $maxscore = $elements[$key]->maxscore; $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; if ($weight > 0) { $totalweight += $weight;}
$rawgrade += ($grade / $maxscore) * $weight; // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />";}
$grade = 100.0 * ($rawgrade / $totalweight); break;case 2: // error banded graded // Insert all the elements that contain something $error = 0.0; for ($i =0; $i < $workshop->nelements; $i++) { unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = $i; $element->feedback = $form->{"feedback_$i"}; $element->grade = clean_param($form->grade[$i], PARAM_CLEAN); if (!$element->id = insert_record("workshop_grades", $element)) {
error(
"Could not insert workshop grade!");}
if (empty($form->grade[$i])){ $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];}
}
// now save the adjustment unset($element); $i = $workshop->nelements; $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = $i; $element->grade = $form->grade[$i]; if (!$element->id = insert_record("workshop_grades", $element)) {error(
"Could not insert workshop grade!");}
$grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade; // do sanity check if ($grade < 0) { $grade = 0;}
elseif ($grade > 100) { $grade = 100;}
echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n"; break;case 3: // criteria grading // save in the selected criteria value in element zero, unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = 0; $element->grade = $form->grade[0]; if (!$element->id = insert_record("workshop_grades", $element)) {
error(
"Could not insert workshop grade!");}
// now save the adjustment in element one unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = 1; $element->grade = $form->grade[1]; if (!$element->id = insert_record("workshop_grades", $element)) {error(
"Could not insert workshop grade!");}
$grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]); break;case 4: // rubric grading (identical to accumulative grading) // Insert all the elements that contain something foreach ($form->grade as $key => $thegrade) { unset($element); $element->workshopid = $workshop->id; $element->assessmentid = $assessment->id; $element->elementno = clean_param($key, PARAM_INT); $element->feedback = clean_param($form->{"feedback_$key"}, PARAM_CLEAN); $element->grade = $thegrade; if (!$element->id = insert_record("workshop_grades", $element)) {
error(
"Could not insert workshop grade!");}
}
// now work out the grade... $rawgrade=0; $totalweight=0; foreach ($form->grade as $key => $grade) { $maxscore = $elements[$key]->maxscore; $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight]; if ($weight > 0) { $totalweight += $weight;}
$rawgrade += ($grade / $maxscore) * $weight;}
$grade = 100.0 * ($rawgrade / $totalweight); break;
}
// end of switch