From 922c31fd40b1351ffed8b1807dad758af43b516c Mon Sep 17 00:00:00 2001 From: smarcet Date: Mon, 12 Jul 2021 21:48:14 -0300 Subject: [PATCH] Media uploads Mark as deleted Change-Id: Id45a95717120a7a5a3c623abb9cb71c2c4be6dd6 Signed-off-by: smarcet --- .../Materials/PresentationMediaUpload.php | 2 +- .../FileSystem/AbstractFileUploadStrategy.php | 46 +++++++++++++++++++ .../DropboxStorageFileUploadStrategy.php | 14 ++---- .../FileSystem/IFileUploadStrategy.php | 9 +++- .../Local/LocalStorageFileUploadStrategy.php | 17 ++----- .../S3/S3StorageFileUploadStrategy.php | 16 +++---- .../Swift/SwiftStorageFileUploadStrategy.php | 18 +++----- .../Model/Imp/PresentationService.php | 31 ++++++++++++- 8 files changed, 107 insertions(+), 46 deletions(-) create mode 100644 app/Services/FileSystem/AbstractFileUploadStrategy.php diff --git a/app/Models/Foundation/Summit/Events/Presentations/Materials/PresentationMediaUpload.php b/app/Models/Foundation/Summit/Events/Presentations/Materials/PresentationMediaUpload.php index 2ba9f392..80cf46b0 100644 --- a/app/Models/Foundation/Summit/Events/Presentations/Materials/PresentationMediaUpload.php +++ b/app/Models/Foundation/Summit/Events/Presentations/Materials/PresentationMediaUpload.php @@ -142,7 +142,7 @@ class PresentationMediaUpload extends PresentationMaterial return sprintf($format, $mountingFolder, $summit->getId(), $presentation->getId()); $presentation->generateSlug(); - return sprintf($format, $mountingFolder, sprintf("%s-%s",$summit->getId(), filter_var($summit->getRawSlug(), FILTER_SANITIZE_ENCODED)), sprintf("%s-%s", $presentation->getId(), filter_var($presentation->getSlug(), FILTER_SANITIZE_ENCODED))); + return sprintf($format, $mountingFolder, sprintf("%s-%s", $summit->getId(), filter_var($summit->getRawSlug(), FILTER_SANITIZE_ENCODED)), sprintf("%s-%s", $presentation->getId(), filter_var($presentation->getSlug(), FILTER_SANITIZE_ENCODED))); } public function __construct() diff --git a/app/Services/FileSystem/AbstractFileUploadStrategy.php b/app/Services/FileSystem/AbstractFileUploadStrategy.php new file mode 100644 index 00000000..0cac309f --- /dev/null +++ b/app/Services/FileSystem/AbstractFileUploadStrategy.php @@ -0,0 +1,46 @@ +getDriver())->putFileAs($path, $file, $filename); + } + + /** + * @param string $path + * @param string $filename + * @return bool|mixed + */ + public function markAsDeleted(string $path, string $filename) + { + Log::debug(sprintf("AbstractFileUploadStrategy:: markAsDeleted path %s filename %s", $path, $filename)); + return Storage::disk($this->getDriver())->move + ( + sprintf("%s/%s", $path, $filename), + sprintf("%s/DELETED_%s", $path, $filename) + ); + } +} \ No newline at end of file diff --git a/app/Services/FileSystem/Dropbox/DropboxStorageFileUploadStrategy.php b/app/Services/FileSystem/Dropbox/DropboxStorageFileUploadStrategy.php index 385a5f78..5cb72c06 100644 --- a/app/Services/FileSystem/Dropbox/DropboxStorageFileUploadStrategy.php +++ b/app/Services/FileSystem/Dropbox/DropboxStorageFileUploadStrategy.php @@ -11,21 +11,17 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use App\Services\FileSystem\IFileUploadStrategy; -use Illuminate\Http\UploadedFile; -use Illuminate\Support\Facades\Storage; +use App\Services\FileSystem\AbstractFileUploadStrategy; /** * Class DropboxStorageFileUploadStrategy * @package App\Services\FileSystem\Dropbox */ -final class DropboxStorageFileUploadStrategy implements IFileUploadStrategy +final class DropboxStorageFileUploadStrategy extends AbstractFileUploadStrategy { + const Driver = 'dropbox'; - /** - * @inheritDoc - */ - public function save(UploadedFile $file, string $path, string $filename) + protected function getDriver(): string { - return Storage::disk('dropbox')->putFileAs($path, $file, $filename); + return self::Driver; } } diff --git a/app/Services/FileSystem/IFileUploadStrategy.php b/app/Services/FileSystem/IFileUploadStrategy.php index 85ccfd71..248adc5e 100644 --- a/app/Services/FileSystem/IFileUploadStrategy.php +++ b/app/Services/FileSystem/IFileUploadStrategy.php @@ -25,5 +25,12 @@ interface IFileUploadStrategy * @param string $filename * @return mixed */ - public function save(UploadedFile $file, string $path, string $filename); + public function save(UploadedFile $file, string $path, string $filename); + + /** + * @param string $path + * @param string $filename + * @return mixed + */ + public function markAsDeleted(string $path, string $filename); } \ No newline at end of file diff --git a/app/Services/FileSystem/Local/LocalStorageFileUploadStrategy.php b/app/Services/FileSystem/Local/LocalStorageFileUploadStrategy.php index 8fe812e6..a5461c62 100644 --- a/app/Services/FileSystem/Local/LocalStorageFileUploadStrategy.php +++ b/app/Services/FileSystem/Local/LocalStorageFileUploadStrategy.php @@ -11,24 +11,17 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use App\Services\FileSystem\IFileUploadStrategy; -use Illuminate\Http\UploadedFile; -use Illuminate\Support\Facades\Storage; +use App\Services\FileSystem\AbstractFileUploadStrategy; /** * Class LocalStorageFileUploadStrategy * @package App\Services\FileSystem\Local */ -final class LocalStorageFileUploadStrategy implements IFileUploadStrategy +final class LocalStorageFileUploadStrategy extends AbstractFileUploadStrategy { + const Driver = 'local'; - /** - * @param UploadedFile $file - * @param string $path - * @param string $filename - * @return mixed - */ - public function save(UploadedFile $file, string $path, string $filename) + protected function getDriver(): string { - return Storage::disk('local')->putFileAs($path, $file, $filename); + return self::Driver; } } diff --git a/app/Services/FileSystem/S3/S3StorageFileUploadStrategy.php b/app/Services/FileSystem/S3/S3StorageFileUploadStrategy.php index 1b13b410..d2b62ea4 100644 --- a/app/Services/FileSystem/S3/S3StorageFileUploadStrategy.php +++ b/app/Services/FileSystem/S3/S3StorageFileUploadStrategy.php @@ -11,22 +11,18 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use App\Services\FileSystem\IFileUploadStrategy; -use Illuminate\Http\UploadedFile; -use Illuminate\Support\Facades\Storage; - +use App\Services\FileSystem\AbstractFileUploadStrategy; /** * Class S3StorageFileUploadStrategy * @package App\Services\FileSystem\S3 */ -final class S3StorageFileUploadStrategy implements IFileUploadStrategy +final class S3StorageFileUploadStrategy extends AbstractFileUploadStrategy { - /** - * @inheritDoc - */ - public function save(UploadedFile $file, string $path, string $filename) + const Driver = "s3"; + + protected function getDriver(): string { - return Storage::disk('s3')->putFileAs($path, $file, $filename); + return self::Driver; } } \ No newline at end of file diff --git a/app/Services/FileSystem/Swift/SwiftStorageFileUploadStrategy.php b/app/Services/FileSystem/Swift/SwiftStorageFileUploadStrategy.php index 95a55cae..86d0b03a 100644 --- a/app/Services/FileSystem/Swift/SwiftStorageFileUploadStrategy.php +++ b/app/Services/FileSystem/Swift/SwiftStorageFileUploadStrategy.php @@ -11,24 +11,18 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ -use App\Services\FileSystem\IFileUploadStrategy; -use Illuminate\Http\UploadedFile; -use Illuminate\Support\Facades\Storage; +use App\Services\FileSystem\AbstractFileUploadStrategy; /** * Class SwiftStorageFileUploadStrategy * @package App\Services\FileSystem\Swift */ -class SwiftStorageFileUploadStrategy implements IFileUploadStrategy +class SwiftStorageFileUploadStrategy extends AbstractFileUploadStrategy { - /** - * @param UploadedFile $file - * @param string $path - * @param string $filename - * @return mixed - */ - public function save(UploadedFile $file, string $path, string $filename) + const Driver = "swift"; + + protected function getDriver(): string { - return Storage::disk('swift')->putFileAs($path, $file, $filename); + return self::Driver; } } \ No newline at end of file diff --git a/app/Services/Model/Imp/PresentationService.php b/app/Services/Model/Imp/PresentationService.php index e0da9f98..302a15e7 100644 --- a/app/Services/Model/Imp/PresentationService.php +++ b/app/Services/Model/Imp/PresentationService.php @@ -514,6 +514,22 @@ final class PresentationService $presentation_id )); + foreach($presentation->getMediaUploads() as $mediaUpload){ + + $mediaUploadType = $mediaUpload->getMediaUploadType(); + $strategy = FileUploadStrategyFactory::build($mediaUploadType->getPrivateStorageType()); + + if (!is_null($strategy)) { + $strategy->markAsDeleted($mediaUpload->getPath(IStorageTypesConstants::PrivateType), $mediaUpload->getFilename()); + } + + $strategy = FileUploadStrategyFactory::build($mediaUploadType->getPublicStorageType()); + + if (!is_null($strategy)) { + $strategy->markAsDeleted($mediaUpload->getPath(IStorageTypesConstants::PublicType), $mediaUpload->getFilename()); + } + } + $summit->removeEvent($presentation); }); @@ -1068,7 +1084,6 @@ final class PresentationService if (is_null($mediaUpload)) throw new EntityNotFoundException('Presentation Media Upload not found.'); - $fileInfo = FileUploadInfo::build($request, $payload); if(!is_null($fileInfo)) { @@ -1091,6 +1106,7 @@ final class PresentationService } $strategy = FileUploadStrategyFactory::build($mediaUploadType->getPrivateStorageType()); + if (!is_null($strategy)) { $strategy->save($fileInfo->getFile(), $mediaUpload->getPath(IStorageTypesConstants::PrivateType), $fileInfo->getFileName()); } @@ -1132,6 +1148,19 @@ final class PresentationService throw new EntityNotFoundException("Media Upload not found."); } + $mediaUploadType = $mediaUpload->getMediaUploadType(); + $strategy = FileUploadStrategyFactory::build($mediaUploadType->getPrivateStorageType()); + + if (!is_null($strategy)) { + $strategy->markAsDeleted($mediaUpload->getPath(IStorageTypesConstants::PrivateType), $mediaUpload->getFilename()); + } + + $strategy = FileUploadStrategyFactory::build($mediaUploadType->getPublicStorageType()); + + if (!is_null($strategy)) { + $strategy->markAsDeleted($mediaUpload->getPath(IStorageTypesConstants::PublicType), $mediaUpload->getFilename()); + } + $presentation->removeMediaUpload($mediaUpload); }); }