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

SCORM update + completion options locked = error/moodle/dmlwriteexception

    Details

    • Testing Instructions:
      Hide
      1. Enable Site administration ► Advanced features ► Completion tracking
      2. Enable completion tracking on one of your courses or create a new one from scratch
      3. Add a SCORM package into that course, using DnD. In case you're missing a working SCORM package, you can use the Prodding SCO and paste the script below in the Scripted test tab, selecting 200 for Interval between calls:

        LMSInitialize("")
        SetValue("cmi.core.session_time","00:04:59")
        SetValue("cmi.core.lesson_status","completed")
        LMSFinish("")
        

        More detail about this testing&debugging tool here.

      4. Edit the SCORM activity adding the required description (missing here due to DnD), changing Completion tracking into Show activity as complete when conditions are met and checking Passed in Require status. Click Save and return to course
      5. Attend to it and pass it. Completing it will be OK only if you have selected Completed in the step above
      6. Edit the activity settings again, check that Completion options locked will appear, add some text to the description and click save without any further change: no error should appear
      Show
      Enable Site administration ► Advanced features ► Completion tracking Enable completion tracking on one of your courses or create a new one from scratch Add a SCORM package into that course, using DnD. In case you're missing a working SCORM package, you can use the Prodding SCO and paste the script below in the Scripted test tab, selecting 200 for Interval between calls : LMSInitialize("") SetValue("cmi.core.session_time","00:04:59") SetValue("cmi.core.lesson_status","completed") LMSFinish("") More detail about this testing&debugging tool here . Edit the SCORM activity adding the required description (missing here due to DnD), changing Completion tracking into Show activity as complete when conditions are met and checking Passed in Require status . Click Save and return to course Attend to it and pass it. Completing it will be OK only if you have selected Completed in the step above Edit the activity settings again, check that Completion options locked will appear, add some text to the description and click save without any further change: no error should appear
    • Affected Branches:
      MOODLE_25_STABLE
    • Fixed Branches:
      MOODLE_23_STABLE, MOODLE_24_STABLE, MOODLE_25_STABLE
    • Pull from Repository:
    • Pull Master Branch:
      m26_MDL-40095_Completion_locked_Error_on_save

      Description

      When a scorm package is set with activity completion based on "Require status" condition and this activity completion is locked (a student marked this activity as completed) it is impossible to update the activity.
      Indeed, in this conditions any parameter modification (even minor as the description) generate an error (error/moodle/dmlwriteexception) when you save it.
      When debugging is activated, it seems that is the DB update request which is malformed.
      The "completionstatusrequired" field is set with an array instead an integer.

      See the screen shot in attachment for more details.

      Note that if you lock the activity completion settings with a condition on a note for example there is no problem.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Votes:
                  5 Vote for this issue
                  Watchers:
                  11 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Fix Release Date:
                    8/Jul/13