Skip to content

Commit

Permalink
allow dispatching some conversions
Browse files Browse the repository at this point in the history
  • Loading branch information
QuentinGab committed Jan 21, 2024
1 parent a19a3ef commit 52d5edf
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 10 deletions.
10 changes: 5 additions & 5 deletions src/Models/Media.php
Original file line number Diff line number Diff line change
Expand Up @@ -532,16 +532,16 @@ public static function reorder(array $keys, ?Closure $sequence = null, string $u
return $models;
}

public function deleteGeneratedConversion(string $converion): ?GeneratedConversion
public function deleteGeneratedConversion(string $conversion): ?GeneratedConversion
{
$generatedConversion = $this->getGeneratedConversion($converion);
$generatedConversion = $this->getGeneratedConversion($conversion);

if (! $generatedConversion) {
return null;
}

$this->deleteGeneratedConversionFiles($converion);
$this->forgetGeneratedConversion($converion);
$this->deleteGeneratedConversionFiles($conversion);
$this->forgetGeneratedConversion($conversion);
$this->save();

return $generatedConversion;
Expand All @@ -564,7 +564,7 @@ public function deleteGeneratedConversions(): static
/**
* You can override this function to customize how files are deleted
*/
protected function deleteGeneratedConversionFiles(string $conversion): static
public function deleteGeneratedConversionFiles(string $conversion): static
{
$generatedConversion = $this->getGeneratedConversion($conversion);

Expand Down
20 changes: 15 additions & 5 deletions src/Traits/HasMedia.php
Original file line number Diff line number Diff line change
Expand Up @@ -222,17 +222,27 @@ public function dispatchConversion(Media $media, string $conversionName): static
/**
* @param TMedia $media
*/
public function dispatchConversions(Media $media): static
{
$conversions = $this->getMediaConversions($media);
public function dispatchConversions(
Media $media,
?bool $force = false,
?array $only = null,
?array $except = null,
): static {
$conversions = $this->getMediaConversions($media)
->only($only)
->except($except)
->when(!$force, function (Collection $collection) use ($media) {
return $collection->filter(function (MediaConversion $conversion) use ($media) {
return !$media->hasGeneratedConversion($conversion->name);
});
});

if ($conversions->isEmpty()) {
return $this;
}

$media->deleteGeneratedConversions();

foreach ($conversions as $conversion) {
$media->deleteGeneratedConversionFiles($conversion->name);
$media->putGeneratedConversion($conversion->name, new GeneratedConversion(state: 'pending'));
}

Expand Down

0 comments on commit 52d5edf

Please sign in to comment.