diff options
author | Khaled Lela <eng.khaled.lela@gmail.com> | 2022-02-23 17:30:18 +0200 |
---|---|---|
committer | Khaled Lela <eng.khaled.lela@gmail.com> | 2022-02-23 17:30:18 +0200 |
commit | 853e7ded74f589164a2ebce5fd6a0502639d54a1 (patch) | |
tree | 5a365ec0c9bb7709c7f5e9606774442be640e906 | |
parent | b518a5bbc9e18f6a2ac1827e24e733ec508ff0d5 (diff) |
handle scorm archive ot found, update config
-rw-r--r-- | config/scorm.php | 9 | ||||
-rw-r--r-- | database/migrations/create_scorm_tables.php.stub | 4 | ||||
-rw-r--r-- | src/Manager/ScormDisk.php | 19 | ||||
-rw-r--r-- | src/Model/ScormModel.php | 11 |
4 files changed, 29 insertions, 14 deletions
diff --git a/config/scorm.php b/config/scorm.php index 4728563..d228bcc 100644 --- a/config/scorm.php +++ b/config/scorm.php @@ -3,10 +3,11 @@ return [ 'table_names' => [ - 'user_table' => 'users', // user table name on main LMS app. - 'scorm_table' => 'scorm', - 'scorm_sco_table' => 'scorm_sco', - 'scorm_sco_tracking_table' => 'scorm_sco_tracking', + 'user_table' => 'users', // user table name on main LMS app. + 'resource_table' => 'resource', // resource table on LMS app. + 'scorm_table' => 'scorm', + 'scorm_sco_table' => 'scorm_sco', + 'scorm_sco_tracking_table' => 'scorm_sco_tracking', ], /** * Scorm directory. You may create a custom path in file system diff --git a/database/migrations/create_scorm_tables.php.stub b/database/migrations/create_scorm_tables.php.stub index cc9dc38..1fa78f6 100644 --- a/database/migrations/create_scorm_tables.php.stub +++ b/database/migrations/create_scorm_tables.php.stub @@ -20,9 +20,9 @@ class CreateScormTables extends Migration } // scorm_model - Schema::create($tableNames['scorm_table'], function (Blueprint $table) { + Schema::create($tableNames['scorm_table'], function (Blueprint $table) use ($tableNames){ $table->bigIncrements('id'); - $table->morphs('resource'); + $table->morphs($tableNames['resource_table']); $table->string('title'); $table->string('origin_file')->nullable(); $table->string('version'); diff --git a/src/Manager/ScormDisk.php b/src/Manager/ScormDisk.php index cb09db5..5f15d38 100644 --- a/src/Manager/ScormDisk.php +++ b/src/Manager/ScormDisk.php @@ -2,6 +2,7 @@ namespace Peopleaps\Scorm\Manager; +use Exception; use Illuminate\Filesystem\FilesystemAdapter; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Storage; @@ -45,14 +46,18 @@ class ScormDisk */ public function readScormArchive($file, callable $fn) { - if (Storage::exists($file)) { - Storage::delete($file); + try { + if (Storage::exists($file)) { + Storage::delete($file); + } + Storage::writeStream($file, $this->getArchiveDisk()->readStream($file)); + $path = Storage::path($file); + call_user_func($fn, $path); + unlink($path); // delete temp package + Storage::deleteDirectory(dirname($file)); // delete temp dir + } catch (Exception $ex) { + throw new StorageNotFoundException('scorm_archive_not_found'); } - Storage::writeStream($file, $this->getArchiveDisk()->readStream($file)); - $path = Storage::path($file); - call_user_func($fn, $path); - unlink($path); // delete temp package - Storage::deleteDirectory(dirname($file)); // delete temp dir } /** diff --git a/src/Model/ScormModel.php b/src/Model/ScormModel.php index 2777038..61ccb16 100644 --- a/src/Model/ScormModel.php +++ b/src/Model/ScormModel.php @@ -20,7 +20,16 @@ class ScormModel extends Model return config('scorm.table_names.scorm_table', parent::getTable()); } - public function scos() { + public function scos() + { return $this->hasMany(ScormScoModel::class, 'scorm_id', 'id'); } + + /** + * @return HasOne + */ + public function resource() + { + return $this->hasOne(config('scorm.table_names.resource_table')); + } } |