media = $media; $this->uploadedFilePath = $filePath; $this->replaceExisting = $replaceExisting; $this->modifications = $modifications; } /** * Execute the job. * * @return void */ public function handle(): void { $storageDisk = $this->media->storage; $fileName = $this->media->name; try { $this->media->status = "Uploading to CDN"; $this->media->save(); // convert HEIC file $fileExtension = File::extension($this->uploadedFilePath); if ($fileExtension === 'heic') { // Get the path without the file name $uploadedFileDirectory = dirname($this->uploadedFilePath); // Convert the HEIC file to JPG $jpgFileName = pathinfo($this->uploadedFilePath, PATHINFO_FILENAME) . '.jpg'; $jpgFilePath = $uploadedFileDirectory . '/' . $jpgFileName; Image::make($this->uploadedFilePath)->save($jpgFilePath); // Update the uploaded file path and file name $this->uploadedFilePath = $jpgFilePath; $fileName = $jpgFileName; $this->media->name = $fileName; $this->media->save(); } if (strlen($this->uploadedFilePath) > 0) { if (Storage::disk($storageDisk)->exists($fileName) === false || $this->replaceExisting === true) { /** @var Illuminate\Filesystem\FilesystemAdapter */ $fileSystem = Storage::disk($storageDisk); $fileSystem->putFileAs('/', new SplFileInfo($this->uploadedFilePath), $fileName); Log::info("uploading file {$storageDisk} / {$fileName} / {$this->uploadedFilePath}"); } else { Log::info("file {$fileName} already exists in {$storageDisk} / " . // phpcs:ignore "{$this->uploadedFilePath}. Not replacing file and using local {$fileName} for variants."); } } else { if (Storage::disk($storageDisk)->exists($fileName) === true) { Log::info("file {$fileName} already exists in {$storageDisk} / " . // phpcs:ignore "{$this->uploadedFilePath}. No local {$fileName} for variants, downloading from CDN."); $readStream = Storage::disk($storageDisk)->readStream($fileName); $tempFilePath = tempnam(sys_get_temp_dir(), 'download-'); $writeStream = fopen($tempFilePath, 'w'); while (feof($readStream) !== true) { fwrite($writeStream, fread($readStream, 8192)); } fclose($readStream); fclose($writeStream); $this->uploadedFilePath = $tempFilePath; } else { $errorStr = "cannot upload file {$storageDisk} " . // phpcs:ignore "/ {$fileName} / {$this->uploadedFilePath} as temp file is empty"; Log::info($errorStr); throw new \Exception($errorStr); } }//end if $this->media->status = "Optimizing image"; $this->media->save(); $this->media->generateVariants($this->uploadedFilePath); $this->media->status = "Generating Thumbnail"; $this->media->save(); $this->media->generateThumbnail($this->uploadedFilePath); if (strlen($this->uploadedFilePath) > 0) { unlink($this->uploadedFilePath); } $this->media->status = 'OK'; $this->media->save(); } catch (\Exception $e) { Log::error($e->getMessage()); $this->media->status = "Failed"; $this->media->save(); $this->fail($e); }//end try } }