SCORM 1.2 LMSFinish Issue in Linux Moodle 2.4
I am having an issue with SCORM 1.2 Single SCOs that were working fine in a Moodle 2.2 Windows implementation, but are now hitting a problem in a Moodle 2.4 installation on Linux. In doing some debugging work, I think I've identified where the issue is occurring and how it differs from the Windows installation.
The issue occurs only when clicking the "Next" button in our course, where we have attached an "Exit Course" trigger. In the debug window, a sequence of SCORM functions are called. The sequence looks like this:
1159: - In SCORM_Finish strExitType=SUSPEND, blnStatusWasSet=true
1160: - In SCORM_ClearErrorInfo
1161: - Setting Exit
1162: - In SCORM_TranslatgeExitTypeToSCORM strExitType-SUSPEND
1163: - Returning suspend
1164: - SCORM_CallLMSSetValue strElement=cmi.core.exit, strValue=suspend
1165: - In SCORM_GrabAPI
1166: - SCORM_GrabAPI, returning
1167: - Calling LMSSetValue
1168: - strResult=true
1169: - Returning true
1170: - Calling Commit
1171: - In SCORM_CallLMSCommit
1172: - In SCORM_GrabAPI
1173: - SCORM_GrabAPI, returning
1174: - Calling LMSCommit
1175: - strResult=true
1176: - Returning true
1177: - Calling Finish
1178: - In SCORM_CallLMSFinish
1179: - In SCORM_GrabAPI
1180: - SCORM_GrabAPI, returning
1181: - Calling LMS Finish
Now here is where the problem begins. In Windows Moodle 2.2, after calling LMSFinish, you see the following:
These lines are missing in Linux Moodle 2.2, which stem from the function SCORM_CallLMSFinish() defined in SCORMFunctions.js in the /lms folder in the published package.
By looking at the API Debug window in Moodle, I see that LMSFinish is called, and then the API object shuts down. So the line "strResult = SCORM_objAPI.LMSFinish("");" from SCORM_CallLMSFinish() does not execute, since no API object exists. So even though I click "Next", which executes the "Exit Course" trigger, the Storyline content just stays as is. When I click the "Next" button AGAIN, I see the "Goodbye.html" file displayed, more functions execute in the debug window, but there is still no API object.
So I can then exit the SCO by clicking on a button provided in the Moodle Interface, which brings me back to the course menu. But when I try to re-enter the SCO, it just hangs (I assume because it did not shut down properly. Everything else seems to be working fine (Quizzes passing values, suspend data, completion of the SCO, etc.), but there is some issue with "Exit Course/LMSFinish"
Any advice on how to proceed would be appreciated. I am wondering if some of the functions within the Exit Course sequence of events could be moved up so this shutdown of the API object does not cause a problem.