Skip to content

Commit

Permalink
Fix handling of dots in conversion names for clean command (#3551)
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastianpopp committed Feb 22, 2024
1 parent a7b4b2f commit bb29cac
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 4 deletions.
1 change: 1 addition & 0 deletions src/MediaCollections/Commands/CleanCommand.php
Expand Up @@ -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)
)
Expand Down
4 changes: 2 additions & 2 deletions src/MediaCollections/Models/Media.php
Expand Up @@ -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)
Expand Down
9 changes: 7 additions & 2 deletions tests/Conversions/Commands/CleanCommandTest.php
Expand Up @@ -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 () {
Expand Down

0 comments on commit bb29cac

Please sign in to comment.