devianl2 / laravel-scorm
PEOPLEAPS scorm 包
4.0.1
2022-09-29 03:37 UTC
Requires
- php: ^7.4 || ^8.0
- ext-dom: *
- ext-zip: *
- doctrine/common: ^3.1
- league/flysystem: ^2.0 || ^3.0
- nesbot/carbon: ^2.42
This package is auto-updated.
Last update: 2024-09-13 09:53:00 UTC
README
Laravel LMS 设计
Laravel Scorm 处理器是一个 laravel 包,可以将 scorm 包内容(zip 文件)简化为 laravel 存储。
本包亮点
- 具有自动解压并将 sco 存入数据库的 zipfile 处理器
- 将用户 CMI 数据存入数据库
- 获取用户最后的学习数据
安装前必须了解的事项
- 您有一个用于服务 scorm 内容的域名/子域名
- Scorm 内容文件夹/路径必须在 laravel 应用程序外部(安全问题)。
- 虚拟主机将域名/子域名指向 scorm 内容目录(例如:/scorm/hashed_folder_name/)
- 上传的文件应具有将 scorm 文件提取到 scorm 内容目录的正确权限
- 此包将处理 scorm 内容目录中的文件夹创建(例如:/scorm/{auto_generated_hashname}/imsmanifest.xml)
步骤 1
通过 composer 安装(针对 flysystem v1)
composer require devianl2/laravel-scorm:"^3.0"
通过 composer 安装(针对 flysystem v2/v3)
composer require devianl2/laravel-scorm
步骤 2
运行 vendor publish 以进行迁移和配置文件
php artisan vendor:publish --provider="Peopleaps\Scorm\ScormServiceProvider"
步骤 3
运行配置缓存以更新缓存配置
php artisan config:cache
步骤 4
将文件迁移到数据库
php artisan migrate
步骤 5(可选)
在 config/scorm
下更新 SCORM 配置
- 更新 scorm 表名。
- 更新 SCORM 磁盘并配置磁盘 @see config/filesystems.php
'disk' => 'scorm-local',
'disk' => 'scorm-s3',
// @see config/filesystems.php
'disks' => [
.....
'scorm-local' => [
'driver' => 'local',
'root' => env('SCORM_ROOT_DIR'), // set root dir
'visibility' => 'public',
],
's3-scorm' => [
'driver' => 's3',
'root' => env('SCORM_ROOT_DIR'), // set root dir
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_SCORM_BUCKET'),
],
.....
]
在 resources/lang/en-US/scorm.php
下更新 SCORM 翻译
- SCORM 运行时错误异常处理器,(查看下一个示例)
- 根据需要复制和翻译错误消息,并带有键用于其他语言。
完成之后,不要忘记运行 php artisan config:cache
步骤 6(可选)
用法
class ScormController extends BaseController
{
/** @var ScormManager $scormManager */
private $scormManager;
/**
* ScormController constructor.
* @param ScormManager $scormManager
*/
public function __construct(ScormManager $scormManager)
{
$this->scormManager = $scormManager;
}
public function show($id)
{
$item = ScormModel::with('scos')->findOrFail($id);
// response helper function from base controller reponse json.
return $this->respond($item);
}
public function store(ScormRequest $request)
{
try {
$scorm = $this->scormManager->uploadScormArchive($request->file('file'));
// handle scorm runtime error msg
} catch (InvalidScormArchiveException | StorageNotFoundException $ex) {
return $this->respondCouldNotCreateResource(trans('scorm.' . $ex->getMessage()));
}
// response helper function from base controller reponse json.
return $this->respond(ScormModel::with('scos')->whereUuid($scorm['uuid'])->first());
}
public function saveProgress(Request $request)
{
// TODO save user progress...
}
}
从版本 2 升级到 3: 更新您的 Scorm 表
- 添加 entry_url(varchar 191 / 可空)
- 将 hash_name 更改为 title
- 删除 origin_file_mime 字段
从版本 3 升级到 4: 更新您的 Scorm 表
- 添加 identifier(varchar 191)