diff options
author | Khaled Mohamed <Eng.Khaled.Lela@gmail.com> | 2022-08-22 14:51:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-22 14:51:20 +0200 |
commit | 1764d938b4c7136738577d452f201bc3078156e9 (patch) | |
tree | 63863454b8376a754f054d13614ebbefd9137ae9 | |
parent | 99e679a54328e5bfa00a8a481cacb124f261bd9e (diff) | |
parent | 5d901a380c38335abfc9df650f478fb0386c66cc (diff) |
Merge branch 'main' into main
-rw-r--r-- | README.md | 9 | ||||
-rw-r--r-- | src/Manager/ScormDisk.php | 1 | ||||
-rw-r--r-- | src/Manager/ScormManager.php | 14 | ||||
-rw-r--r-- | src/Model/ScormModel.php | 28 |
4 files changed, 48 insertions, 4 deletions
@@ -120,4 +120,11 @@ class ScormController extends BaseController // TODO save user progress... } } -```
\ No newline at end of file +``` + +***Upgrade from version 2 to 3:*** +Update your Scorm table: +- Add entry_url (varchar 191 / nullable) +- Change hash_name to title +- Remove origin_file_mime field + diff --git a/src/Manager/ScormDisk.php b/src/Manager/ScormDisk.php index ba0ade8..a280142 100644 --- a/src/Manager/ScormDisk.php +++ b/src/Manager/ScormDisk.php @@ -37,7 +37,6 @@ class ScormDisk } return true; } - return false; } diff --git a/src/Manager/ScormManager.php b/src/Manager/ScormManager.php index 243036c..c804385 100644 --- a/src/Manager/ScormManager.php +++ b/src/Manager/ScormManager.php @@ -86,6 +86,7 @@ class ScormManager if (is_null($scormData) || !is_array($scormData)) { $this->onError('invalid_scorm_data'); } + /** * ScormModel::whereOriginFile Query Builder style equals ScormModel::where('origin_file',$value) * @@ -101,6 +102,7 @@ class ScormManager * return $this->dynamicWhere($method, $parameters); **/ $scorm = ScormModel::whereOriginFile($filename); + // Check if scom package already exists to drop old one. if (!$scorm->exists()) { $scorm = new ScormModel(); @@ -128,7 +130,7 @@ class ScormManager } } - return $scormData; + return $scorm; } /** @@ -477,7 +479,7 @@ class ScormManager $lessonStatus = isset($data['cmi.core.lesson_status']) ? $data['cmi.core.lesson_status'] : 'unknown'; $sessionTime = isset($data['cmi.core.session_time']) ? $data['cmi.core.session_time'] : null; $sessionTimeInHundredth = $this->convertTimeInHundredth($sessionTime); - $progression = isset($data['cmi.progress_measure']) ? floatval($data['cmi.progress_measure']) : 0; + $progression = !empty($scoreRaw) ? floatval($scoreRaw) : 0; $entry = isset($data['cmi.core.entry']) ? $data['cmi.core.entry'] : null; $exit = isset($data['cmi.core.exit']) ? $data['cmi.core.exit'] : null; $lessonLocation = isset($data['cmi.core.lesson_location']) ? $data['cmi.core.lesson_location'] : null; @@ -631,6 +633,14 @@ class ScormManager return $updateResult; } + public function resetUserData($scormId, $userId) { + $scos = ScormScoModel::where('scorm_id', $scormId)->get(); + + foreach ($scos as $sco) { + $scoTracking = ScormScoTrackingModel::where('sco_id', $sco->id)->where('user_id', $userId)->delete(); + } + } + private function convertTimeInHundredth($time) { if ($time != null) { diff --git a/src/Model/ScormModel.php b/src/Model/ScormModel.php index 4421d98..e7c5a16 100644 --- a/src/Model/ScormModel.php +++ b/src/Model/ScormModel.php @@ -15,6 +15,34 @@ use Illuminate\Database\Eloquent\Model; */ class ScormModel extends Model { + + /** + * The attributes that are mass assignable. + * + * @var array + */ + protected $fillable = [ + 'id', + 'resource_id', + 'resource_type', + 'title', + 'origin_file', + 'version', + 'ratio', + 'uuid', + 'entry_url', + 'created_at', + 'updated_at', + ]; + + /** + * Get the parent resource model (user or post). + */ + public function resourceable() + { + return $this->morphTo(__FUNCTION__, 'resource_type', 'resource_id'); + } + public function getTable() { return config('scorm.table_names.scorm_table', parent::getTable()); |