From bb29cacfe209856db304adc6c5ba8c05ff7a8802 Mon Sep 17 00:00:00 2001 From: Sebastian Popp <2521500+sebastianpopp@users.noreply.github.com> Date: Thu, 22 Feb 2024 10:39:31 +0100 Subject: [PATCH] Fix handling of dots in conversion names for clean command (#3551) --- src/MediaCollections/Commands/CleanCommand.php | 1 + src/MediaCollections/Models/Media.php | 4 ++-- tests/Conversions/Commands/CleanCommandTest.php | 9 +++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/MediaCollections/Commands/CleanCommand.php b/src/MediaCollections/Commands/CleanCommand.php index 48fa28304..3fc6724f1 100644 --- a/src/MediaCollections/Commands/CleanCommand.php +++ b/src/MediaCollections/Commands/CleanCommand.php @@ -218,6 +218,7 @@ protected function markConversionAsRemoved(Media $media, string $conversionPath) $generatedConversionName = null; $media->getGeneratedConversions() + ->dot() ->filter( fn (bool $isGenerated, string $generatedConversionName) => Str::contains($conversionFile, $generatedConversionName) ) diff --git a/src/MediaCollections/Models/Media.php b/src/MediaCollections/Models/Media.php index 8c639c74b..7796e1306 100644 --- a/src/MediaCollections/Models/Media.php +++ b/src/MediaCollections/Models/Media.php @@ -306,9 +306,9 @@ public function markAsConversionNotGenerated(string $conversionName): self public function hasGeneratedConversion(string $conversionName): bool { - $generatedConversions = $this->getGeneratedConversions(); + $generatedConversions = $this->generated_conversions; - return $generatedConversions[$conversionName] ?? false; + return Arr::get($generatedConversions, $conversionName, false); } public function setStreamChunkSize(int $chunkSize) diff --git a/tests/Conversions/Commands/CleanCommandTest.php b/tests/Conversions/Commands/CleanCommandTest.php index 11c526c4d..82b81d302 100644 --- a/tests/Conversions/Commands/CleanCommandTest.php +++ b/tests/Conversions/Commands/CleanCommandTest.php @@ -65,20 +65,25 @@ Media::where('id', '<>', $media->id)->delete(); $media->markAsConversionGenerated('test-deprecated'); + $media->markAsConversionGenerated('test.deprecated'); $media->save(); expect($media->refresh()->hasGeneratedConversion('test-deprecated'))->toBeTrue(); + expect($media->refresh()->hasGeneratedConversion('test.deprecated'))->toBeTrue(); - $deprecatedImage = $this->getMediaDirectory("{$media->id}/conversions/test-deprecated.jpg"); + $deprecatedImage1 = $this->getMediaDirectory("{$media->id}/conversions/test-deprecated.jpg"); + $deprecatedImage2 = $this->getMediaDirectory("{$media->id}/conversions/test.deprecated.jpg"); - touch($deprecatedImage); + touch($deprecatedImage1); + touch($deprecatedImage2); $this->artisan('media-library:clean'); $media->refresh(); expect($media->hasGeneratedConversion('test-deprecated'))->toBeFalse(); + expect($media->hasGeneratedConversion('test.deprecated'))->toBeFalse(); }); it('can clean deprecated conversion files from a specific model type', function () {