diff --git a/src/core/Form/FileUploadHandler.php b/src/core/Form/FileUploadHandler.php index 68b9b90..5dd6c50 100644 --- a/src/core/Form/FileUploadHandler.php +++ b/src/core/Form/FileUploadHandler.php @@ -11,6 +11,15 @@ use Symfony\Component\HttpFoundation\File\UploadedFile; */ class FileUploadHandler { + protected $filenameGenerator; + + public function setFilenameGenerator(callable $filenameGenerator): self + { + $this->filenameGenerator = $filenameGenerator; + + return $this; + } + public function handleForm(?UploadedFile $uploadedFile, string $path, ?callable $afterUploadCallback = null, bool $keepOriginalFilename = false): void { if (null === $uploadedFile) { @@ -21,9 +30,11 @@ class FileUploadHandler if ($keepOriginalFilename) { $filename = $originalFilename.'.'.$uploadedFile->guessExtension(); - } else { + } elseif (!is_callable($this->filenameGenerator)) { $safeFilename = transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()', $originalFilename); $filename = date('Ymd-his').$safeFilename.'.'.$uploadedFile->guessExtension(); + } else { + $filename = call_user_func($this->filenameGenerator, $uploadedFile); } $uploadedFile->move($path, $filename);