devianl2 / laravel-scorm

Laravel scorm package
MIT License
41 stars 20 forks source link

Laravel Scorm Handler (DISCONTINUE)

Design for Laravel LMS

N|Solid

Laravel Scorm Handler is a laravel package that simplify scorm package contents (zip file) into laravel storage.

Highlight of this package:

Things you must know before you install:

1) You have a domain/subdomain to serve scorm content 2) Scorm content folder/path must be outside from laravel application (Security issue). 3) Virtual host to point domain/subdomain to scorm content directory (E.g: /scorm/hashed_folder_name/) 4) Uploaded file should have the right permission to extract scorm files into scorm content directory 5) This package will handle folder creation into scorm content directory (E.g: /scorm/{auto_generated_hashname}/imsmanifest.xml)

Step 1:

Install from composer (For flysystem v1)

composer require devianl2/laravel-scorm:"^3.0"

Install from composer (For flysystem v2/v3)

composer require devianl2/laravel-scorm

Step 2:

Run vendor publish for migration and config file

php artisan vendor:publish --provider="Peopleaps\Scorm\ScormServiceProvider"

Step 3:

Run config cache for update cached configuration

php artisan config:cache

Step 4:

Migrate file to database

php artisan migrate

Step 5 (Optional):

Update SCORM config under config/scorm

After finishing don't forget to run php artisan config:cache

Step 6 (Optional):

Usage

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...
    }
}

Upgrade from version 2 to 3: Update your Scorm table:

Upgrade from version 3 to 4: Update your Scorm table: