From 113c250c41e77084045f08db7a28fbf3c00921e2 Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Fri, 7 Aug 2020 02:05:28 +0000 Subject: [PATCH] [MEDIA][AVATAR] Handle avatar validation and storage --- components/Media/Media.php | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 components/Media/Media.php diff --git a/components/Media/Media.php b/components/Media/Media.php new file mode 100644 index 0000000000..37893d2570 --- /dev/null +++ b/components/Media/Media.php @@ -0,0 +1,45 @@ +. +// }}} + +namespace Component\Media; + +use App\Core\Module; +use App\Entity\File; +use Symfony\Component\HttpFoundation\File\File as SymfonyFile; + +class Media extends Module +{ + public static function validateAndStoreFile(SymfonyFile $sfile, string $dest_dir, ?string $title = null, bool $is_local = true): File + { + // The following properly gets the mimetype with `file` or other + // available methods, so should be safe + $hash = hash_file(File::FILEHASH_ALGO, $sfile->getPathname()); + $file = File::create([ + 'file_hash' => $hash, + 'mimetype' => $sfile->getMimeType(), + 'size' => $sfile->getSize(), + 'title' => $title, + 'timestamp' => $sfile->getMTime(), + 'is_local' => $is_local, + ]); + $sfile->move($dest_dir, $hash); + // TODO Normalize file types + return $file; + } +}