From f03f57dcbbbf34feb4eb03bba7ea73dfe9b182b3 Mon Sep 17 00:00:00 2001 From: Khaled Lela Date: Sat, 19 Feb 2022 21:00:00 +0200 Subject: feat(disk): add download scorm package zip. --- src/Manager/ScormDisk.php | 16 ++++++++++++++++ src/Manager/ScormManager.php | 5 +++++ 2 files changed, 21 insertions(+) (limited to 'src') 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); + } } -- cgit v1.2.3