Skip to content
Ed Mozley edited this page May 13, 2026 · 1 revision

LMS (Learning Management System)

Folder: lms/ Colour: Blue #2563eb

Learning Management System with SCORM course player, learning groups, assignments with deadlines, and per-user progress tracking. Supports SCORM 1.1, 1.2, and 2004.

Course Management

  • Upload SCORM ZIP packages — the manifest is auto-parsed to detect SCORM version and launch URL
  • Each course's files are extracted to lms/content/<course-id>/
  • Courses can be deactivated without deleting (keeps historical progress data intact)

SCORM Player (player.php)

  • Full-viewport iframe rendering the course's launch page
  • Dual JavaScript API bridge — exposes both window.API (SCORM 1.x) and window.API_1484_11 (SCORM 2004) so courses find whichever they look for
  • All CMI calls (LMSInitialize, LMSGetValue, LMSSetValue, LMSCommit, LMSFinish and their 2004 equivalents) are bridged to the LMS backend
  • Resume supportcmi.suspend_data and cmi.location are persisted so courses pick up where they left off

Progress Tracking

Per-user state per course:

  • Status: Not started, Incomplete, Completed, Passed, Failed
  • Score (raw, min, max, scaled)
  • Bookmark (cmi.location)
  • Suspend data (cmi.suspend_data)
  • All raw CMI key/value pairs

Learning Groups

  • Create groups of analysts (e.g. "Service Desk L1", "Engineers")
  • Many-to-many membership — an analyst can be in multiple groups
  • Assign courses to groups with optional deadlines — gives everyone in the group the assignment, with a single deadline policy

Admin Dashboard

Four tabs:

Tab Purpose
Courses List uploaded courses, version info, total assignments
Groups Manage learning groups and membership
Assignments Assign courses to groups or individuals, with deadlines
Progress Every assigned analyst's completion status with overdue highlighting. Filterable by course, group, or status

Learner Data Viewer

For each learner × course pair, a View button shows:

  • Quiz responses with correct / incorrect badges
  • Objectives and their status
  • Scores (raw, scaled, mastery)
  • Suspend data with syntax-highlighted JSON (when the content vendor stores JSON in suspend_data)
  • All raw CMI elements

Useful for diagnosing "why did this person fail" and for compliance audits.

Key Tables

Table Purpose
lms_courses Course metadata (title, SCORM version, launch URL, active flag)
lms_groups Learning groups
lms_group_members Many-to-many group membership
lms_assignments Course assignments to individuals or groups (with deadlines)
lms_progress Per-user per-course status, score, bookmark
lms_cmi_data All raw CMI key/value pairs
lms_quiz_responses Captured quiz responses for the learner data viewer

Clone this wiki locally