File "PerformConversionAction.php"
Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/vendor/spatie/laravel-medialibrary/src/Conversions/Actions/PerformConversionAction.php
File size: 2.16 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Spatie\MediaLibrary\Conversions\Actions;
use Spatie\MediaLibrary\Conversions\Conversion;
use Spatie\MediaLibrary\Conversions\Events\ConversionHasBeenCompleted;
use Spatie\MediaLibrary\Conversions\Events\ConversionWillStart;
use Spatie\MediaLibrary\Conversions\ImageGenerators\ImageGeneratorFactory;
use Spatie\MediaLibrary\MediaCollections\Filesystem;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use Spatie\MediaLibrary\ResponsiveImages\ResponsiveImageGenerator;
class PerformConversionAction
{
public function execute(
Conversion $conversion,
Media $media,
string $copiedOriginalFile
) {
$imageGenerator = ImageGeneratorFactory::forMedia($media);
$copiedOriginalFile = $imageGenerator->convert($copiedOriginalFile, $conversion);
if (! $copiedOriginalFile) {
return;
}
event(new ConversionWillStart($media, $conversion, $copiedOriginalFile));
$manipulationResult = (new PerformManipulationsAction())->execute($media, $conversion, $copiedOriginalFile);
$newFileName = $conversion->getConversionFile($media);
$renamedFile = $this->renameInLocalDirectory($manipulationResult, $newFileName);
if ($conversion->shouldGenerateResponsiveImages()) {
/** @var ResponsiveImageGenerator $responsiveImageGenerator */
$responsiveImageGenerator = app(ResponsiveImageGenerator::class);
$responsiveImageGenerator->generateResponsiveImagesForConversion(
$media,
$conversion,
$renamedFile
);
}
app(Filesystem::class)->copyToMediaLibrary($renamedFile, $media, 'conversions');
$media->markAsConversionGenerated($conversion->getName());
event(new ConversionHasBeenCompleted($media, $conversion));
}
protected function renameInLocalDirectory(
string $fileNameWithDirectory,
string $newFileNameWithoutDirectory
): string {
$targetFile = pathinfo($fileNameWithDirectory, PATHINFO_DIRNAME).'/'.$newFileNameWithoutDirectory;
rename($fileNameWithDirectory, $targetFile);
return $targetFile;
}
}