src/Controller/AdminController.php line 101

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Repository\UserRepository;
  5. use App\Entity\Upartistik;
  6. use App\Repository\UpartistikRepository;
  7. use App\Entity\MobilierCategories;
  8. use App\Repository\MobilierCategoriesRepository;
  9. use App\Entity\Mobilier;
  10. use App\Repository\MobilierRepository;
  11. use App\Entity\Stats;
  12. use App\Repository\AdminStatsRepository;
  13. use App\Entity\Couv;
  14. use App\Repository\CouvRepository;
  15. use App\Entity\Apropos;
  16. use App\Repository\AproposRepository;
  17. use App\Entity\Accmobilier;
  18. use App\Repository\AccmobilierRepository;
  19. use App\Entity\AccEspPro;
  20. use App\Repository\AccEspProRepository;
  21. use App\Entity\AccContact;
  22. use App\Repository\AccContactRepository;
  23. use App\Entity\Contact;
  24. use App\Repository\ContactRepository;
  25. use App\Entity\ProImages;
  26. use App\Repository\ProImagesRepository;
  27. use App\Entity\ProTexte;
  28. use App\Repository\ProTexteRepository;
  29. use App\Form\UserType;
  30. use App\Form\UserEditType;
  31. use App\Form\UpartistikType;
  32. use App\Form\CouvType;
  33. use App\Form\ContactType;
  34. use App\Form\AproposType;
  35. use App\Form\AccmobilierType;
  36. use App\Form\AccespaceproType;
  37. use App\Form\AccContactType;
  38. use App\Form\EspaceProImageType;
  39. use App\Form\EspaceProTexteType;
  40. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  41. use Symfony\Component\HttpFoundation\Request;
  42. use Symfony\Component\HttpFoundation\Response;
  43. use Symfony\Component\Routing\Annotation\Route;
  44. use Symfony\Component\Security\Core\User\UserInterface;
  45. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  46. use Doctrine\ORM\EntityManagerInterface;
  47. use Symfony\Component\HttpFoundation\File\UploadedFile;
  48. use Symfony\Component\String\Slugger\SluggerInterface;
  49. use Doctrine\Common\Collections\ArrayCollection;
  50. use Symfony\Component\HttpFoundation\JsonResponse;
  51. use App\Factory\JsonResponseFactory;
  52. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  53. /**
  54.  * @Route("/admin")
  55.  */
  56. class AdminController extends AbstractController
  57. {
  58.   /**
  59.   * @var UserRepository
  60.   */
  61.   private $repository;
  62.   private $passwordEncoder;
  63.   public function __construct(ProTexteRepository $protexterepoProImagesRepository $proimagerepoAccContactRepository $acccontactrepoAccEspProRepository $accespaceprorepoAccmobilierRepository $accmobilierrepoAproposRepository $aproposCouvRepository $couvrepoMobilierRepository $mobRepo,AdminStatsRepository $statsMobilierCategoriesRepository $mobCatUserRepository $repositoryEntityManagerInterface $emUserPasswordEncoderInterface $passwordEncoderUpartistikRepository $upartRepo)
  64.   {
  65.     $this->stats $stats;
  66.     $this->repository $repository;
  67.     $this->em $em;
  68.     $this->passwordEncoder $passwordEncoder;
  69.     $this->upartRepo $upartRepo;
  70.     $this->mobCat $mobCat;
  71.     $this->mobRepo $mobRepo;
  72.     $this->couvrepo $couvrepo;
  73.     $this->aproposrepo $apropos;
  74.     $this->accmobilierrepo $accmobilierrepo;
  75.     $this->accespaceprorepo $accespaceprorepo;
  76.     $this->acccontactrepo $acccontactrepo;
  77.     $this->proimagerepo $proimagerepo;
  78.     $this->protexterepo $protexterepo;
  79.   }
  80.     /**
  81.      * @Route("/", name="admin_index")
  82.      */
  83.     public function index(UserRepository $userRepository): Response
  84.     {
  85.       // case users
  86.       $allAdmins $userRepository->findAllAdmins();
  87.       $allMembres $userRepository->findAllMembres();
  88.       // case Catalogue
  89.       $mobRepo $this->mobRepo->findParOrdreActif();
  90.       // case stats // content="text/plain; charset=utf-8"
  91.       $image $this->dessineGraphV();
  92.       // recup les visite sur la page construction
  93.       //$recupVisite = $this->stats->recupJour(new \DateTime());
  94.       // dump($recupVisite);
  95.       return $this->render('admin/index.html.twig', [
  96.         'controller_name' => 'admin_index',
  97.         'upartRepo' => $this->upartRepo->find(1),
  98.         'allAdmins' => $allAdmins,
  99.         'allMembres' => $allMembres,
  100.         'mobRepo' => $mobRepo,
  101.         //'graph' => $this->dessineGraph(),
  102.         'EncodedImage' => $image,
  103.       ]);
  104.     }
  105.     // dessineGraph()
  106.     public function dessineGraph()
  107.     {
  108.       require_once ('graph/jpgraph.php');
  109.       require_once ('graph/jpgraph_line.php');
  110.       $now = new \DateTime();
  111.       // dump($now);
  112.       $visite $this->stats->RecupVisiteSem();
  113.       // dump($visite);
  114.       $datay1 = array(20,15,23,15,25,15,0);
  115.       $datay2 = array(12,9,42,8,6);
  116.       $datay3 = array(5,17,32,24,28);
  117.       // Setup the graph
  118.       $graph = new \Graph(500,340);
  119.       $graph->SetScale("textlin");
  120.       $theme_class=new \UniversalTheme;
  121.       $graph->SetTheme($theme_class);
  122.       $graph->img->SetAntiAliasing(false);
  123.       $graph->title->Set('Filled Y-grid');
  124.       $graph->SetBox(false);
  125.       $graph->SetMargin(40,20,36,63,32);
  126.       $graph->img->SetAntiAliasing();
  127.       $graph->yaxis->HideZeroLabel();
  128.       $graph->yaxis->HideLine(false);
  129.       $graph->yaxis->HideTicks(false,false);
  130.       $graph->xgrid->Show();
  131.       $graph->xgrid->SetLineStyle("solid");
  132.       $graph->xaxis->SetTickLabels(array('A','B','C','D','E'));
  133.       $graph->xgrid->SetColor('#E3E3E3');
  134.       // Create the first line
  135.       $p1 = new \LinePlot($datay1);
  136.       $graph->Add($p1);
  137.       $p1->SetColor("#6495ED");
  138.       $p1->SetLegend('Visites');
  139.       // Create the second line
  140.       $p2 = new \LinePlot($datay2);
  141.       $graph->Add($p2);
  142.       $p2->SetColor("#B22222");
  143.       $p2->SetLegend('Administration');
  144.       // Create the third line
  145.       $p3 = new \LinePlot($datay3);
  146.       $graph->Add($p3);
  147.       $p3->SetColor("#FF1493");
  148.       $p3->SetLegend('UP artistik');
  149.       $graph->legend->SetFrameWeight(1);
  150.       // Output line
  151.       //$gdImgHandler = $graph->Stroke();
  152.       // Display the graph
  153.       $gdImgHandler $graph->Stroke(_IMG_HANDLER);
  154.       //Start buffering
  155.       ob_start();
  156.       //Print the data stream to the buffer
  157.       $graph->img->Stream();
  158.       //Get the conents of the buffer
  159.       $image_data ob_get_contents();
  160.       //Stop the buffer/clear it.
  161.       ob_end_clean();
  162.       //Set the variable equal to the base 64 encoded value of the stream.
  163.       //This gets passed to the browser and displayed.
  164.       $image base64_encode($image_data);
  165.       return $image;
  166.     }
  167.     public function dessineGraphV()
  168.     {
  169.       require_once ('graph/jpgraph.php');
  170.       require_once ('graph/jpgraph_line.php');
  171.       // recup
  172.       $date0  date("Y-m-d H:i:s"mktime(000date("m")  , date("d"), date("Y")));
  173.       $date1  date("Y-m-d H:i:s"mktime(000date("m")  , date("d")+1date("Y")));
  174.       $dateM1  date("Y-m-d H:i:s"mktime(000date("m")  , date("d")-1date("Y")));
  175.       $dateM2  date("Y-m-d H:i:s"mktime(000date("m")  , date("d")-2date("Y")));
  176.       $dateM3  date("Y-m-d H:i:s"mktime(000date("m")  , date("d")-3date("Y")));
  177.       $dateM4  date("Y-m-d H:i:s"mktime(000date("m")  , date("d")-4date("Y")));
  178.       $dateM5  date("Y-m-d H:i:s"mktime(000date("m")  , date("d")-5date("Y")));
  179.       $dateM6  date("Y-m-d H:i:s"mktime(000date("m")  , date("d")-6date("Y")));
  180.       $dateM7  date("Y-m-d H:i:s"mktime(000date("m")  , date("d")-7date("Y")));
  181.       // recup table visiteur
  182.       $visite0 $this->stats->recupJour($date0$date1);
  183.       $visite1 $this->stats->recupJour($dateM1$date0);
  184.       $visite2 $this->stats->recupJour($dateM2$dateM1);
  185.       $visite3 $this->stats->recupJour($dateM3$dateM2);
  186.       $visite4 $this->stats->recupJour($dateM4$dateM3);
  187.       $visite5 $this->stats->recupJour($dateM5$dateM4);
  188.       $visite6 $this->stats->recupJour($dateM6$dateM5);
  189.       $visite7 $this->stats->recupJour($dateM7$dateM6);
  190.       // dump($date0);
  191.       // dump($date1);
  192.       // dump(count($visite0));
  193.       $datay1 = array(count($visite7), count($visite6), count($visite5), count($visite4), count($visite3), count($visite2), count($visite1), count($visite0));
  194.       $datay2 = array(0,0,0,0,0,0,0);
  195.       $datay3 = array(0,0,0,0,0,0,0);
  196.       // Setup the graph
  197.       $graph = new \Graph(500,230);
  198.       $graph->SetScale("textlin");
  199.       $theme_class=new \UniversalTheme;
  200.       $graph->SetTheme($theme_class);
  201.       $graph->img->SetAntiAliasing(false);
  202.       $graph->title->Set('Visites');
  203.       $graph->SetBox(false);
  204.       $graph->SetMargin(40,20,36,63,32);
  205.       $graph->img->SetAntiAliasing();
  206.       $graph->yaxis->HideZeroLabel();
  207.       $graph->yaxis->HideLine(false);
  208.       $graph->yaxis->HideTicks(false,false);
  209.       $graph->xgrid->Show();
  210.       $graph->xgrid->SetLineStyle("solid");
  211.       $graph->xaxis->SetTickLabels(
  212.         array(
  213.           date("D d"mktime(000date("m")  , date("d")-7date("Y"))),
  214.           date("D d"mktime(000date("m")  , date("d")-6date("Y"))),
  215.           date("D d"mktime(000date("m")  , date("d")-5date("Y"))),
  216.           date("D d"mktime(000date("m")  , date("d")-4date("Y"))),
  217.           date("D d"mktime(000date("m")  , date("d")-3date("Y"))),
  218.           date("D d"mktime(000date("m")  , date("d")-2date("Y"))),
  219.           date("D d"mktime(000date("m")  , date("d")-1date("Y"))),
  220.           date("D d"mktime(000date("m")  , date("d"), date("Y")))
  221.         )
  222.       );
  223.       $graph->xgrid->SetColor('#E3E3E3');
  224.       // Create the first line
  225.       $p1 = new \LinePlot($datay1);
  226.       $graph->Add($p1);
  227.       $p1->SetColor("#6495ED");
  228.       $p1->SetLegend('Visites');
  229.       // Create the second line
  230.       $p2 = new \LinePlot($datay2);
  231.       $graph->Add($p2);
  232.       $p2->SetColor("#B22222");
  233.       $p2->SetLegend('Administration');
  234.       // Create the third line
  235.       $p3 = new \LinePlot($datay3);
  236.       $graph->Add($p3);
  237.       $p3->SetColor("#FF1493");
  238.       $p3->SetLegend('UP artistik');
  239.       $graph->legend->SetFrameWeight(1);
  240.       // Output line
  241.       //$gdImgHandler = $graph->Stroke();
  242.       // Display the graph
  243.       $gdImgHandler $graph->Stroke(_IMG_HANDLER);
  244.       //Start buffering
  245.       ob_start();
  246.       //Print the data stream to the buffer
  247.       $graph->img->Stream();
  248.       //Get the conents of the buffer
  249.       $image_data ob_get_contents();
  250.       //Stop the buffer/clear it.
  251.       ob_end_clean();
  252.       //Set the variable equal to the base 64 encoded value of the stream.
  253.       //This gets passed to the browser and displayed.
  254.       $image base64_encode($image_data);
  255.       return $image;
  256.     }
  257.   /* Gestion de l'espace disque *********************************************** */
  258.     /**
  259.     * @Route("/espaceDisc/", name="admin_espaceDisc_index", methods={"GET"})
  260.     */
  261.     public function espaceDisc(): Response
  262.     {
  263.       // espace disque serveur
  264.       $df disk_free_space("/");
  265.       // dump($df);
  266.       $ds disk_total_space("/");
  267.       // dump($ds);
  268.       $espUse number_format(($ds / ($ds $df)), $decimals );
  269.       // dump($espUse);
  270.       return $this->render('admin/espaceDisc.html.twig', [
  271.           'controller_name' => 'admin_espaceDisc_index',
  272.           'upartRepo' => $this->upartRepo->find(1),
  273.           'df' => $df,
  274.           'ds' => $ds,
  275.           'espUse' => $espUse,
  276.       ]);
  277.     }
  278.   /* Gestion de la table USER *********************************************** */
  279.     /**
  280.      * @Route("/user/", name="admin_user_index", methods={"GET"})
  281.      */
  282.     public function indexUser(UserRepository $userRepository): Response
  283.     {
  284.       $allUser $userRepository->findAll();
  285.       return $this->render('admin/user/index.html.twig', [
  286.         'controller_name' => 'admin_user_index',
  287.         'upartRepo' => $this->upartRepo->find(1),
  288.         'users' => $allUser,
  289.       ]);
  290.     }
  291.     /**
  292.      * @Route("/user/new", name="admin_user_new", methods={"GET", "POST"})
  293.      */
  294.     public function newUser(Request $requestEntityManagerInterface $entityManager): Response
  295.     {
  296.         $user = new User();
  297.         $form $this->createForm(UserType::class, $user);
  298.         $form->handleRequest($request);
  299.         if ($form->isSubmitted() && $form->isValid()) {
  300.           // crypte le mot de passe
  301.           $user->setPassword($this->passwordEncoder->encodePassword(
  302.             $user,
  303.             $form['password']->getData()
  304.           ));
  305.           $entityManager->persist($user);
  306.           $entityManager->flush();
  307.           return $this->redirectToRoute('admin_user_index', [], Response::HTTP_SEE_OTHER);
  308.         }
  309.         return $this->renderForm('admin/user/new.html.twig', [
  310.             'controller_name' => 'admin_user_new',
  311.             'upartRepo' => $this->upartRepo->find(1),
  312.             'previous' => $request->headers->get("referer"),
  313.             'user' => $user,
  314.             'form' => $form,
  315.         ]);
  316.     }
  317.     /**
  318.      * @Route("/user/{id}", name="admin_user_show", methods={"GET"})
  319.      */
  320.     public function show(User $user): Response
  321.     {
  322.         return $this->render('admin/user/show.html.twig', [
  323.             'controller_name' => 'admin_user_show',
  324.             'upartRepo' => $this->upartRepo->find(1),
  325.             'user' => $user,
  326.         ]);
  327.     }
  328.     /**
  329.      * @Route("/user/{id}/edit", name="admin_user_edit", methods={"GET", "POST"})
  330.      */
  331.     public function edit(Request $requestUser $userEntityManagerInterface $entityManager): Response
  332.     {
  333.         $form $this->createForm(UserEditType::class, $user);
  334.         $form->handleRequest($request);
  335.         if ($form->isSubmitted() && $form->isValid()) {
  336.             $entityManager->flush();
  337.             return $this->redirectToRoute('admin_user_index', [], Response::HTTP_SEE_OTHER);
  338.         }
  339.         return $this->renderForm('admin/user/edit.html.twig', [
  340.           'controller_name' => 'admin_user_edit',
  341.           'upartRepo' => $this->upartRepo->find(1),
  342.           'previous' => $request->headers->get("referer"),
  343.             'user' => $user,
  344.             'form' => $form,
  345.         ]);
  346.     }
  347.     /**
  348.      * @Route("/user/{id}", name="admin_user_delete", methods={"POST"})
  349.      */
  350.     public function delete(Request $requestUser $userEntityManagerInterface $entityManager): Response
  351.     {
  352.         if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
  353.             $entityManager->remove($user);
  354.             $entityManager->flush();
  355.         }
  356.         return $this->redirectToRoute('admin_user_index', [], Response::HTTP_SEE_OTHER);
  357.     }
  358.     /* Gestion de la table UPARTISTIK *********************************************** */
  359.     /**
  360.      * @Route("/upartistik/", name="admin_upartistik_index", methods={"GET", "POST"})
  361.      */
  362.     public function indexUpartistik(Request $request): Response
  363.     {
  364.       $allUpart $this->upartRepo->find(1);
  365.       $form $this->createForm(UpartistikType::class, $allUpart);
  366.       // dump($form);
  367.       $form->handleRequest($request);
  368.       if ($form->isSubmitted() && $form->isValid()) {
  369.         $this->em->persist($allUpart);
  370.         $this->em->flush();
  371.           //return $this->redirectToRoute('stats_index', [], Response::HTTP_SEE_OTHER);
  372.       }
  373.       return $this->render('admin/upartistik/index.html.twig', [
  374.         'controller_name' => 'admin_upartistik_index',
  375.         'upartRepo' => $this->upartRepo->find(1),
  376.         'allUpart' => $allUpart,
  377.         'form' => $form->createView(),
  378.       ]);
  379.     }
  380.     /* Gestion des graph *********************************************** */
  381.     /* Gestion de la page Accueil *********************************************** */
  382.     /**
  383.      * @Route("/accueil/", name="admin_accueil_index", methods={"GET", "POST"})
  384.      */
  385.     public function admin_accueil_index(Request $request): Response
  386.     {
  387.       $allUpart $this->upartRepo->find(1);
  388.       return $this->render('admin/accueil/index.html.twig', [
  389.         'controller_name' => 'admin_accueil_index',
  390.         'upartRepo' => $this->upartRepo->find(1),
  391.         'allUpart' => $allUpart,
  392.       ]);
  393.     }
  394.     /* Gestion de la case Couverture *********************** */
  395.     /**
  396.      * @Route("/accueil/couv/", name="admin_accueil_couv_index", methods={"GET", "POST"})
  397.      */
  398.     public function admin_accueil_couv_index(Request $request): Response
  399.     {
  400.       $allUpart $this->upartRepo->find(1);
  401.       $allVisuels $this->couvrepo->findAll();
  402.       /*
  403.       // init new objet image
  404.       $img = new Couv();
  405.       $img->setType("ext");
  406.       $img->setUrlfile("originalFilename");
  407.       $img->setOrdre(1);
  408.       $img->setActif(1);
  409.       $img->setDatecrea(new \DateTime());
  410.         $img->setDuree(22);
  411.       $this->em->persist($img);
  412.       $this->em->flush();
  413.       */
  414.       return $this->render('admin/accueil/couv.html.twig', [
  415.         'controller_name' => 'admin_accueil_couv_index',
  416.         'upartRepo' => $this->upartRepo->find(1),
  417.         'allUpart' => $allUpart,
  418.         'allVisuels' => $allVisuels,
  419.       ]);
  420.     }
  421.     /**
  422.      * @Route("/accueil/couv/new", name="admin_accueil_couv_new", methods={"GET", "POST"})
  423.      */
  424.     public function admin_accueil_couv_new(Request $requestEntityManagerInterface $entityManager): Response
  425.     {
  426.         $couv = new Couv();
  427.         $form $this->createForm(CouvType::class, $couv);
  428.         $form->handleRequest($request);
  429.         return $this->renderForm('admin/accueil/couvnew.html.twig', [
  430.           'controller_name' => 'admin_accueil_couv_new',
  431.           'upartRepo' => $this->upartRepo->find(1),
  432.             'couv' => $couv,
  433.             'form' => $form,
  434.         ]);
  435.     }
  436.     /**
  437.     * @Route("/accueil/couv/new/traitement", name="admin_accueil_couv_new_traitement", methods={"GET", "POST"})
  438.     */
  439.     public function admin_accueil_couv_new_traitement(Request $requestEntityManagerInterface $entityManagerSluggerInterface $sluggerUserInterface $user): Response
  440.     {
  441.       // dump($request);
  442.       // dump($request->files->all());
  443.       // recupere
  444.       $image $request->files->get('couv')["urlfile"];
  445.       // dump($image);
  446.       $alt $request->request->get('couv')["alt"];
  447.       // dump($alt);
  448.       $nbrVisuel $this->couvrepo->findAll();
  449.       // dump(count($image));
  450.       $json = array();
  451.       // boucle pour chaque image
  452.       //for ($i=0; $i<count($image); $i++){
  453.         // init new objet image
  454.         $img = new Couv();
  455.         // construction du nom du document
  456.         $originalFilename pathinfo($image->getClientOriginalName(), PATHINFO_FILENAME);
  457.         $safeFilename $slugger->slug($originalFilename);
  458.         $newFilename $safeFilename.'-'.uniqid().'.'.$image->guessExtension();
  459.         $docExt strtolower($image->guessExtension());
  460.         // configure l'objet image
  461.         $img->setType($docExt);
  462.         $img->setUrlfile($newFilename);
  463.         $img->setOrdrecount($nbrVisuel) + 1);
  464.         $img->setActif(1);
  465.         $img->setDatecrea(new \DateTime());
  466.         $img->setAlt($alt);
  467.         // video
  468.         if ( $docExt == 'mp4' || $docExt == 'm4v'){
  469.           $img->setDuree(22);
  470.         }
  471.         // image
  472.         else{
  473.           $img->setDuree(3);
  474.         }
  475.         // enregistre dans la Bdd
  476.         $this->em->persist($img);
  477.         $this->em->flush();
  478.         // Move the file to the directory where brochures are stored
  479.         $destination $this->copieFile("couv"$newFilename$user$image);
  480.       //}
  481.       $json['ok'] = 'ok';
  482.       return new JsonResponse($json);
  483.       /*
  484.       return 0;
  485.       */
  486.     }
  487.     /**
  488.      * @Route("/accueil/couv/suppr/{id}", name="admin_accueil_couv_delete", methods={"POST"})
  489.      */
  490.     public function admin_accueil_couv_delete(Request $requestCouv $couvEntityManagerInterface $entityManager): Response
  491.     {
  492.         if ($this->isCsrfTokenValid('delete'.$couv->getId(), $request->request->get('_token'))) {
  493.           // 1. recup ordre
  494.           $ordreSuppr $couv->getOrdre();
  495.           // 2. vire fichier du disque dur
  496.           $destination $this->getParameter('documents_directory');
  497.           unlink($destination."couv/".$couv->getUrlfile());
  498.           if ( $couv->getUrlposter() != '' ){
  499.             unlink($destination."couv/".$couv->getUrlposter());
  500.           }
  501.           // 3. vire de la base
  502.           $entityManager->remove($couv);
  503.           $entityManager->flush();
  504.         }
  505.         return $this->redirectToRoute('admin_accueil_couv_index', [], Response::HTTP_SEE_OTHER);
  506.     }
  507.     // fonction de copie du fichier
  508.     public function copieFile($repertoire$newFilename$user$lien)
  509.     {
  510.       try
  511.       {
  512.         $destination $this->getParameter('documents_directory').'/'.$repertoire.'/';
  513.         $lien->move(
  514.           $destination,
  515.           $newFilename
  516.         );
  517.         return $destination;
  518.       }
  519.       catch (FileException $e)
  520.       {
  521.         $this->addFlash('success''Echec document : '.$newFilename.' !');
  522.         return $this->redirectToRoute('priv_docs_liste');
  523.       }
  524.     }
  525.     /* Gestion de la case Ă  propos *********************** */
  526.     /**
  527.      * @Route("/accueil/apropos/", name="admin_accueil_apropos_index", methods={"GET", "POST"})
  528.      */
  529.     public function admin_accueil_apropos_index(Request $request): Response
  530.     {
  531.       $allUpart $this->upartRepo->find(1);
  532.       $allVisuels $this->couvrepo->findAll();
  533.       return $this->render('admin/accueil/apropos.html.twig', [
  534.         'controller_name' => 'admin_accueil_apropos_index',
  535.         'upartRepo' => $this->upartRepo->find(1),
  536.         'allUpart' => $allUpart,
  537.         'allVisuels' => $allVisuels,
  538.         'apropos' => $this->aproposrepo->find(1),
  539.       ]);
  540.     }
  541.     /**
  542.      * @Route("/accueil/apropos/new", name="admin_accueil_apropos_new", methods={"GET", "POST"})
  543.      */
  544.     public function admin_accueil_apropos_new(Request $requestEntityManagerInterface $entityManager): Response
  545.     {
  546.         $apropos = new Apropos();
  547.         $form $this->createForm(AproposType::class, $apropos);
  548.         $form->handleRequest($request);
  549.         return $this->renderForm('admin/accueil/aproposnew.html.twig', [
  550.           'controller_name' => 'admin_accueil_apropos_new',
  551.           'upartRepo' => $this->upartRepo->find(1),
  552.             'apropos' => $apropos,
  553.             'form' => $form,
  554.         ]);
  555.     }
  556.     /**
  557.      * @Route("/accueil/apropos/traitement", name="admin_accueil_apropos_traitement", methods={"GET", "POST"})
  558.      */
  559.     public function admin_accueil_apropos_traitement(Request $request): Response
  560.     {
  561.       // recup donnĂ©es
  562.       $texte $_POST["texte"];
  563.       //$texte = utf8_decode(htmlspecialchars($_POST["texte"]));
  564.       // dump($texte);
  565.       // formatage
  566.       // traitement
  567.       $apropos = new Apropos();
  568.       $apropos->setTexte($texte);
  569.       // enregistre dans la Bdd
  570.       $this->em->persist($apropos);
  571.       $this->em->flush();
  572.       // reponse
  573.       return $this->redirectToRoute('admin_accueil_apropos_index', [], Response::HTTP_SEE_OTHER);
  574.     }
  575.     /**
  576.      * @Route("/accueil/apropos/modif/{id}", name="admin_accueil_apropos_modif", methods={"GET", "POST"})
  577.      */
  578.     public function admin_accueil_apropos_modif(Request $request$id): Response
  579.     {
  580.         $apropos $this->aproposrepo->find($id);
  581.       // dump($apropos);
  582.         //$apropos = new Apropos();
  583.         $form $this->createForm(AproposType::class, $apropos);
  584.         $form->handleRequest($request);
  585.         return $this->renderForm('admin/accueil/aproposnew.html.twig', [
  586.           'controller_name' => 'admin_accueil_apropos_modif',
  587.           'upartRepo' => $this->upartRepo->find(1),
  588.             'apropos' => $apropos,
  589.             'form' => $form,
  590.         ]);
  591.     }
  592.     /**
  593.      * @Route("/accueil/apropos/modif/{id}/traitement", name="admin_accueil_apropos_modif_traitement", methods={"GET", "POST"})
  594.      */
  595.     public function admin_accueil_apropos_modif_traitement(Request $request$id): Response
  596.     {
  597.       // recup donnĂ©es
  598.       $texte $_POST["texte"];
  599.       //$texte = utf8_decode(htmlspecialchars($_POST["texte"]));
  600.       // dump($texte);
  601.       // formatage
  602.       // traitement
  603.       $apropos $this->aproposrepo->find($id);
  604.       $apropos->setTexte($texte);
  605.       // enregistre dans la Bdd
  606.       $this->em->persist($apropos);
  607.       $this->em->flush();
  608.       /*
  609.       */
  610.       // reponse
  611.       return $this->redirectToRoute('admin_accueil_apropos_index', [], Response::HTTP_SEE_OTHER);
  612.     }
  613.     /* Gestion de la case mobilier *********************** */
  614.     /**
  615.      * @Route("/accueil/mobilier/", name="admin_accueil_mobilier_index", methods={"GET", "POST"})
  616.      */
  617.     public function admin_accueil_mobilier_index(Request $request): Response
  618.     {
  619.       $allUpart $this->upartRepo->find(1);
  620.       $allVisuels $this->couvrepo->findAll();
  621.       return $this->render('admin/accueil/mobilier.html.twig', [
  622.         'controller_name' => 'admin_accueil_mobilier_index',
  623.         'upartRepo' => $this->upartRepo->find(1),
  624.         'allUpart' => $allUpart,
  625.         'allVisuels' => $allVisuels,
  626.         'accmobiliers' => $this->accmobilierrepo->findByOrdre(),
  627.       ]);
  628.     }
  629.     /**
  630.      * @Route("/accueil/mobilier/new", name="admin_accueil_mobilier_new", methods={"GET", "POST"})
  631.      */
  632.     public function admin_accueil_mobilier_new(Request $requestEntityManagerInterface $entityManager): Response
  633.     {
  634.         $accmobilier = new AccMobilier();
  635.         $form $this->createForm(AccmobilierType::class, $accmobilier);
  636.         $form->handleRequest($request);
  637.         return $this->renderForm('admin/accueil/mobiliernew.html.twig', [
  638.           'controller_name' => 'admin_accueil_mobilier_new',
  639.           'upartRepo' => $this->upartRepo->find(1),
  640.             'accmobilier' => $this->accmobilierrepo->findAll(),
  641.             'form' => $form,
  642.         ]);
  643.     }
  644.     /**
  645.     * @Route("/accueil/mobilier/new/traitement", name="admin_accueil_mobilier_new_traitement", methods={"GET", "POST"})
  646.     */
  647.     public function admin_accueil_mobilier_new_traitement(Request $requestEntityManagerInterface $entityManagerSluggerInterface $sluggerUserInterface $user): Response
  648.     {
  649.       // dump($request);
  650.       // dump($request->files->all());
  651.       // recupere
  652.       $image $request->files->get('accmobilier')["url"];
  653.       // dump($image);
  654.       $alt $image;
  655.       // dump($alt);
  656.       $nbrVisuel $this->accmobilierrepo->findAll();
  657.       $ordre count($nbrVisuel) + 1;
  658.       // dump($ordre);
  659.       // dump(count($image));
  660.       $json = array();
  661.       // boucle pour chaque image
  662.       //for ($i=0; $i<count($image); $i++){
  663.         // init new objet image
  664.         $img = new Accmobilier();
  665.         // construction du nom du document
  666.         $originalFilename pathinfo($image->getClientOriginalName(), PATHINFO_FILENAME);
  667.         $safeFilename $slugger->slug($originalFilename);
  668.         $newFilename $safeFilename.'-'.uniqid().'.'.$image->guessExtension();
  669.         $docExt strtolower($image->guessExtension());
  670.         // configure l'objet image
  671.         // $img->setType($docExt);
  672.         $img->setUrl($newFilename);
  673.         $img->setOrdre($ordre);
  674.         $img->setAlt($originalFilename);
  675.         // enregistre dans la Bdd
  676.         $this->em->persist($img);
  677.         $this->em->flush();
  678.         // Move the file to the directory where brochures are stored
  679.         $destination $this->copieFile("accmobilier"$newFilename$user$image);
  680.         // creation d'une vignette
  681.         $this->makeVignette(640640"accmobilier"$destination$newFilename$user);
  682.       //}
  683.       $json['ok'] = 'ok';
  684.       return new JsonResponse($json);
  685.     }
  686.     /**
  687.      * @Route("/accueil/mobilier/suppr/{id}", name="admin_accueil_mobilier_delete", methods={"POST"})
  688.      */
  689.     public function admin_accueil_mobilier_delete(Request $requestAccmobilier $accmobilierEntityManagerInterface $entityManager): Response
  690.     {
  691.         if ($this->isCsrfTokenValid('delete'.$accmobilier->getId(), $request->request->get('_token'))) {
  692.           // 1. recup ordre
  693.           $ordreSuppr $accmobilier->getOrdre();
  694.           // 2. vire fichier du disque dur
  695.           $destination $this->getParameter('documents_directory');
  696.           unlink($destination."accmobilier/".$accmobilier->getUrl());
  697.           unlink($destination."accmobilier/640/v_".$accmobilier->getUrl());
  698.           // 3. vire de la base
  699.           $entityManager->remove($accmobilier);
  700.           $entityManager->flush();
  701.         }
  702.         return $this->redirectToRoute('admin_accueil_mobilier_index', [], Response::HTTP_SEE_OTHER);
  703.     }
  704.     /**
  705.      * @Route("/accueil/mobilier/chgOrdreImage", name="admin_accueil_mobilier_chgOrdre", methods={"POST"})
  706.      */
  707.     public function admin_accueil_mobilier_chgOrdre(Request $request): Response
  708.     {
  709.       $json = array();
  710.       if ($request->isXmlHttpRequest()) {
  711.         $id $request->request->get('id');
  712.         $newOrdre $request->request->get('newOrdre');
  713.         // recup le mobilier
  714.         $img $this->accmobilierrepo->find($id);
  715.         // dump($img);
  716.         // renseigne
  717.         $img->setOrdre($newOrdre);
  718.         // update
  719.         $this->em->persist($img);
  720.         $this->em->flush();
  721.         $json['ok'] = $newOrdre;
  722.       } else {
  723.           $json['error'] = $this->illegalRequest;
  724.       }
  725.       return new JsonResponse($json);
  726.     }
  727.     public function makeVignette($widthMax$heightMax$repertoire$destination$newFilename$user)
  728.     {
  729.       $wx $widthMax;
  730.       $hx $heightMax;
  731.       // chemin du repertoire des vignettes
  732.       $destinationV $this->getParameter('documents_directory').'/'.$repertoire.'/640/';
  733.       // creation du repertoire vignette
  734.       if (!is_dir($destinationV))
  735.       {
  736.         mkdir($destinationV);
  737.       }
  738.       // recup taille jpg
  739.       list($width$height) = getimagesize($destination.$newFilename);
  740.       // test si paysage ou portrait et recup la taille de la vignette
  741.       if ($width $height)
  742.       {
  743.         // paysage
  744.         $ratio $wx $width;
  745.         $wx floor($width $ratio);
  746.         $hx floor($height $ratio);
  747.       }
  748.       else
  749.       {
  750.         // portrait
  751.         $ratio $hx $height;
  752.         $wx floor($width $ratio);
  753.         $hx floor($height $ratio);
  754.       }
  755.       // stockage de l'image
  756.       $src imagecreatefromjpeg($destination.$newFilename);
  757.       // creation de l'image de reception
  758.       $tmp imagecreatetruecolor($wx$hx);
  759.       // chemin d'Ă©criture
  760.       $filenameV $destinationV.'v_'.$newFilename;
  761.       // copy and resize
  762.       imagecopyresampled($tmp$src0000$wx$hx$width$height);
  763.       // enregistre l'image
  764.       imagejpeg($tmp$filenameV);
  765.       //
  766.       return true;
  767.     }
  768.     /* Gestion de la case espace pro *********************** */
  769.     /**
  770.      * @Route("/accueil/espacepro/", name="admin_accueil_espacepro_index", methods={"GET", "POST"})
  771.      */
  772.     public function admin_accueil_espacepro_index(Request $request): Response
  773.     {
  774.       $allUpart $this->upartRepo->find(1);
  775.       $allVisuels $this->couvrepo->findAll();
  776.       return $this->render('admin/accueil/espacepro.html.twig', [
  777.         'controller_name' => 'admin_accueil_espacepro_index',
  778.         'upartRepo' => $this->upartRepo->find(1),
  779.         'allUpart' => $allUpart,
  780.         'allVisuels' => $allVisuels,
  781.         'accespacepros' => $this->accespaceprorepo->findByOrdre(),
  782.       ]);
  783.     }
  784.     /**
  785.      * @Route("/accueil/espacepro/new", name="admin_accueil_espacepro_new", methods={"GET", "POST"})
  786.      */
  787.     public function admin_accueil_espacepro_new(Request $request): Response
  788.     {
  789.         $accespacepro = new AccEspPro();
  790.         $form $this->createForm(AccespaceproType::class, $accespacepro);
  791.         $form->handleRequest($request);
  792.         return $this->renderForm('admin/accueil/espacepronew.html.twig', [
  793.           'controller_name' => 'admin_accueil_espacepro_new',
  794.           'upartRepo' => $this->upartRepo->find(1),
  795.             'accespacepros' => $this->accespaceprorepo->findByOrdre(),
  796.             'form' => $form,
  797.         ]);
  798.     }
  799.     /**
  800.     * @Route("/accueil/espacepro/new/traitement", name="admin_accueil_espacepro_new_traitement", methods={"GET", "POST"})
  801.     */
  802.     public function admin_accueil_espacepro_new_traitement(Request $requestSluggerInterface $sluggerUserInterface $user): Response
  803.     {
  804.       // dump($request);
  805.       // dump($request->files->all());
  806.       // recupere
  807.       $image $request->files->get('accespacepro')["url"];
  808.       // dump($image);
  809.       $alt $image;
  810.       // dump($alt);
  811.       $nbrVisuel $this->accespaceprorepo->findAll();
  812.       $ordre count($nbrVisuel) + 1;
  813.       // dump($ordre);
  814.       // dump(count($image));
  815.       $json = array();
  816.       // boucle pour chaque image
  817.       //for ($i=0; $i<count($image); $i++){
  818.         // init new objet image
  819.         $img = new AccEspPro();
  820.         // construction du nom du document
  821.         $originalFilename pathinfo($image->getClientOriginalName(), PATHINFO_FILENAME);
  822.         $safeFilename $slugger->slug($originalFilename);
  823.         $newFilename $safeFilename.'-'.uniqid().'.'.$image->guessExtension();
  824.         $docExt strtolower($image->guessExtension());
  825.         // configure l'objet image
  826.         // $img->setType($docExt);
  827.         $img->setUrl($newFilename);
  828.         $img->setOrdre($ordre);
  829.         $img->setAlt($originalFilename);
  830.         // enregistre dans la Bdd
  831.         $this->em->persist($img);
  832.         $this->em->flush();
  833.         // Move the file to the directory where brochures are stored
  834.         $destination $this->copieFile("accespacepro"$newFilename$user$image);
  835.         // creation d'une vignette
  836.         $this->makeVignette(640640"accespacepro"$destination$newFilename$user);
  837.       //}
  838.       $json['ok'] = 'ok';
  839.       return new JsonResponse($json);
  840.     }
  841.     /**
  842.      * @Route("/accueil/espacepro/suppr/{id}", name="admin_accueil_espacepro_delete", methods={"POST"})
  843.      */
  844.     public function admin_accueil_espacepro_delete(Request $requestAccEspPro $accespacepro): Response
  845.     {
  846.         if ($this->isCsrfTokenValid('delete'.$accespacepro->getId(), $request->request->get('_token'))) {
  847.           // 1. recup ordre
  848.           $ordreSuppr $accespacepro->getOrdre();
  849.           // 2. vire fichier du disque dur
  850.           $destination $this->getParameter('documents_directory');
  851.           unlink($destination."accespacepro/".$accespacepro->getUrl());
  852.           unlink($destination."accespacepro/640/v_".$accespacepro->getUrl());
  853.           // 3. vire de la base
  854.           $this->em->remove($accespacepro);
  855.           $this->em->flush();
  856.         }
  857.         return $this->redirectToRoute('admin_accueil_espacepro_index', [], Response::HTTP_SEE_OTHER);
  858.     }
  859.     /**
  860.      * @Route("/accueil/espacepro/chgOrdreImage", name="admin_accueil_espacepro_chgOrdre", methods={"POST"})
  861.      */
  862.     public function admin_accueil_espacepro_chgOrdre(Request $request): Response
  863.     {
  864.       $json = array();
  865.       if ($request->isXmlHttpRequest()) {
  866.         $id $request->request->get('id');
  867.         $newOrdre $request->request->get('newOrdre');
  868.         // recup le mobilier
  869.         $img $this->accespaceprorepo->find($id);
  870.         // dump($img);
  871.         // renseigne
  872.         $img->setOrdre($newOrdre);
  873.         // update
  874.         $this->em->persist($img);
  875.         $this->em->flush();
  876.         $json['ok'] = $newOrdre;
  877.       } else {
  878.           $json['error'] = $this->illegalRequest;
  879.       }
  880.       return new JsonResponse($json);
  881.     }
  882.     /* Gestion de la case contact *********************** */
  883.     /**
  884.      * @Route("/accueil/contact/", name="admin_accueil_contact_index", methods={"GET", "POST"})
  885.      */
  886.     public function admin_accueil_contact_index(Request $requestSessionInterface $session): Response
  887.     {
  888.       $allUpart $this->upartRepo->find(1);
  889.       // form
  890.       $form $this->createForm(ContactType::class);
  891.       $form->handleRequest($request);
  892.       // captcha
  893.       $name date('Y_m_d_h_i_s');
  894.       return $this->render('admin/accueil/contact.html.twig', [
  895.         'controller_name' => 'admin_accueil_contact_index',
  896.         'upartRepo' => $this->upartRepo->find(1),
  897.         'allUpart' => $allUpart,
  898.         'form' => $form->createView(),
  899.         'img' => $this->admin_accueil_contact_captcha($name$session),
  900.         'name' => $name,
  901.         'acccontact' => $this->acccontactrepo->findAll(),
  902.       ]);
  903.     }
  904.     /**
  905.     * @Route("/accueil/contact/captcha/{name}", name="admin_accueil_contact_captcha")
  906.     */
  907.     public function admin_accueil_contact_captcha($nameSessionInterface $session): Response
  908.     {
  909.       // CrĂ©ation d'une image vide et ajout d'un texte
  910.       $session->set('captcha'mt_rand(1000099999));
  911.       $im imagecreate(11040);
  912.       $font realpath('fonts/ASMAN.TTF');
  913.       $bg imagecolorallocate($im205215212);
  914.       $textcolor imagecolorallocate($im756080);
  915.       $code $session->get('captcha');
  916.       imagettftext($im2351535$textcolor$font$code);
  917.       // DĂ©finit le contenu de l'en-tĂªte - dans ce cas, image/jpeg
  918.       header('Content-Type: image/jpeg');
  919.       $save "captcha/".$name.".jpg";
  920.       // Affichage de l'image
  921.       imagejpeg($im$save);
  922.       // LibĂ©ration de la mĂ©moire
  923.       imagedestroy($im);
  924.       $headers = array(
  925.         'Content-Type' => 'image/jpeg',
  926.         'Content-Disposition' => 'inline; filename="'.$im.'"'
  927.       );
  928.       return new Response($save200$headers);
  929.     }
  930.     /**
  931.     * @Route("/accueil/contact/new", name="admin_accueil_contact_new", methods={"GET", "POST"})
  932.     */
  933.     public function admin_accueil_contact_new(Request $requestEntityManagerInterface $entityManager): Response
  934.     {
  935.       $accContact = new AccContact();
  936.       $form $this->createForm(AccContactType::class, $accContact);
  937.       $form->handleRequest($request);
  938.       return $this->renderForm('admin/accueil/contactnew.html.twig', [
  939.         'controller_name' => 'admin_accueil_contact_new',
  940.         'upartRepo' => $this->upartRepo->find(1),
  941.         'accContact' => $accContact,
  942.         'form' => $form,
  943.       ]);
  944.     }
  945.     /**
  946.      * @Route("/accueil/contact/traitement", name="admin_accueil_contact_traitement", methods={"GET", "POST"})
  947.      */
  948.     public function admin_accueil_contact_traitement(Request $request): Response
  949.     {
  950.       // recup donnĂ©es
  951.       $texte $_POST["texte"];
  952.       //$texte = utf8_decode(htmlspecialchars($_POST["texte"]));
  953.       // dump($texte);
  954.       // formatage
  955.       // traitement
  956.       $accContact = new AccContact();
  957.       $accContact->setTexte($texte);
  958.       // enregistre dans la Bdd
  959.       $this->em->persist($accContact);
  960.       $this->em->flush();
  961.       // reponse
  962.       return $this->redirectToRoute('admin_accueil_contact_index', [], Response::HTTP_SEE_OTHER);
  963.     }
  964.     /**
  965.      * @Route("/accueil/contact/modif/{id}", name="admin_accueil_contact_modif", methods={"GET", "POST"})
  966.      */
  967.     public function admin_accueil_contact_modif(Request $request$id): Response
  968.     {
  969.       $acccontact $this->acccontactrepo->find($id);
  970.       // dump($acccontact);
  971.       //$acccontact = new AccContact();
  972.       $form $this->createForm(AccContactType::class, $acccontact);
  973.       $form->handleRequest($request);
  974.       return $this->renderForm('admin/accueil/contactnew.html.twig', [
  975.         'controller_name' => 'admin_accueil_contact_modif',
  976.         'upartRepo' => $this->upartRepo->find(1),
  977.         'acccontact' => $acccontact,
  978.         'form' => $form,
  979.       ]);
  980.     }
  981.     /**
  982.      * @Route("/accueil/contact/modif/{id}/traitement", name="admin_accueil_contact_modif_traitement", methods={"GET", "POST"})
  983.      */
  984.     public function admin_accueil_contact_modif_traitement(Request $request$id): Response
  985.     {
  986.       // recup donnĂ©es
  987.       $texte $_POST["texte"];
  988.       //$texte = utf8_decode(htmlspecialchars($_POST["texte"]));
  989.       // dump($texte);
  990.       // formatage
  991.       // traitement
  992.       $accContact $this->acccontactrepo->find($id);
  993.       $accContact->setTexte($texte);
  994.       // enregistre dans la Bdd
  995.       $this->em->persist($accContact);
  996.       $this->em->flush();
  997.       /*
  998.       */
  999.       // reponse
  1000.       return $this->redirectToRoute('admin_accueil_contact_index', [], Response::HTTP_SEE_OTHER);
  1001.     }
  1002.     /* Gestion de la case espace pro *********************** */
  1003.     /**
  1004.      * @Route("/espacepro/", name="admin_espacepro_index", methods={"GET", "POST"})
  1005.      */
  1006.     public function admin_espacepro_index(Request $requestSessionInterface $session): Response
  1007.     {
  1008.       $allUpart $this->upartRepo->find(1);
  1009.       return $this->render('admin/pro/index.html.twig', [
  1010.         'controller_name' => 'admin_espacepro_index',
  1011.         'upartRepo' => $this->upartRepo->find(1),
  1012.         'allUpart' => $allUpart,
  1013.         'accespacepros' => $this->accespaceprorepo->findByOrdre(),
  1014.         'proimages' => $this->proimagerepo->findByOrdre(),
  1015.         'protexte' => $this->protexterepo->find(1),
  1016.         ]);
  1017.     }
  1018.     /**
  1019.      * @Route("/espacepro/visuel/new", name="admin_espacepro_image_new", methods={"GET", "POST"})
  1020.      */
  1021.     public function admin_espacepro_image_new(Request $requestEntityManagerInterface $entityManager): Response
  1022.     {
  1023.         $proImage = new ProImages();
  1024.         $form $this->createForm(EspaceProImageType::class, $proImage);
  1025.         $form->handleRequest($request);
  1026.         return $this->renderForm('admin/pro/epImagenew.html.twig', [
  1027.           'controller_name' => 'admin_espacepro_image_new',
  1028.           'upartRepo' => $this->upartRepo->find(1),
  1029.           'proimages' => $this->proimagerepo->findByOrdre(),
  1030.           'form' => $form,
  1031.         ]);
  1032.     }
  1033.     /**
  1034.     * @Route("/espacepro/visuel/new/traitement", name="admin_espacepro_image_new_traitement", methods={"GET", "POST"})
  1035.     */
  1036.     public function admin_espacepro_image_new_traitement(Request $requestEntityManagerInterface $entityManagerSluggerInterface $sluggerUserInterface $user): Response
  1037.     {
  1038.       // dump($request);
  1039.       // dump($request->files->all());
  1040.       // recupere
  1041.       $image $request->files->get('espace_pro_image')["url"];
  1042.       // dump($image);
  1043.       $alt $image;
  1044.       // dump($alt);
  1045.       $nbrVisuel $this->proimagerepo->findAll();
  1046.       $ordre count($nbrVisuel) + 1;
  1047.       // dump($ordre);
  1048.       // dump(count($image));
  1049.       $json = array();
  1050.       // boucle pour chaque image
  1051.       //for ($i=0; $i<count($image); $i++){
  1052.         // init new objet image
  1053.         $img = new ProImages();
  1054.         // construction du nom du document
  1055.         $originalFilename pathinfo($image->getClientOriginalName(), PATHINFO_FILENAME);
  1056.         $safeFilename $slugger->slug($originalFilename);
  1057.         $newFilename $safeFilename.'-'.uniqid().'.'.$image->guessExtension();
  1058.         $docExt strtolower($image->guessExtension());
  1059.         // configure l'objet image
  1060.         // $img->setType($docExt);
  1061.         $img->setUrl($newFilename);
  1062.         $img->setOrdre($ordre);
  1063.         $img->setAlt($originalFilename);
  1064.         // enregistre dans la Bdd
  1065.         $this->em->persist($img);
  1066.         $this->em->flush();
  1067.         // Move the file to the directory where brochures are stored
  1068.         $destination $this->copieFile("espacePro"$newFilename$user$image);
  1069.         // creation d'une vignette
  1070.         $this->makeVignette(640640"espacePro"$destination$newFilename$user);
  1071.       //}
  1072.       $json['ok'] = 'ok';
  1073.       return new JsonResponse($json);
  1074.     }
  1075.     /**
  1076.      * @Route("/espacepro/visuel/suppr/{id}", name="admin_espacepro_image_delete", methods={"POST"})
  1077.      */
  1078.     public function admin_espacepro_image_delete(Request $requestProImages $proImage): Response
  1079.     {
  1080.         if ($this->isCsrfTokenValid('delete'.$proImage->getId(), $request->request->get('_token'))) {
  1081.           // 1. recup ordre
  1082.           $ordreSuppr $proImage->getOrdre();
  1083.           // 2. vire fichier du disque dur
  1084.           $destination $this->getParameter('documents_directory');
  1085.           unlink($destination."espacePro/".$proImage->getUrl());
  1086.           unlink($destination."espacePro/640/v_".$proImage->getUrl());
  1087.           // 3. vire de la base
  1088.           $this->em->remove($proImage);
  1089.           $this->em->flush();
  1090.         }
  1091.         return $this->redirectToRoute('admin_espacepro_index', [], Response::HTTP_SEE_OTHER);
  1092.     }
  1093.     /**
  1094.      * @Route("/espacepro/visuel/chgOrdreImage", name="admin_espacepro_image_chgOrdre", methods={"POST"})
  1095.      */
  1096.     public function admin_espacepro_image_chgOrdre(Request $request): Response
  1097.     {
  1098.       $json = array();
  1099.       if ($request->isXmlHttpRequest()) {
  1100.         $id $request->request->get('id');
  1101.         $newOrdre $request->request->get('newOrdre');
  1102.         // recup le visuel
  1103.         $img $this->proimagerepo->find($id);
  1104.         // dump($img);
  1105.         // renseigne
  1106.         $img->setOrdre($newOrdre);
  1107.         // update
  1108.         $this->em->persist($img);
  1109.         $this->em->flush();
  1110.         $json['ok'] = $newOrdre;
  1111.       } else {
  1112.           $json['error'] = $this->illegalRequest;
  1113.       }
  1114.       return new JsonResponse($json);
  1115.     }
  1116.     /**
  1117.      * @Route("/espacepro/texte/new", name="admin_espacepro_texte_new", methods={"GET", "POST"})
  1118.      */
  1119.     public function admin_espacepro_texte_new(Request $requestEntityManagerInterface $entityManager): Response
  1120.     {
  1121.         $espaceProTexte = new ProTexte();
  1122.         $form $this->createForm(EspaceProTexteType::class, $espaceProTexte);
  1123.         $form->handleRequest($request);
  1124.         return $this->renderForm('admin/pro/textenew.html.twig', [
  1125.           'controller_name' => 'admin_espacepro_texte_new',
  1126.           'upartRepo' => $this->upartRepo->find(1),
  1127.             'espaceProTexte' => $espaceProTexte,
  1128.             'form' => $form,
  1129.         ]);
  1130.     }
  1131.     /**
  1132.      * @Route("/espacepro/texte/traitement", name="admin_espacepro_texte_traitement", methods={"GET", "POST"})
  1133.      */
  1134.     public function admin_espacepro_texte_traitement(Request $request): Response
  1135.     {
  1136.       // recup donnĂ©es
  1137.       $texte $_POST["texte"];
  1138.       //$texte = utf8_decode(htmlspecialchars($_POST["texte"]));
  1139.       // dump($texte);
  1140.       // formatage
  1141.       // traitement
  1142.       $proTexte = new ProTexte();
  1143.       $proTexte->setTexte($texte);
  1144.       // enregistre dans la Bdd
  1145.       $this->em->persist($proTexte);
  1146.       $this->em->flush();
  1147.       // reponse
  1148.       return $this->redirectToRoute('admin_espacepro_index', [], Response::HTTP_SEE_OTHER);
  1149.     }
  1150.     /**
  1151.      * @Route("/espacepro/texte/modif/{id}", name="admin_espacepro_texte_modif", methods={"GET", "POST"})
  1152.      */
  1153.     public function admin_espacepro_texte_modif(Request $request$id): Response
  1154.     {
  1155.         $espaceProTexte $this->protexterepo->find($id);
  1156.         // dump($espaceProTexte);
  1157.         //$apropos = new Apropos();
  1158.         $form $this->createForm(EspaceProTexteType::class, $espaceProTexte);
  1159.         $form->handleRequest($request);
  1160.         return $this->renderForm('admin/pro/textenew.html.twig', [
  1161.           'controller_name' => 'admin_espacepro_texte_modif',
  1162.           'upartRepo' => $this->upartRepo->find(1),
  1163.             'espaceProTexte' => $espaceProTexte,
  1164.             'form' => $form,
  1165.         ]);
  1166.     }
  1167.     /**
  1168.      * @Route("/espacepro/texte/modif/{id}/traitement", name="admin_espacepro_texte_modif_traitement", methods={"GET", "POST"})
  1169.      */
  1170.     public function admin_espacepro_texte_modif_traitement(Request $request$id): Response
  1171.     {
  1172.       // recup donnĂ©es
  1173.       $texte $_POST["texte"];
  1174.       //$texte = utf8_decode(htmlspecialchars($_POST["texte"]));
  1175.       // dump($texte);
  1176.       // formatage
  1177.       // traitement
  1178.       $apropos $this->protexterepo->find($id);
  1179.       $apropos->setTexte($texte);
  1180.       // enregistre dans la Bdd
  1181.       $this->em->persist($apropos);
  1182.       $this->em->flush();
  1183.       // reponse
  1184.       return $this->redirectToRoute('admin_espacepro_index', [], Response::HTTP_SEE_OTHER);
  1185.     }
  1186. }