summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Lela <eng.khaled.lela@gmail.com>2022-02-23 17:30:18 +0200
committerKhaled Lela <eng.khaled.lela@gmail.com>2022-02-23 17:30:18 +0200
commit853e7ded74f589164a2ebce5fd6a0502639d54a1 (patch)
tree5a365ec0c9bb7709c7f5e9606774442be640e906
parentb518a5bbc9e18f6a2ac1827e24e733ec508ff0d5 (diff)
handle scorm archive ot found, update config
-rw-r--r--config/scorm.php9
-rw-r--r--database/migrations/create_scorm_tables.php.stub4
-rw-r--r--src/Manager/ScormDisk.php19
-rw-r--r--src/Model/ScormModel.php11
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'));
+ }
}