<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;//A voir
use Symfony\Component\HttpFoundation\BinaryFileResponse;//A voir
use Symfony\Component\HttpFoundation\JsonResponse;//A voir
use Symfony\Component\HttpFoundation\Request;
use App\Controller\LangController;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; //Test
class AssetController extends AbstractController//Controller
{
public function __construct(
private LangController $langService
){
}
public function index()
{
return $this->redirectToRoute('actualites_home');
}
public function show_guide(Request $request, $filename)
{
$session = $request->getSession();
$lang = $session->get('_locale');
if($lang == null) {
$this->langService->setLocale($request, 'fr');
$lang = 'fr';
}
$path = $this->getParameter('kernel.project_dir'). "/public/build/lang/".$lang."/pdf/";
return new BinaryFileResponse($path.$filename);
}
public function abx_bmi_references($reference)
{
$path = $this->getParameter('kernel.project_dir'). "/public/build/pdf/abxbmi_references/";
return new BinaryFileResponse($path.$reference);
}
public function show_pdf(Request $request, $filename)
{
$session = $request->getSession();
$lang = $session->get('_locale');
if($lang == null) {
$this->langService->setLocale($request, 'fr');
$lang = 'fr';
}
$path = $this->getParameter('kernel.project_dir'). "/public/build/lang/".$lang."/pdf/";
return new BinaryFileResponse($path.$filename);
}
public function upload(Request $request)
{
$file = $request->files->get('file');
$session = $request->getSession();
if (!$file) {
return new JsonResponse(['error' => 'Aucun fichier reçu.'], Response::HTTP_BAD_REQUEST);
}
// Vérifier l'extension et le type MIME (sécurité)
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
$allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
$extension = $file->guessExtension();
$mimeType = $file->getMimeType();
if (!in_array($extension, $allowedExtensions) || !in_array($mimeType, $allowedMimeTypes)) {
return new JsonResponse(['error' => 'Format de fichier non autorisé.'], Response::HTTP_BAD_REQUEST);
}
// Générer un nom de fichier unique
$filename = uniqid('img_') . '.' . $extension;
$uploadDir = $this->getParameter('kernel.project_dir') . '/public/upload/actualites/images/'.$session->get('client_id_adada').'/source/';
// Déplacer le fichier vers le dossier /public/uploads
try {
$file->move($uploadDir, $filename);
} catch (FileException $e) {
return new JsonResponse(['error' => 'Erreur lors de l\'enregistrement du fichier.'], Response::HTTP_INTERNAL_SERVER_ERROR);
}
// 🔥 Modifier le chemin retourné en incluant le dossier du projet
$projectBasePath = $request->getBasePath(); // => "/monProjet" en local
$imageUrl = $projectBasePath . '/upload/actualites/images/'.$session->get('client_id_adada').'/source/' . $filename;
// Retourner l'URL de l'image pour TinyMCE
return new JsonResponse(['location' => $imageUrl]);
}
}