summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Lela <eng.khaled.lela@gmail.com>2022-02-27 21:41:47 +0200
committerKhaled Lela <eng.khaled.lela@gmail.com>2022-02-27 21:41:47 +0200
commitf3da307a245c7d0ed59592c06ca0fbd7806e0f51 (patch)
tree223aa4fc37ad4d8ea9196e3c21c8fac598bfa7b7
parentc6c79fa525f03adaf0673e3571323b9635743035 (diff)
update runtime progress data.
-rw-r--r--src/Manager/ScormManager.php21
-rw-r--r--src/Model/ScormScoTrackingModel.php7
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');
}
}