diff options
author | Devian <devianleong@gmail.com> | 2021-05-04 11:24:04 +0800 |
---|---|---|
committer | Devian <devianleong@gmail.com> | 2021-05-04 11:24:04 +0800 |
commit | d0774ab8ab8d01f4b3af84f9c5a01e79a1d2efe1 (patch) | |
tree | 5cb7331ed5ad4882a4caebecf2be6d9a7dd7bde1 /src/Manager | |
parent | 60b400a2a3e4b9838d52fb91a427b905932dcb2a (diff) |
Added delete1.0.8
Diffstat (limited to 'src/Manager')
-rw-r--r-- | src/Manager/ScormManager.php | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/Manager/ScormManager.php b/src/Manager/ScormManager.php index af737d1..4ee9710 100644 --- a/src/Manager/ScormManager.php +++ b/src/Manager/ScormManager.php @@ -45,6 +45,7 @@ class ScormManager $scormData = null; $zip = new ZipArchive(); $openValue = $zip->open($file); + $oldModel = null; $isScormArchive = (true === $openValue) && $zip->getStream('imsmanifest.xml'); @@ -56,8 +57,11 @@ class ScormManager $scormData = $this->generateScorm($file); } + $oldModel = $model; // get old scorm data for deletion (If success to store new) + // save to db if ($scormData && is_array($scormData)) { + $scorm = new ScormModel(); $scorm->version = $scormData['version']; $scorm->hash_name = $scormData['hashName']; @@ -95,6 +99,10 @@ class ScormManager $sco->save(); } } + + if ($oldModel) { + $this->deleteScormData($oldModel); + } } return $scormData; @@ -148,6 +156,35 @@ class ScormManager return $data; } + public function deleteScormData(Model $model) { + // Delete after the previous item is stored + if ($model) { + + $oldScos = $model->scos()->get(); + + // Delete all tracking associate with sco + foreach ($oldScos as $oldSco) { + $oldSco->scoTrackings->delete(); + } + + $model->scos()->delete(); // delete scos + $model->delete(); // delete scorm + + // Delete folder from server + $this->deleteScormFolder($model->hash_name); + } + } + /** + * @param $folderHashedName + * @return bool + */ + protected function deleteScormFolder($folderHashedName) { + + $response = Storage::disk('scorm')->deleteDirectory($folderHashedName); + + return $response; + } + /** * Unzip a given ZIP file into the web resources directory. * @@ -162,7 +199,6 @@ class ScormManager throw new StorageNotFoundException(); } - $rootFolder = config('filesystems.disks.'.config('scorm.disk').'.root'); if (substr($rootFolder, -1) != '/') { |