How the Assmnt Grades are calculated?

How the Assmnt Grades are calculated?

by Toshihiro KITA -
Number of replies: 1
Picture of Plugin developers Picture of Translators
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.

Attachment ws1m1.jpg
Average of ratings: -
In reply to Toshihiro KITA

Re: How the Assmnt Grades are calculated?

by glenn maples -

Assessments.php (in mod/workshop)

Let me know if you need help translating smile

-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