phuongdong / laravel-scorm
PEOPLEAPS scorm 包
3.0.4
2022-03-10 09:37 UTC
Requires
- php: ^7.4 || ^8.0
- ext-dom: *
- ext-zip: *
- doctrine/common: ^3.1
- nesbot/carbon: ^2.42
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 安装
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 更改为标题
- 删除 origin_file_mime 字段