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, Jake Dallimore, Mathew May, 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