diff options
author | Khaled Lela <eng.khaled.lela@gmail.com> | 2022-02-19 21:00:00 +0200 |
---|---|---|
committer | Khaled Lela <eng.khaled.lela@gmail.com> | 2022-02-19 21:00:00 +0200 |
commit | f03f57dcbbbf34feb4eb03bba7ea73dfe9b182b3 (patch) | |
tree | 5673f3e3480f65e8193f9b7375ba356e8be4afe1 | |
parent | 0064e98aaef85e8db7d42b009b250983534aff74 (diff) |
feat(disk): add download scorm package zip.
-rw-r--r-- | composer.json | 3 | ||||
-rw-r--r-- | src/Manager/ScormDisk.php | 16 | ||||
-rw-r--r-- | src/Manager/ScormManager.php | 5 |
3 files changed, 23 insertions, 1 deletions
diff --git a/composer.json b/composer.json index 7e69279..0b72267 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,8 @@ "doctrine/common": "^3.1", "nesbot/carbon": "^2.42", "ext-zip": "*", - "ext-dom": "*" + "ext-dom": "*", + "maennchen/zipstream-php": "^2.1" }, "autoload": { "psr-4": { diff --git a/src/Manager/ScormDisk.php b/src/Manager/ScormDisk.php index 249f027..9417ef3 100644 --- a/src/Manager/ScormDisk.php +++ b/src/Manager/ScormDisk.php @@ -4,8 +4,10 @@ namespace Peopleaps\Scorm\Manager; use Illuminate\Filesystem\FilesystemAdapter; use Illuminate\Support\Facades\Storage; +use Peopleaps\Scorm\Entity\Scorm; use Peopleaps\Scorm\Exception\StorageNotFoundException; use ZipArchive; +use ZipStream\ZipStream; class ScormDisk { @@ -42,6 +44,20 @@ class ScormDisk return true; } + public function download(Scorm $scorm) + { + return response()->stream(function () use ($scorm) { + // enable output of HTTP headers + // $options = new ZipStream\Option\Archive(); + // $options->setSendHttpHeaders(true); + $zip = new ZipStream($scorm->title . ".zip"); + /** @var FilesystemAdapter $disk */ + $disk = $this->getDisk(); + $zip->addFileFromStream($scorm->title, $disk->readStream($scorm->uuid)); + $zip->finish(); + }); + } + /** * @param string $directory * @return bool diff --git a/src/Manager/ScormManager.php b/src/Manager/ScormManager.php index 935bb2d..aedfae3 100644 --- a/src/Manager/ScormManager.php +++ b/src/Manager/ScormManager.php @@ -667,4 +667,9 @@ class ScormManager return $formattedValue; } + + + public function download(Scorm $scorm){ + return $this->scormDisk->download($scorm); + } } |