escolalms/courses

Escola 无头 LMS 课程

安装数: 20,250

依赖项: 24

建议者: 5

安全性: 0

星标: 5

关注者: 2

分支: 1

公开问题: 0

类型:

0.4.40 2024-07-10 07:30 UTC

This package is auto-updated.

Last update: 2024-09-10 07:45:28 UTC


README

课程和内容包

swagger codecov phpunit downloads downloads downloads Maintainability Mutation testing badge

功能说明

此包用于为 EscolaLms 创建课程。

安装

  • composer require escolalms/courses
  • php artisan migrate
  • php artisan db:seed --class="EscolaLms\Courses\Database\Seeders\CoursesPermissionSeeder"

定时任务

  • 定时任务在 ScheduleServiceProvider 中可用
    • $schedule->job(CheckForDeadlines::class)->hourly() - 每小时执行一次
    • $schedule->job(ActivateCourseJob::class)->daily() - 每天执行一次

端点

所有端点都在 swagger

测试

运行 ./vendor/bin/phpunit --filter 'EscolaLms\\Courses\\Tests' 以运行测试。请参阅 tests 文件夹,因为它是一个很好的文档附录起点。

事件

  • EscolaLms\Courses\Events\CourseAccessFinished => 当用户失去课程访问权限时触发事件。
  • EscolaLms\Courses\Events\CourseAccessStarted => 当用户获得课程访问权限时触发事件。
  • EscolaLms\Courses\Events\CourseAssigned => 当管理员分配访问用户时触发事件。
  • EscolaLms\Courses\Events\CourseDeadlineSoon => 当课程截止日期临近时触发事件。
  • EscolaLms\Courses\Events\CoursedPublished => 当课程发布时触发事件。
  • EscolaLms\Courses\Events\CourseFinished => 当课程结束时触发事件。
  • EscolaLms\Courses\Events\CourseStarted => 当课程开始时触发事件。
  • EscolaLms\Courses\Events\CourseStatusChanged => 当课程状态发生变化时触发事件。
  • EscolaLms\Courses\Events\CourseTutorAssigned => 当导师被分配到课程时触发事件。
  • EscolaLms\Courses\Events\CourseTutorUnassigned => 当导师被从课程中移除时触发事件。
  • EscolaLms\Courses\Events\CourseUnassigned => 当用户被从课程中移除时触发事件。
  • EscolaLms\Courses\Events\TopicFinished => 当课程主题完成时触发事件。

权限

权限定义在 seeder

模型关系

模型用户必须扩展 HasCourses 类

class User extends EscolaLms\Core\Models\User
{
    use HasCourses;

数据库关系

存在简单的关联。有关图示,请参阅 文档

  1. Course 课程的一般类别
  2. Lesson 按课程分组
  3. Topic 按课程分组
Course 1 -> n Lesson
Lesson 1 -> n Topic
Topic 1 -> 1 TopicContent

TopicContent 是一个抽象模型,此包包含一些示例实现,例如 RichTextAudioVideoH5PImage

您可以通过向相同的主题端点(创建和更新)发送 POST 请求来创建任何内容模型,请参阅 文档示例

注意/api/topics 使用 form-data,这是由于 PHP 上传文件的本性。

可能的 TopicContent 列表可在端点 /api/topics/types 获取

课程/教学大纲/计划

应用用户通过获取 GET /api/courses/{id}/program 端点访问课程。这在使用户购买或拥有其他课程访问权限后完成。该端点渲染了整个课程所需的课程、课程单元、主题及其内容的树形结构。

添加新的 TopicContent 类型

在 ServiceProvider 中注册您的类,例如

use Illuminate\Support\ServiceProvider;
use EscolaLms\Courses\Facades\Topic;


class CustomServiceProvider extends ServiceProvider
{

    //...

    public function register()
    {
        Topic::registerContentClass(TopicContentCustom::class);
        // or
        Topic::registerContentClasses([TopicContentCustom::class, TopicAnotherContentCustom::class]);

        // also register JSON Resource for a type
        Topic::registerResourceClasses(Audio::class, [
            'client' => ClientAudioResource::class,
            'admin' => AdminAudioResource::class,
            'export' => ExportAudioResource::class,
        ]);

    }
}

请参考 EscolaLmsCourseServiceProvider.php,以及 Models/TopicContent

内容

该软件包附带生成带有课程单元和主题的课程的数据填充器

php artisan db:seed --class="\EscolaLms\Courses\Database\Seeders\CoursesSeeder"