summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Mohamed <Eng.Khaled.Lela@gmail.com>2022-08-22 14:51:20 +0200
committerGitHub <noreply@github.com>2022-08-22 14:51:20 +0200
commit1764d938b4c7136738577d452f201bc3078156e9 (patch)
tree63863454b8376a754f054d13614ebbefd9137ae9
parent99e679a54328e5bfa00a8a481cacb124f261bd9e (diff)
parent5d901a380c38335abfc9df650f478fb0386c66cc (diff)
Merge branch 'main' into main
-rw-r--r--README.md9
-rw-r--r--src/Manager/ScormDisk.php1
-rw-r--r--src/Manager/ScormManager.php14
-rw-r--r--src/Model/ScormModel.php28
4 files changed, 48 insertions, 4 deletions
diff --git a/README.md b/README.md
index fe02045..b8a6d53 100644
--- a/README.md
+++ b/README.md
@@ -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());