Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-18702

AICC LMS Completion logic when NO mastery_score set

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.9.4
    • Fix Version/s: 1.9.5
    • Component/s: SCORM
    • Labels:
      None
    • Environment:
      XAMPP 1.7.0, Windows 2003
    • Difficulty:
      Easy
    • Affected Branches:
      MOODLE_19_STABLE
    • Fixed Branches:
      MOODLE_19_STABLE

      Description

      File: /mod/scorm.aicc.php in latest MOODLE_19_WEEKLY - 1.9.4+ (Build: 20090325)

      The page has logic in it to handle LMS lesson status setting when a course sends a lesson_status of "completed".

      This logic is in place such that if a mastery_score is set in the AU file for a piece of content the LMS can judge lesson_status ignoring the value sent by the course.

      The situation I just had was a course that always sent a score=0 (it had no asssessment), and on successful paging through all the screens sent a lesson_status of "completed". The AU file specified no mastery_score.

      In Moodle this was been marked as "Failed" the reason been the flawed logic starting line 266:

      if (!empty($sco->mastery_score) && !empty($score) && ($score >= $sco->mastery_score)) {
      $lessonstatus = 'passed';
      } else {
      $lessonstatus = 'failed';
      }

      This basically is setting the status to FAILED, because mastery_score is empty.

      The AICC spec 2.2 has a good table titled "Lesson Status Determination" (Pg 94 actual in attached word doc) that shows if we have a status and a score (we do but it is 0) this is the logic the LMS can apply to the lesson_status:

      Course Sets:
      Lesson_Status=Complete
      Score=0

      TEST1:Credit=c & Mastery >= 0
      Lesson_Status=Pass
      Score=0

      TEST2: Credit=c & Mastery > 0
      Lesson_Status=Fail
      Score=0

      TEST3: Credit=c & Mastery=blank
      Lesson_Status=Complete
      Score=0

      TEST3 is what should be happening, and the lesson_status left as completed.

      Changing the code to below applies the correct logic:

      // Improve the LMS completion handling logic, existing code would
      // if mastery is empty and no scoring always mark a course as failed when completed.
      if (!empty($sco->mastery_score)) {
      if (!empty($score)) {
      if ($score >= $sco->mastery_score)

      { $lessonstatus = 'passed'; }

      else

      { $lessonstatus = 'failed'; }

      }
      }

        Attachments

          Activity

            People

            • Assignee:
              danmarsden Dan Marsden
              Reporter:
              martin_holden@skillsoft.com Martin Holden
              Participants:
              Component watchers:
              Damyon Wiese, Dan Marsden, Matteo Scaramuccia, Adrian Greeve, Mihail Geshoski, Peter Dias
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:
                Fix Release Date:
                13/May/09