Scenario:
- SCORM 1.2 course;
- Single attempt allowed.
If the content has already been launched and e.g. the status of an item is "failed", at launch time the "failed" status is the default value. Suppose that during the life cycle of the tracking session the status is set to: - incomplete + LMSCommit() => transferred into the DB
- failed + LMSCommit() => no transfer at all into the DB
At the end of the session (LMSFinish()) the status of the item is "incomplete" instead of the expected value, "failed".
The fault is within the architecture of the datamodel object, as defined in datamodels/scorm_12.js.php: it mixes default datamodel values with initialization values from past session. This causes a fault in the logic coded in CollectData() in which only differences against default values, when available, are exposed to the server for being stored into the DB.