In the AICC.PHP code there is logic to allow the CMI to judge lesson_status (passed/failed) if the course does not send these values but only sends completed. The logic is based on the CMI system been allowed by AICC guidelines to judge pass/fail IF it has a mastery_score set for the content.
This issue only came about due to correctly fixing the logic for retrieving the mastery_score in AICC.PHP page see MDL-14485
The logic in the page is flawed because of two reasons:
1. It does not retrieve the SCO information.
2. It does not correctly reference the datamodel element.
The impact if you make the changes in MDL-14485 and do not fix this issue is that the CMI ALWAYS judges the course failed.
if ($mode == 'normal') {
//Martin Holden, SkillSoft
//Corrected logic for LMS to determine passed/failed status
//Failing previously as masteryscore should be mastery_score
//Also there was no call to retrieve $sco
//22nd April 2008
//
//if ($lessonstatus == 'completed') {
// if (!empty($sco->masteryscore) && !empty($score) && ($score >= $sco->masteryscore))
else
{ // $lessonstatus = 'failed'; // } // $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, 'cmi.core.lesson_status', $lessonstatus);
//}
if ($lessonstatus == 'completed') {
if ($sco = scorm_get_sco($scoid)) {
if (!empty($sco->mastery_score) && !empty($score) && ($score >= $sco->mastery_score))
else
{ $lessonstatus = 'failed'; } $id = scorm_insert_track($USER->id, $scorm->id, $sco->id, $attempt, 'cmi.core.lesson_status', $lessonstatus);
}
}
// END
}
- has a non-specific relationship to
-
MDL-14485 AICC - Mastery_Score, Max_Time_Allowed and Time_Limit_Action not correctly returned to courses
-
- Closed
-