- Suppression des migrations, templates et configurations inutiles (ex. `compose.override.yaml`). - Mise à jour de l'entité `User` : - Renommage des attributs pour correspondre aux conventions (`emailDeSecours` → `alternateEmail`, etc.). - Implémentation d'un mapper `updateFromKazUser` pour synchroniser les données depuis l'API Kaz. - Refactorisation des migrations pour aligner les changements de schéma. - Mise à jour du formulaire utilisateur et des fixtures en conséquence. - Ajout du template Twig `profil_infos.html.twig` pour afficher les informations utilisateur. (A supprimer)
49 lines
1.4 KiB
PHP
49 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Service;
|
|
|
|
use Symfony\Component\HttpFoundation\File\Exception\FileException;
|
|
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
|
use Symfony\Component\String\Slugger\SluggerInterface;
|
|
|
|
class FileUploader
|
|
{
|
|
// On utilise la promotion de constructeur (PHP 8) : ultra moderne et concis
|
|
public function __construct(
|
|
private string $targetDirectory,
|
|
private SluggerInterface $slugger,
|
|
) {
|
|
}
|
|
|
|
public function upload(UploadedFile $file): string
|
|
{
|
|
$originalFilename = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
|
|
$safeFilename = $this->slugger->slug($originalFilename);
|
|
$fileName = $safeFilename . '-' . uniqid() . '.' . $file->guessExtension();
|
|
|
|
try {
|
|
$file->move($this->getTargetDirectory(), $fileName);
|
|
} catch (FileException $e) {
|
|
// Ici tu peux logguer l'erreur si besoin
|
|
throw new \Exception('Erreur lors du transfert de l\'image : ' . $e->getMessage());
|
|
}
|
|
|
|
return $fileName;
|
|
}
|
|
|
|
public function delete(?string $fileName): void
|
|
{
|
|
if ($fileName) {
|
|
$filePath = $this->getTargetDirectory() . 'FileUploader.php/' . $fileName;
|
|
if (file_exists($filePath)) {
|
|
unlink($filePath);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getTargetDirectory(): string
|
|
{
|
|
return $this->targetDirectory;
|
|
}
|
|
}
|