1.Uploading a scorm package (.zip) in moodle:
a. Log-in to moodle, navigate to your course and “turn editing on”:

b. Click “Add an activity or resource” link:

c. Select Scorm package from list and click Add button:

d.Add basic information about the SCORM package that you are uploading. Then choose the file (.zip) to upload and save. On save Moodle Form (mod_form.php) calls function.
scorm_add_instance($scorm, $mform=null) (“/mymoodle/mod/scorm/lib.php”) //$scorm an object containing all the necessary data, (defined by the form in mod_form.php) this function will create a new instance and return the id number of the new instance:
$scorm contain:
stdClass Object
(
[name] => s3
[mform_isexpanded_id_packagehdr] => 1
[scormtype] => local
[packagefile] => 133660316
[updatefreq] => 0
[popup] => 0
[width] => 100
[height] => 500
[displayactivityname] => 1
[skipview] => 0
[hidebrowse] => 0
[displaycoursestructure] => 0
[hidetoc] => 0
[nav] => 1
[navpositionleft] => -100
[navpositiontop] => -100
[displayattemptstatus] => 1
[timeopen] => 0
[timeclose] => 0
[grademethod] => 1
[maxgrade] => 100
[maxattempt] => 0
[whatgrade] => 0
[forcenewattempt] => 0
[lastattemptlock] => 0
[forcecompleted] => 0
[auto] => 0
[autocommit] => 0
[masteryoverride] => 1
[datadir] =>
[pkgtype] =>
[launch] =>
[redirect] => no
[redirecturl] => ../mod/scorm/view.php?id=
[visible] => 1
[cmidnumber] =>
[groupmode] => 0
[groupingid] => 0
[availabilityconditionsjson] => {"op":"&","c":[],"showc":[]}
[tags] =>
[course] => 3
[coursemodule] => 28
[section] => 0
[module] => 18
[modulename] => scorm
[instance] =>
[add] => scorm
[update] => 0
[return] => 0
[sr] => 0
[competency_rule] => 0
[submitbutton2] => Save and return to course
[completion] => 0
[completionview] => 0
[completionexpected] => 0
[completiongradeitemnumber] =>
[conditiongradegroup] => Array
(
)
[conditionfieldgroup] => Array
(
)
[intro] =>
[introformat] => 1
)
This function stores the package in scorm table of moodle. In scorm table column “sha1hash” define the location of uploaded package on server.
For example: “e4011f5293963ef8428cdfece45bdf623b0e164d” – first 4 characters create the path where uploaded package is located, like this “/var/www/mymoodledata/filedir/e4/01”.
2. Reading the imsmanifest.xml to make the appropriate Table of contents
Moodle sets up SCORM 1.2/2004 packages using the manifest file:
Moodle calls function scorm_parse_scorm(&$scorm, $manifest) (from “/mymoodle/mod/scorm/datamodels/scormlib.php”)
Where $manifest – path to manifest file or stored_file:
$manifest contains: stored_file Object ( [fs:stored_file:private] => file_storage Object ( [filedir:file_storage:private] => /var/www/mymoodledata/filedir [trashdir:file_storage:private] => /var/www/mymoodledata/trashdir [tempdir:file_storage:private] => /var/www/mymoodledata/temp/filestorage [dirpermissions:file_storage:private] => 511 [filepermissions:file_storage:private] => 438 [unoconvformats:file_storage:private] => ) [file_record:stored_file:private] => stdClass Object ( [id] => 1750 [contenthash] => 8353842d3fb4694026181524e59a6be2ae6e3cf3 [pathnamehash] => 7ba30b18aae3d442cd64f8b55e816cdf121c8710 [contextid] => 110 [component] => mod_scorm [filearea] => content [itemid] => 0 [filepath] => / [filename] => imsmanifest.xml [userid] => [filesize] => 12353 [mimetype] => application/xml [status] => 0 [source] => [author] => [license] => [timecreated] => 1472648288 [timemodified] => 1472648288 [sortorder] => 0 [referencefileid] => [repositoryid] => [reference] => [referencelastsync] => ) [filedir:stored_file:private] => /var/www/mymoodledata/filedir [repository:stored_file:private] => )
This function saves Table of content in scorm_scoes moodle table.
3. Launching the content:
Moodle uses /mymoodle/mod/scorm/loadSCO.php and /mymoodle/mod/scorm/player.php file to load content.
4. Track user:
Moodle uses scorm_scoes_track table to store the track information.
All function related to scorm are in file “/mymoodle/mod/scorm/locallib.php”.
