diff options
author | Khaled Lela <eng.khaled.lela@gmail.com> | 2022-02-27 21:41:47 +0200 |
---|---|---|
committer | Khaled Lela <eng.khaled.lela@gmail.com> | 2022-02-27 21:41:47 +0200 |
commit | f3da307a245c7d0ed59592c06ca0fbd7806e0f51 (patch) | |
tree | 223aa4fc37ad4d8ea9196e3c21c8fac598bfa7b7 | |
parent | c6c79fa525f03adaf0673e3571323b9635743035 (diff) |
update runtime progress data.
-rw-r--r-- | src/Manager/ScormManager.php | 21 | ||||
-rw-r--r-- | src/Model/ScormScoTrackingModel.php | 7 |
2 files changed, 23 insertions, 5 deletions
diff --git a/src/Manager/ScormManager.php b/src/Manager/ScormManager.php index 0ff7ed8..61a0628 100644 --- a/src/Manager/ScormManager.php +++ b/src/Manager/ScormManager.php @@ -300,9 +300,8 @@ class ScormManager */ public function getScoByUuid($scoUuid) { - $sco = ScormScoModel::with([ - 'scorm' - ])->where('uuid', $scoUuid) + $sco = ScormScoModel::with(['scorm']) + ->where('uuid', $scoUuid) ->firstOrFail(); return $sco; @@ -313,7 +312,7 @@ class ScormManager return ScormScoTrackingModel::where('sco_id', $scoId)->where('user_id', $userId)->first(); } - public function createScoTracking($scoUuid, $userId = null) + public function createScoTracking($scoUuid, $userId = null, $userName = null) { $sco = ScormScoModel::where('uuid', $scoUuid)->firstOrFail(); @@ -321,6 +320,7 @@ class ScormManager $scoTracking = new ScoTracking(); $scoTracking->setSco($sco->toArray()); + $cmi = null; switch ($version) { case Scorm::SCORM_12: $scoTracking->setLessonStatus('not attempted'); @@ -338,16 +338,29 @@ class ScormManager } else { $scoTracking->setIsLocked(true); } + $cmi = [ + 'cmi.core.entry' => $scoTracking->getEntry(), + 'cmi.core.student_id' => $userId, + 'cmi.core.student_name' => $userName, + ]; + break; case Scorm::SCORM_2004: $scoTracking->setTotalTimeString('PT0S'); $scoTracking->setCompletionStatus('unknown'); $scoTracking->setLessonStatus('unknown'); $scoTracking->setIsLocked(false); + $cmi = [ + 'cmi.entry' => 'ab-initio', + 'cmi.learner_id' => $userId, + 'cmi.learner_name' => $userName, + 'cmi.scaled_passing_score' => 0.5, + ]; break; } $scoTracking->setUserId($userId); + $scoTracking->setDetails($cmi); // Create a new tracking model $storeTracking = ScormScoTrackingModel::firstOrCreate([ diff --git a/src/Model/ScormScoTrackingModel.php b/src/Model/ScormScoTrackingModel.php index 2c057c7..407e2da 100644 --- a/src/Model/ScormScoTrackingModel.php +++ b/src/Model/ScormScoTrackingModel.php @@ -35,12 +35,17 @@ class ScormScoTrackingModel extends Model 'updated_at' ]; + protected $casts = [ + 'details' => 'array', + ]; + public function getTable() { return config('scorm.table_names.scorm_sco_tracking_table', parent::getTable()); } - public function sco() { + public function sco() + { return $this->belongsTo(ScormScoModel::class, 'sco_id', 'id'); } } |