src/Controller/ZFrontController.php line 291

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\SecurityController;
  4. Use App\Controller\FonctionsController;
  5. use App\Entity\ModUser;
  6. use App\Repository\ModUserRepository;
  7. use App\Entity\ModImage;
  8. use App\Repository\ModImageRepository;
  9. use App\Entity\ModIdentite;
  10. use App\Repository\ModIdentiteRepository;
  11. use App\Entity\ModCharte;
  12. use App\Repository\ModCharteRepository;
  13. use App\Entity\ModPage;
  14. use App\Repository\ModPageRepository;
  15. use App\Entity\TypeImg;
  16. use App\Repository\TypeImgRepository;
  17. use App\Entity\ModElemDiv;
  18. use App\Repository\ModElemDivRepository;
  19. use App\Entity\ModElemDivType;
  20. use App\Repository\ModElemDivTypeRepository;
  21. use App\Entity\ModDiv;
  22. use App\Repository\ModDivRepository;
  23. use App\Entity\ModDivCol;
  24. use App\Repository\ModDivColRepository;
  25. use App\Entity\VarElement;
  26. use App\Repository\VarElementRepository;
  27. use App\Entity\VarImg;
  28. use App\Repository\VarImgRepository;
  29. use App\Entity\VarUrl;
  30. use App\Repository\VarUrlRepository;
  31. use App\Entity\VarModPage;
  32. use App\Repository\VarModPageRepository;
  33. use App\Entity\VarVarchar;
  34. use App\Repository\VarVarcharRepository;
  35. use App\Entity\VarTexte;
  36. use App\Repository\VarTexteRepository;
  37. use App\Form\ModElemDivFormType;
  38. use App\Form\ModElemDivFormClass;
  39. use App\Form\ModDivType;
  40. use App\Form\ModDivColType;
  41. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  42. use Symfony\Component\HttpFoundation\Response;
  43. use Symfony\Component\Routing\Annotation\Route;
  44. use Symfony\Component\HttpFoundation\Request;
  45. use Symfony\Component\HttpFoundation\JsonResponse;
  46. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  47. use Doctrine\ORM\EntityManagerInterface;
  48. use Symfony\Component\Security\Core\User\UserInterface;
  49. use Symfony\Component\Form\Extension\Core\Type\TextType;
  50. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  51. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  52. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  53. use Symfony\Component\Form\Extension\Core\Type\RadioType;
  54. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  55. use Symfony\Component\Form\Extension\Core\Type\FileType;
  56. use Symfony\Component\Validator\Constraints\File;
  57. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  58. use Symfony\Component\Form\Extension\Core\Type\RangeType;
  59. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  60. use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  61. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  62. use Symfony\Component\Mailer\MailerInterface;
  63. use Symfony\Component\Mime\Email;
  64. use Symfony\Component\Mime\Address;
  65. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  66. use Symfony\Component\HttpFoundation\RedirectResponse;
  67. class ZFrontController extends AbstractController
  68. {
  69.     public $from "admin@webgiciel.com";
  70.     public $nomSite "blog.webgiciel.com";
  71.     public $pathStats "docs/Stats/";
  72.     public function __construct(ModElemDivTypeRepository $modElemDivTypeRepVarTexteRepository $varTexteRepVarVarcharRepository $varVarcharRepVarElementRepository $varElementRepVarModPageRepository $varModPageRepVarUrlRepository $varUrlRepVarImgRepository $varImgRepModDivColRepository $modDivColRepModElemDivRepository $modElemDivRepModDivRepository $modDivRepTypeImgRepository $typeImgRepModPageRepository $modPageRepModCharteRepository $modCharteRepModIdentiteRepository $modIdentiteRepModImageRepository $modImgRepModUserRepository $modUserRepEntityManagerInterface $emFonctionsController $fnWebsiteSecurityController $secur)
  73.     {
  74.         $this->varTexteRep $varTexteRep;
  75.         $this->varVarcharRep $varVarcharRep;
  76.         $this->varElementRep $varElementRep;
  77.         $this->varModPageRep $varModPageRep;
  78.         $this->varUrlRep $varUrlRep;
  79.         $this->varImgRep $varImgRep;
  80.         
  81.         $this->modDivColRep $modDivColRep;
  82.         $this->modDivRep $modDivRep;
  83.         $this->modElemDivRep $modElemDivRep;
  84.         $this->modElemDivTypeRep $modElemDivTypeRep;
  85.         $this->typeImgRep $typeImgRep;
  86.         $this->modPageRep $modPageRep;
  87.         $this->modCharteRep $modCharteRep;
  88.         $this->modIdentiteRep $modIdentiteRep;
  89.         $this->modImgRep $modImgRep;
  90.         $this->modUserRep $modUserRep;
  91.         $this->fnWebsite $fnWebsite;
  92.         $this->em $em;
  93.         $this->courcircuit $secur->ifBanniUser();
  94.         if($this->courcircuit==""){
  95.             $this->courcircuit $secur->ifNoAdmin();
  96.         }
  97.     }
  98.     // fonctions d'affichage des pages ---------------------------------------------------------------------------
  99.     /**
  100.      * @Route("/", name="front_index")
  101.      */
  102.     public function front_index(TokenStorageInterface $tokenStorageSecurityController $securRequest $request): Response
  103.     {
  104.         // page d'accueil du site 
  105.         // test si banni ou premier user
  106.         if($this->courcircuit!=""){
  107.             return $this->redirectToRoute($this->courcircuit);
  108.         }
  109.         // recupération du user s'il existe
  110.         $user $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
  111.         // recupère l'identité du site
  112.         $idSite $this->modIdentiteRep->find(1);
  113.         if ( !isset($idSite) ){
  114.             $idSite = new ModIdentite();
  115.             $idCharte $this->modCharteRep->find(1);
  116.             if ( !isset($idCharte) ){
  117.                 $idCharte $this->initFirstCharte();
  118.             }
  119.             $idSite->setNom($_ENV['NOM_SITE']);
  120.             $idSite->setCharte($idCharte);
  121.             $idSite->setDomaine($_ENV['NOM_SITE']);
  122.             $idSite->setLogo("");
  123.         }
  124.         // recup page start (quel que soit l'etat)
  125.         $pageStart $this->modPageRep->findFirstPageForAdmin();
  126.         // recup page start (avec un etat de 1)
  127.         $page $this->modPageRep->findFirstPage();
  128.         // si une page start existe
  129.         if (count($pageStart) > 0)
  130.         {
  131.             // si la page est active
  132.             if($pageStart[0]->getEtat() == 1){
  133.                 // gestion du contenu
  134.                 
  135.                 // init les cases
  136.                 $mesCases = [];
  137.                 // recupère les elements de la page
  138.                 $pageElems $pageStart[0]->getModPageElements();
  139.                 // boucle pour chaque div
  140.                 foreach ($pageElems as &$pageElem) {
  141.                     $myElem $pageElem->getElement();
  142.                     $tabElem = [$pageElem->getOrdre(), $myElem->getCode(), $myElem->getUrl(), $myElem->getCodeJS()];
  143.                     array_push($mesCases$tabElem);
  144.                 }
  145.                 
  146.                 /*
  147.                     // recupère les divs de la page
  148.                     //$divs = $pageStart[0]->getModDivs();
  149.                     // boucle pour chaque div
  150.                     foreach ($divs as &$div) {
  151.                         
  152.                         // recupere les colonnes de la div
  153.                         $cols = $div->getModDivCols();
  154.                         
  155.                         // boucle pour chaque colonne
  156.                         foreach ($cols as &$col) {
  157.                             
  158.                             // recupere les cases de la colonne
  159.                             $cases = $col->getContCases();
  160.                             // boucle pour chaque case
  161.                             foreach ($cases as &$case) {
  162.                                 // remplace les variables
  163.                                 //$code = $case->getElement()->getCode();
  164.                                 $code = $this->remplaceVariables($case);
  165.                                 // rempli le tableau
  166.                                 array_push($mesCases, [$case->getId(), $case->getElement()->getId(), $code]);
  167.                             }
  168.                         }
  169.                     }
  170.                 */
  171.                 
  172.                 // enregistre la visite de la page
  173.                 $this->fnWebsite->visiteCompteur("front_index");
  174.                 // affiche la page d accueil
  175.                 return $this->render('front/index.html.twig', [
  176.                     'controller_name' => $page[0]->getSlugcourt(),
  177.                     'user' => $user,
  178.                     'idSite' => $idSite,
  179.                     'pageStart' => $pageStart[0],
  180.                     'page' => $page[0],
  181.                     //'elements' => $page[0]->getModPageElements(),
  182.                     'mesCases' => $mesCases,
  183.                 ]);
  184.             }
  185.             // sinon la page est inactive
  186.             else{
  187.                 // si le visiteur est visiteur
  188.                 if ($user == null){
  189.                     // enregistre la visite de la page
  190.                     $this->fnWebsite->visiteCompteur("front_construction");
  191.                     // affiche en construction
  192.                     return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
  193.                         'controller_name' => 'front_construction',
  194.                         'user' => $user,
  195.                         'idSite' => $idSite,
  196.                     ]);
  197.                 }
  198.                 // si le visiteur est un admin
  199.                 else{
  200.                     // enregistre la visite de la page
  201.                     $this->fnWebsite->visiteCompteur("front_index_construction");
  202.                     // affiche la page index en mode construction
  203.                     return $this->render('/front/index.html.twig', [
  204.                         'controller_name' => 'front_index_construction',
  205.                         'user' => $user,
  206.                         'idSite' => $idSite,
  207.                         'pageStart' => $pageStart[0],
  208.                         'page' => $pageStart[0],
  209.                     ]);
  210.                 }
  211.             }
  212.         }
  213.         // sinon il n'y a pas de page start
  214.         else{
  215.             // enregistre la visite de la page
  216.             $this->fnWebsite->visiteCompteur("front_construction");
  217.             // si le visiteur est visiteur
  218.             if ($user == null){
  219.                 // affiche en construction
  220.                 return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
  221.                     'controller_name' => 'front_construction',
  222.                     'user' => $user,
  223.                     'idSite' => $idSite,
  224.                 ]);
  225.             }
  226.             // si le visiteur est un admin
  227.             else{
  228.                 return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
  229.                     'controller_name' => 'front_construction',
  230.                     'user' => $user,
  231.                     'idSite' => $idSite,
  232.                     'login' => 'login',
  233.                 ]);
  234.             }
  235.         }
  236.     }
  237.     /**
  238.      * @Route("/{slug}", name="front_indexSlug")
  239.      */
  240.     public function front_indexSlug($slugTokenStorageInterface $tokenStorageSecurityController $secur): Response
  241.     {
  242.         // test si banni ou premier user
  243.         if($this->courcircuit!=""){
  244.             return $this->redirectToRoute($this->courcircuit);
  245.         }
  246.         // recupération du user s'il existe
  247.         $user $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
  248.         // recupère l'identité du site
  249.         $idSite $this->modIdentiteRep->find(1);
  250.         // recup page start
  251.         $pageStart $this->modPageRep->findFirstPageForAdmin();
  252.         // interroge la page du slug
  253.         $page $this->modPageRep->findPageSlug("/".$slug);
  254.         /*
  255.         // recup les ModElemDivType
  256.         $allElemDivType = $this->modElemDivTypeRep->findAll();
  257.         */
  258.         // si il existe une page du slug
  259.         if (count($page) > 0)
  260.         {
  261.             // si la page est active
  262.             if($page[0]->getEtat() == 1){
  263.                 // gestion du contenu
  264.                 
  265.                 // init les cases
  266.                 $mesCases = [];
  267.                 // recupère les elements de la page
  268.                 $pageElems $page[0]->getModPageElements();
  269.                 // boucle pour chaque div
  270.                 foreach ($pageElems as &$pageElem) {
  271.                     $myElem $pageElem->getElement();
  272.                     $tabElem = [$pageElem->getOrdre(), $myElem->getCode(), $myElem->getUrl(), $myElem->getCodeJS()];
  273.                     array_push($mesCases$tabElem);
  274.                 }
  275.                 /*
  276.                     // recupère les divs de la page
  277.                     $divs = $page[0]->getModDivs();
  278.                     // boucle pour chaque div
  279.                     foreach ($divs as &$div) {
  280.                         
  281.                         // recupere les colonnes de la div
  282.                         $cols = $div->getModDivCols();
  283.                         
  284.                         // boucle pour chaque colonne
  285.                         foreach ($cols as &$col) {
  286.                             
  287.                             // recupere les cases de la colonne
  288.                             $cases = $col->getContCases();
  289.                             
  290.                             // boucle pour chaque case
  291.                             foreach ($cases as &$case) {
  292.                                 // remplace les variables
  293.                                 //$code = $case->getElement()->getCode();
  294.                                 $code = $this->remplaceVariables($case);
  295.                                 //$code = $this->remplaceVariables($case);
  296.                                 // rempli le tableau
  297.                                 array_push($mesCases, [$case->getId(), $case->getElement()->getId(), $code]);
  298.                             }
  299.                         }
  300.                     }
  301.                 */
  302.                 // enregistre la visite de la page
  303.                 $this->fnWebsite->visiteCompteur("front_".$slug);
  304.                 // affiche la page d accueil
  305.                 return $this->render('front/index.html.twig', [
  306.                     'controller_name' => $page[0]->getSlugcourt(),
  307.                     'user' => $user,
  308.                     'idSite' => $idSite,
  309.                     'pageStart' => $pageStart[0],
  310.                     'page' => $page[0],
  311.                     //'elements' => $page[0]->getModPageElements(),
  312.                     'mesCases' => $mesCases,
  313.                     //'allElemDivType' => $allElemDivType,
  314.                 ]);
  315.             }
  316.             // sinon la page est inactive
  317.             else{
  318.                 // si le visiteur est visiteur
  319.                 if ($user == null){
  320.                     // enregistre la visite de la page
  321.                     $this->fnWebsite->visiteCompteur("front_construction ".$slug);
  322.                     // affiche en construction
  323.                     return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
  324.                         'controller_name' => 'front_construction',
  325.                         'user' => $user,
  326.                         'idSite' => $idSite,
  327.                     ]);
  328.                 }
  329.                 // si le visiteur est un admin
  330.                 else{
  331.                     // init les cases
  332.                     $mesElemDiv = [];
  333.                     // recupère les elemDivs de la page
  334.                     $elemDivs $page[0]->getModElemDivs();
  335.                     // init les cases
  336.                     $mesCases = [];
  337.                     // recupère les elements de la page
  338.                     $pageElems $page[0]->getModPageElements();
  339.                     // boucle pour chaque div
  340.                     foreach ($pageElems as &$pageElem) {
  341.                         $myElem $pageElem->getElement();
  342.                         $tabElem = [$pageElem->getOrdre(), $myElem->getCode(), $myElem->getUrl(), $myElem->getCodeJS()];
  343.                         array_push($mesCases$tabElem);
  344.                     }
  345.                     // enregistre la visite de la page
  346.                     $this->fnWebsite->visiteCompteur("front_construction admin ".$slug);
  347.                     // affiche la page index en mode construction
  348.                     return $this->render('front/index.html.twig', [
  349.                     //return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
  350.                         'controller_name' => $page[0]->getSlugcourt(),
  351.                         'user' => $user,
  352.                         'idSite' => $idSite,
  353.                         'pageStart' => $pageStart[0],
  354.                         'page' => $page[0],
  355.                         'mesCases' => $mesCases,
  356.                         //'allElemDivType' => $allElemDivType,
  357.                     ]);
  358.                 }
  359.             }
  360.             // // affiche la page d accueil
  361.             // return $this->render('front/index.html.twig', [
  362.             //     'controller_name' => $page[0]->getSlugcourt(),
  363.             //     'user' => $user,
  364.             //     'idSite' => $idSite,
  365.             //     'page' => $page[0],
  366.             //     'pageStart' => $pageStart[0],
  367.             // ]);
  368.         }
  369.         // sinon il n'y a pas de page d'accueil
  370.         else{
  371.             // enregistre la visite de la page
  372.             $this->fnWebsite->visiteCompteur("front_erreur404 ".$slug);
  373.             // affiche en construction
  374.             return $this->render($idSite->getCharte()->getChemin().'/404.html.twig', [
  375.                 'controller_name' => 'front_erreur404',
  376.                 'user' => $user,
  377.                 'idSite' => $idSite,
  378.             ]);
  379.         }
  380.     }
  381.     /**
  382.      * @Route("/p/{doss}/{slug}", name="front_indexSlugParent")
  383.      */
  384.     public function front_indexSlugParent($doss$slugTokenStorageInterface $tokenStorageSecurityController $secur): Response
  385.     {
  386.         // test si banni ou premier user
  387.         if($this->courcircuit!=""){
  388.             return $this->redirectToRoute($this->courcircuit);
  389.         }
  390.         // recupération du user s'il existe
  391.         $user $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
  392.         // recupère l'identité du site
  393.         $idSite $this->modIdentiteRep->find(1);
  394.         
  395.         // recup page start
  396.         $pageStart $this->modPageRep->findFirstPageForAdmin();
  397.         // interroge le slug
  398.         $page $this->modPageRep->findPageSlug("/".$slug);
  399.         if (count($page) > 0)
  400.         {
  401.             // si la page est active
  402.             if($page[0]->getEtat() == 1){
  403.                 // gestion du contenu
  404.                 
  405.                 // init les cases
  406.                 $mesCases = [];
  407.                 // recupère les divs de la page
  408.                 $divs $page[0]->getModDivs();
  409.                 // boucle pour chaque div
  410.                 foreach ($divs as &$div) {
  411.                     
  412.                     // recupere les colonnes de la div
  413.                     $cols $div->getModDivCols();
  414.                     
  415.                     // boucle pour chaque colonne
  416.                     foreach ($cols as &$col) {
  417.                         
  418.                         // recupere les cases de la colonne
  419.                         $cases $col->getContCases();
  420.                         
  421.                         // boucle pour chaque case
  422.                         foreach ($cases as &$case) {
  423.                             // remplace les variables
  424.                             $code $this->remplaceVariables($case);
  425.                             // rempli le tableau
  426.                             array_push($mesCases, [$case->getId(), $case->getElement()->getId(), $code]);
  427.                         }
  428.                     }
  429.                 }
  430.                 
  431.                 // affiche la page d accueil
  432.                 return $this->render('front/index.html.twig', [
  433.                     'controller_name' => $page[0]->getSlugcourt(),
  434.                     'user' => $user,
  435.                     'idSite' => $idSite,
  436.                     'pageStart' => $pageStart[0],
  437.                     'page' => $page[0],
  438.                     'elements' => $page[0]->getModPageElements(),
  439.                     'mesCases' => $mesCases,
  440.                 ]);
  441.             }
  442.             // sinon la page est inactive
  443.             else{
  444.                 // si le visiteur est visiteur
  445.                 if ($user == null){
  446.                     // affiche en construction
  447.                     return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
  448.                         'controller_name' => 'front_construction',
  449.                         'user' => $user,
  450.                         'idSite' => $idSite,
  451.                     ]);
  452.                 }
  453.                 // si le visiteur est un admin
  454.                 else{
  455.                     // affiche la page index en mode construction
  456.                     return $this->render('/front/index.html.twig', [
  457.                         'controller_name' => 'front_index_construction',
  458.                         'user' => $user,
  459.                         'idSite' => $idSite,
  460.                         'pageStart' => $pageStart[0],
  461.                         'page' => $pageStart[0],
  462.                     ]);
  463.                 }
  464.             }
  465.         }
  466.         // sinon il n'y a pas de page d'accueil
  467.         else{
  468.         }
  469.     }
  470.     // fonctions globales ---------------------------------------------------------------------------
  471.     public function remplaceVariables($case){
  472.         $code $case->getElement()->getCode();
  473.         $code $this->remplaceElement($case$case->getElement(), $code);
  474.         $code $this->remplaceUrl($case$case->getElement(), $code0);
  475.         $code $this->remplaceImg($case$case->getElement(), $code0);
  476.         $code $this->remplaceModPage($case$case->getElement(), $code);
  477.         $code $this->remplaceVarchar($case$case->getElement(), $code0);
  478.         $code $this->remplaceTexte($case$case->getElement(), $code0);
  479.         return $code;
  480.     }
  481.     public function remplaceVariablesElements($case$element$varelement$code){
  482.         $code $varelement->getVarElement()->getCode();
  483.         $code $this->remplaceElement($case$varelement$code);
  484.         $code $this->remplaceUrl($case$varelement$code1);
  485.         $code $this->remplaceImg($case$varelement$code1);
  486.         //$code = $this->remplaceModPage($case->getContCase(), $case->getVarElement(), $code);
  487.         $code $this->remplaceVarchar($case$varelement$code1);
  488.         $code $this->remplaceTexte($case$varelement$code1);
  489.         return $code;
  490.     }
  491.     public function remplaceElement($case$element$code){
  492.         // 1 init ordre
  493.         $ordre 1;
  494.         // 2. compte le nombre de [ELEMENT] present dans le code
  495.         $nbrElement substr_count($code'[ELEMENT]');
  496.         // 3. boucle pour chaque occurence
  497.         for ($i=0$i<$nbrElement$i++){
  498.             // recupère les elements de la base
  499.             $varelements $this->varElementRep->findElements($case$element);
  500.             $contenu '';
  501.             $codeElement '';
  502.             // recup premier resultat
  503.             for ($i=0$i<count($varelements); $i++){
  504.                 // recupèle l'élément a ajouter dans l element
  505.                 $varelement $varelements[$i];
  506.                 // formatte le code à ajouter dans la page
  507.                 $contenu .= $varelement->getVarElement()->getCode();
  508.                 
  509.                 // remplace les variables de l'élément
  510.                 $codeElement .= $this->remplaceVariablesElements($case$element$varelement$contenu);
  511.                 
  512.             }
  513.             // remplacer la premiere occurence
  514.             $code $this->left_replace($code'[ELEMENT]'$codeElement);
  515.         //     // incremente ordre
  516.         //     $ordre++;
  517.         }
  518.         return $code;
  519.     }
  520.     public function remplaceUrl($case$element$code$base){
  521.         if ($base == 0){
  522.             $monElement $element;
  523.             $monOrdre "";
  524.         }
  525.         else{
  526.             $monElement $element->getVarElement();
  527.             $monOrdre $element->getOrdre();
  528.         }
  529.         // 1 init ordre
  530.         $ordre 1;
  531.         // 2. compte le nombre de [IMG] present dans le code
  532.         $nbrUrl substr_count($code'[URL]');
  533.         // 3. boucle pour chaque occurence
  534.         for ($i=1$i<=$nbrUrl$i++){
  535.             if ($monOrdre == ""){
  536.                 $monOrdre $i;
  537.             }
  538.             // recupère l image de la base
  539.             $urls $this->varUrlRep->findUrl($case$monElement$monOrdre);
  540.             if (count($urls) == ){
  541.                 $codeUrl "!!URL!!";
  542.             }
  543.             else{
  544.                 // recup premier resultat
  545.                 $url $urls[0];
  546.                 
  547.                 // init code image
  548.                 $codeUrl $url->getUrl();
  549.             }
  550.             // remplacer la premiere occurence
  551.             $code $this->left_replace($code'[URL]'$codeUrl);
  552.             // incremente ordre
  553.             $ordre++;
  554.         }
  555.         return $code;
  556.     }
  557.     public function remplaceImg($case$element$code$base){
  558.         if ($base == 0){
  559.             $monElement $element;
  560.             $monOrdre "";
  561.         }
  562.         else{
  563.             $monElement $element->getVarElement();
  564.             $monOrdre $element->getOrdre();
  565.         }
  566.         // 1 init ordre
  567.         $ordre 1;
  568.         // 2. compte le nombre de [IMG] present dans le code
  569.         $nbrImg substr_count($code'[IMG]');
  570.         
  571.         // 3. boucle pour chaque occurence
  572.         for ($i=1$i<=$nbrImg$i++){
  573.             if ($monOrdre == ""){
  574.                 $monOrdre $i;
  575.             }
  576.             // recupère l image de la base
  577.             $imgs $this->varImgRep->findImage($case$monElement$monOrdre);
  578.             if (count($imgs) == ){
  579.                 $codeImage "!!IMG!!";
  580.             }
  581.             else{
  582.                 // recup premier resultat
  583.                 $img $imgs[0];
  584.                 
  585.                 // init code image
  586.                 $codeImage '<img src="'.$img->getUrl().'" alt="'.$img->getAlt().'"';
  587.                 if ( $img->getClass() !== null && $img->getClass() !="" ){
  588.                     $codeImage .= ' class="'.$img->getClass().'"';
  589.                 }
  590.                 if ( $img->getStyle() !== null && $img->getStyle() !="" ){
  591.                     $codeImage .= ' style="'.$img->getStyle().'"';
  592.                 }
  593.                 if ( $img->getWidth() !== null && $img->getWidth() !=){
  594.                     $codeImage .= ' width="'.$img->getWidth().'"';
  595.                 }
  596.                 if ( $img->getHeight() !== null && $img->getHeight() !=){
  597.                     $codeImage .= ' height="'.$img->getHeight().'"';
  598.                 }
  599.                 $codeImage .= ' >';
  600.             }
  601.             
  602.             // remplacer la premiere occurence
  603.             $code $this->left_replace($code'[IMG]'$codeImage);
  604.             // incremente ordre
  605.             $ordre++;
  606.         }
  607.         return $code;
  608.     }
  609.     public function remplaceModPage($case$element$code){
  610.         
  611.         // 1 init ordre
  612.         $ordre 1;
  613.         // 2. compte le nombre de [MODPAGE] present dans le code
  614.         $nbrModPage substr_count($code'[MODPAGE]');
  615.         $currentUrl $_SERVER['REQUEST_URI'];
  616.     
  617.         // 3. boucle pour chaque occurence de [MODPAGE]
  618.         for ($i=0$i<$nbrModPage$i++){
  619.             // recupère les infos de la base
  620.             $pages $this->varModPageRep->findModPage($case$element$ordre);
  621.             // recup premier resultat
  622.             $page $pages[0];
  623.             // init code modPage
  624.             if ($_SERVER['REQUEST_URI'] == "/"){ $active ' active'; } else{ $active ''; }
  625.             $codeModPage '<a href="'.$page->getModPage()->getUrl().'" class="nav-item nav-link'.$active.'" >';
  626.             $codeModPage .= $page->getModPage()->getNomcourt();
  627.             $codeModPage .= '</a>';
  628.             $pagesEnfant $page->getModPage()->getEnfant();
  629.             for ($j=1$j<=count($pagesEnfant); $j++){
  630.                 foreach ($pagesEnfant as &$enfant) {
  631.                     if ($enfant->getOrdre() == $j){
  632.                         // si l'enfant a des enfants
  633.                         if (count($enfant->getEnfant()) > 0){
  634.                             if ($enfant->getSlug() == $_SERVER['REQUEST_URI']){
  635.                                 $active ' active';
  636.                             }
  637.                             else{
  638.                                 $active '';
  639.                             }
  640.                             $codeModPage .= '<div class="nav-item dropdown">';
  641.                             $codeModPage .= '<a href="'.$enfant->getUrl().'" class="nav-link dropdown-toggle '.$active.' data-bs-toggle="dropdown"">';
  642.                             $codeModPage .= $enfant->getNomcourt();
  643.                             $codeModPage .= '</a>';
  644.                             
  645.                             $codeModPage .= '<div class="dropdown-menu fade-up m-0">';
  646.                             $pagesSousEnfant $enfant->getEnfant();
  647.                             for ($k=1$k<=count($pagesSousEnfant); $k++){
  648.                                 foreach ($pagesSousEnfant as &$sousEnfant) {
  649.                                     if ($sousEnfant->getOrdre() == $k){
  650.                                         $codeModPage .= '<a href="'.$sousEnfant->getUrl().'" class="dropdown-item">'.$sousEnfant->getNomcourt().'</a>';
  651.                                     }
  652.                                 }
  653.                             }
  654.                             $codeModPage .= '</div>';
  655.                             $codeModPage .= '</div>';
  656.     
  657.                         }
  658.                         // sinon 
  659.                         else{
  660.                             if ($enfant->getSlug() == $_SERVER['REQUEST_URI']){
  661.                                 $active ' active';
  662.                             }
  663.                             else{
  664.                                 $active '';
  665.                             }
  666.     
  667.                             $codeModPage .= '<a href="'.$enfant->getUrl().'" class="nav-item nav-link'.$active.'" >';
  668.                             $codeModPage .= $enfant->getNomcourt();
  669.                             $codeModPage .= '</a>';
  670.                         }
  671.                     }
  672.                 }
  673.             }
  674.             // remplacer la premiere occurence
  675.             $code $this->left_replace($code'[MODPAGE]'$codeModPage);
  676.             // incremente ordre
  677.             $ordre++;
  678.         }
  679.         return $code;
  680.     }
  681.     public function remplaceVarchar($case$element$code$base){
  682.         if ($base == 0){
  683.             $monElement $element;
  684.             $monOrdre "";
  685.         }
  686.         else{
  687.             $monElement $element->getVarElement();
  688.             $monOrdre $element->getOrdre();
  689.         }
  690.         // 1 init ordre
  691.         $ordre 1;
  692.         // 2. compte le nombre de [IMG] present dans le code
  693.         $nbrVarchar substr_count($code'[VARCHAR]');
  694.         // 3. boucle pour chaque occurence
  695.         for ($i=1$i<=$nbrVarchar$i++){
  696.             if ($monOrdre == ""){
  697.             }
  698.             $monOrdre $i;
  699.             if ($base == 0){
  700.                 // recupère l image de la base
  701.                 $contenus $this->varVarcharRep->findVarchar($case$monElement$monOrdre);
  702.             }
  703.             else{
  704.                 // recupère l image de la base
  705.                 $contenus $this->varVarcharRep->findVarcharElement($case$monElement$monOrdre$i);
  706.             }
  707.             if (count($contenus) == ){
  708.                 $codeVarchar "!!vide!!";
  709.             }
  710.             else{
  711.                 // recup premier resultat
  712.                 $contenu $contenus[0];
  713.                 // init code varchar
  714.                 $codeVarchar $contenu->getContenu();
  715.             }
  716.             // remplacer la premiere occurence
  717.             $code $this->left_replace($code'[VARCHAR]'$codeVarchar);
  718.             // incremente ordre
  719.             $ordre++;
  720.         }
  721.         return $code;
  722.     }
  723.     public function remplaceTexte($case$element$code$base){
  724.         if ($base == 0){
  725.             $monElement $element;
  726.             $monOrdre "";
  727.         }
  728.         else{
  729.             $monElement $element->getVarElement();
  730.             $monOrdre $element->getOrdre();
  731.         }
  732.         // 1 init ordre
  733.         $ordre 1;
  734.         // 2. compte le nombre de [IMG] present dans le code
  735.         $nbrTexte substr_count($code'[TEXTE]');
  736.         // 3. boucle pour chaque occurence
  737.         for ($i=1$i<=$nbrTexte$i++){
  738.             if ($monOrdre == ""){
  739.             }
  740.             $monOrdre $i;
  741.             if ($base == 0){
  742.                 // recupère l image de la base
  743.                 $contenus $this->varTexteRep->findTexte($case$monElement$monOrdre);
  744.             }
  745.             else{
  746.                 // recupère l image de la base
  747.                 $contenus $this->varTexteRep->findTexteElement($case$monElement$monOrdre$i);
  748.             }
  749.             if (count($contenus) == ){
  750.                 $codeTexte "!!vide!!";
  751.             }
  752.             else{
  753.                 // recup premier resultat
  754.                 $contenu $contenus[0];
  755.                 // init code varchar
  756.                 $codeTexte $contenu->getTexte();
  757.             }
  758.             // remplacer la premiere occurence
  759.             $code $this->left_replace($code'[TEXTE]'$codeTexte);
  760.             // incremente ordre
  761.             $ordre++;
  762.         }
  763.         return $code;
  764.     }
  765.     public function remplaceImgElement($case$varelement$code){
  766.         // 1 init ordre
  767.         $ordre 1;
  768.         // 2. compte le nombre de [IMG] present dans le code
  769.         $nbrImg substr_count($code'[IMG]');
  770.         // 3. boucle pour chaque occurence
  771.         for ($i=1$i<=$nbrImg$i++){
  772.             // recupère l image de la base
  773.             $imgs $this->varImgRep->findImage($case$varelement->getVarElement(), $varelement->getOrdre());
  774.             // recup premier resultat
  775.             $img $imgs[0];
  776.             // init code image
  777.             $codeImage '<img src="'.$img->getUrl().'" alt="'.$img->getAlt().'"';
  778.             if ( $img->getWidth() !== null && $img->getWidth() !=){
  779.                 $codeImage .= ' width="'.$img->getWidth().'"';
  780.             }
  781.             if ( $img->getHeight() !== null && $img->getHeight() !=){
  782.                 $codeImage .= ' height="'.$img->getHeight().'"';
  783.             }
  784.             $codeImage .= ' >';
  785.             // remplacer la premiere occurence
  786.             $code $this->left_replace($code'[IMG]'$codeImage);
  787.             // incremente ordre
  788.             $ordre++;
  789.         }
  790.         return $code;
  791.     }
  792.     
  793.     
  794.     public function left_replace($text$find$replace)
  795.     {
  796.         return implode($replaceexplode($find$text2));
  797.     }
  798.     
  799.     // form ---------------------------------------------------------------------------
  800.     public function formNewDiv($task){
  801.         $form $this->createFormBuilder($task)
  802.             ->add('container'ChoiceType::class, [
  803.                 'choices'  => [
  804.                     'container' => 1,
  805.                     'container-fluid' => 2,
  806.                 ],
  807.                 'multiple'=>false,
  808.                 'expanded'=>true,
  809.                 'label' => 'Type de container',
  810.             ])
  811.             ->add('hauteur'RangeType::class, [
  812.                 'label' => 'Choisissez la hauteur de la div : ',
  813.                 'attr' => [
  814.                     'min' => 0,
  815.                     'max' => 950,
  816.                     'step' => 1
  817.                 ],
  818.             ])
  819.             
  820.             ->add('modDivCols'EntityType::class, [
  821.                 'class' => ModDivCol::class,
  822.                 'choice_label' => 'id',
  823.                 'multiple' => true,
  824.                 'expanded' => true,
  825.             ])
  826.             ->getForm();
  827.                 /*
  828.         $form = '
  829.             <input class="form-control" type="file" id="fileInput">
  830.             <div id="preview"></div>
  831.         ';
  832.         */
  833.         return $form;
  834.     }
  835.     // ajax  ModElemDiv ---------------------------------------------------------------------------
  836.     /**
  837.      * @Route("/afficheFormNewElemDiv/gfd53g5fdgfd53fdg53g", name="front_afficheFormNewElemDiv")
  838.      */
  839.     public function front_afficheFormNewElemDiv(UserInterface $userRequest $request): JsonResponse
  840.     {
  841.         // recupere idPage
  842.         $idPage $_POST["idPage"];
  843.         // on recupere l'objet identiteSite
  844.         if (== 1){
  845.             $identiteSiteRecup $this->modIdentiteRep->find(1);
  846.             if ($identiteSiteRecup){
  847.                 $identiteSite $identiteSiteRecup;
  848.             }
  849.             else{
  850.                 // on instancie l'objet identiteSite
  851.                 $identiteSite = new ModIdentite();
  852.             }
  853.         }
  854.         // verifie les elements
  855.         $mesElemsType $this->modElemDivTypeRep->findAll();
  856.         if( count($mesElemsType) == ){
  857.             $this->initElemsType();
  858.         }
  859.         // on recupère l'objet Page
  860.         $page $this->modPageRep->find($idPage);
  861.         // formatte le titre du modal
  862.         $htmlH1 "Ajouter un élément sur la page <br>« ".$page->getNom()." »";
  863.         // nouvel objet Div
  864.         $newElemDiv = new ModElemDiv();
  865.         // on place le formulaire
  866.         $form $this->createForm(ModElemDivFormType::class, $newElemDiv);
  867.         $form->handleRequest($request);
  868.         // affiche la page secur_firstUser
  869.         $html $this->render('front/form/formNewElemDiv.html.twig', [
  870.             'form' => $form->createView(),
  871.             'idPage' => $idPage,
  872.             'htmlH1' => $htmlH1,
  873.         ]);
  874.         // on place le formulaire
  875.         $form2 $this->createForm(ModElemDivFormClass::class);
  876.         $form2->handleRequest($request);
  877.         // affiche le code html du formulaire
  878.         $html2 $this->render('front/form/formNewElemDivClass.html.twig', [
  879.             'form2' => $form2->createView(),
  880.             'idPage' => $idPage,
  881.         ]);
  882.         //
  883.         return $this->json([
  884.             'html' => $html,
  885.             'html2' => $html2,
  886.             'htmlH1' => $htmlH1,
  887.             'idPage' => $idPage,
  888.             'idElemDiv' => "",
  889.         ]);
  890.     }
  891.     /**
  892.      * @Route("/enregistreFormNewElemDiv/gfd53g5fdgfd53fdg53g", name="front_enregistreFormNewElemDiv")
  893.      */
  894.     public function front_enregistreFormNewElemDiv(UserInterface $userRequest $request): JsonResponse
  895.     {
  896.         // recupere data
  897.         $idPage $_POST["page"];
  898.         $idElemDiv $_POST["elemDiv"];
  899.         $type $_POST["type"];
  900.         $container $_POST["container"];
  901.         $row $_POST["row"];
  902.         $tabCol $_POST["tabCol"];
  903.         $perso $_POST["perso"];
  904.         $complement $_POST["complement"];
  905.         $style $_POST["style"];
  906.         // init données page
  907.         $page $this->modPageRep->find($idPage);
  908.         
  909.         // init données elemDiv
  910.         if ($idElemDiv != ""){
  911.             $elemDivAttach $this->modElemDivRep->find($idElemDiv);
  912.         }
  913.         else{
  914.             $elemDivAttach null;
  915.         }
  916.         // init données ordre
  917.         $allElemDiv $this->modElemDivRep->findAllElemDivParPage($page);
  918.         $ordre count($allElemDiv) + 1;
  919.         // init données class
  920.         $class "";
  921.         if ($container != ""){
  922.             if ($container == 0){
  923.                 $class "container ";
  924.             }
  925.             else{
  926.                 $class "container-fluid ";
  927.             }
  928.         }
  929.         else if ($row != ""){
  930.             $class "row ";
  931.         }
  932.         else if ($tabCol != ""){
  933.             $col explode(","$tabCol);
  934.             if ($col[0] != ""){
  935.                 $class .= "col-".$col[0]." ";
  936.             }
  937.             if ($col[1] != ""){
  938.                 $class .= "col-sm-".$col[1]." ";
  939.             }
  940.             if ($col[2] != ""){
  941.                 $class .= "col-md-".$col[2]." ";
  942.             }
  943.             if ($col[3] != ""){
  944.                 $class .= "col-lg-".$col[3]." ";
  945.             }
  946.             if ($col[4] != ""){
  947.                 $class .= "col-xl-".$col[4]." ";
  948.             }
  949.             if ($col[5] != ""){
  950.                 $class .= "col-xxl-".$col[5]." ";
  951.             }
  952.         }
  953.         else if ($perso != ""){
  954.             $class $perso." ";
  955.         }
  956.         if ($complement != ""){
  957.             $class .= $complement." ";
  958.         }
  959.         // init données styles
  960.         $style $style;
  961.         // init données type
  962.         $type $this->modElemDivTypeRep->find($type);
  963.         // création de l'element elemDiv
  964.         $elemDiv = new ModElemDiv();
  965.         // renseigne l objet
  966.         $elemDiv->setPage($page);
  967.         $elemDiv->setElemDiv($elemDivAttach);
  968.         $elemDiv->setOrdre($ordre);
  969.         $elemDiv->setClass($class);
  970.         $elemDiv->setStyles($style);
  971.         $elemDiv->setType($type);
  972.         // enregistrement dans la base
  973.         $this->em->persist($elemDiv);
  974.         $this->em->flush();
  975.         // renvoi success
  976.         return $this->json([
  977.             'msg' => 1
  978.         ]);
  979.     }
  980.     /**
  981.      * @Route("/enregistreFormModifElemDiv/gfd53g5fdgfd53fdg53g", name="front_enregistreFormModifElemDiv")
  982.      */
  983.     public function front_enregistreFormModifElemDiv(UserInterface $userRequest $request): JsonResponse
  984.     {
  985.         // recupere data
  986.         $idPage $_POST["page"];
  987.         $idElemDiv $_POST["elemDiv"];
  988.         $type $_POST["type"];
  989.         $container $_POST["container"];
  990.         $row $_POST["row"];
  991.         $tabCol $_POST["tabCol"];
  992.         $perso $_POST["perso"];
  993.         $complement $_POST["complement"];
  994.         $style $_POST["style"];
  995.         $idElemDiv $_POST["idElemDiv"];
  996.         // init données page
  997.         $page $this->modPageRep->find($idPage);
  998.         
  999.         // init données elemDiv
  1000.         if ($idElemDiv != ""){
  1001.             $elemDivAttach $this->modElemDivRep->find($idElemDiv);
  1002.         }
  1003.         else{
  1004.             $elemDivAttach null;
  1005.         }
  1006.         // init données ordre
  1007.         // $allElemDiv = $this->modElemDivRep->findAllElemDivParPage($page);
  1008.         // $ordre = count($allElemDiv) + 1;
  1009.         // init données class
  1010.         $class "";
  1011.         if ($container != ""){
  1012.             if ($container == 0){
  1013.                 $class "container ";
  1014.             }
  1015.             else{
  1016.                 $class "container-fluid ";
  1017.             }
  1018.         }
  1019.         else if ($row != ""){
  1020.             $class "row ";
  1021.         }
  1022.         else if ($tabCol != ""){
  1023.             $col explode(","$tabCol);
  1024.             if ($col[0] != ""){
  1025.                 $class .= "col-".$col[0]." ";
  1026.             }
  1027.             if ($col[1] != ""){
  1028.                 $class .= "col-sm-".$col[1]." ";
  1029.             }
  1030.             if ($col[2] != ""){
  1031.                 $class .= "col-md-".$col[2]." ";
  1032.             }
  1033.             if ($col[3] != ""){
  1034.                 $class .= "col-lg-".$col[3]." ";
  1035.             }
  1036.             if ($col[4] != ""){
  1037.                 $class .= "col-xl-".$col[4]." ";
  1038.             }
  1039.             if ($col[5] != ""){
  1040.                 $class .= "col-xxl-".$col[5]." ";
  1041.             }
  1042.         }
  1043.         else if ($perso != ""){
  1044.             $class $perso." ";
  1045.         }
  1046.         if ($complement != ""){
  1047.             $class .= $complement." ";
  1048.         }
  1049.         // init données styles
  1050.         $style $style;
  1051.         // init données type
  1052.         $type $this->modElemDivTypeRep->find($type);
  1053.         // création de l'element elemDiv
  1054.         $elemDiv $this->modElemDivRep->find($idElemDiv);
  1055.         // renseigne l objet
  1056.         $elemDiv->setPage($page);
  1057.         $elemDiv->setElemDiv($elemDivAttach);
  1058.         // $elemDiv->setOrdre($ordre);
  1059.         $elemDiv->setClass($class);
  1060.         $elemDiv->setStyles($style);
  1061.         $elemDiv->setType($type);
  1062.         // enregistrement dans la base
  1063.         $this->em->persist($elemDiv);
  1064.         $this->em->flush();
  1065.         // renvoi success
  1066.         return $this->json([
  1067.             'msg' => 1
  1068.         ]);
  1069.     }
  1070.     
  1071.     /**
  1072.      * @Route("/afficheFormModifElemDiv/gfd53g5fdgfd53fdg53g", name="front_afficheFormModifElemDiv")
  1073.      */
  1074.     public function front_afficheFormModifElemDiv(UserInterface $userRequest $request): JsonResponse
  1075.     {
  1076.         // recupere le nomDuSite
  1077.         $idPage $_POST["idPage"];
  1078.         $idElem $_POST["idElem"];
  1079.         // on recupere l'objet identiteSite
  1080.         if ("site" == "site"){
  1081.             $identiteSiteRecup $this->modIdentiteRep->find(1);
  1082.             if ($identiteSiteRecup){
  1083.                 $identiteSite $identiteSiteRecup;
  1084.             }
  1085.             else{
  1086.                 // on instancie l'objet identiteSite
  1087.                 $identiteSite = new ModIdentite();
  1088.             }
  1089.         }
  1090.         // on recupère l'objet Page
  1091.         $page $this->modPageRep->find($idPage);
  1092.         // on recupère l'objet Div
  1093.         $elemDiv $this->modElemDivRep->find($idElem);
  1094.         // formatte le titre
  1095.         $htmlH1 "Modifier la div ".$elemDiv->getId()." sur la page <br>« ".$page->getNom()." »";
  1096.         // on place le formulaire
  1097.         $form $this->createForm(ModElemDivFormType::class, $elemDiv);
  1098.         $form->handleRequest($request);
  1099.         // affiche la page secur_firstUser
  1100.         $html $this->render('front/form/formNewElemDiv.html.twig', [
  1101.             'form' => $form->createView(),
  1102.             'idPage' => $idPage,
  1103.             'htmlH1' => $htmlH1,
  1104.         ]);
  1105.         // Créez le formulaire
  1106.         $form2 $this->createForm(ModElemDivFormClass::class);
  1107.         // recupère les données de l'object
  1108.         $tabClass explode(" "$elemDiv->getClass());
  1109.         // gestion de container
  1110.         $container null;
  1111.         foreach ($tabClass as $val) {
  1112.             if ($val == "container-fluid"){
  1113.                 $container 2;
  1114.             }
  1115.             elseif ($val == "container"){
  1116.                 $container 1;
  1117.             }
  1118.         }
  1119.         // gestion de xs
  1120.         $xs null;
  1121.         foreach ($tabClass as $val) {
  1122.             if ($val == "col-1"){
  1123.                 $xs 1;
  1124.             }
  1125.             elseif ($val == "col-2"){
  1126.                 $xs 2;
  1127.             }
  1128.             elseif ($val == "col-3"){
  1129.                 $xs 3;
  1130.             }
  1131.             elseif ($val == "col-4"){
  1132.                 $xs 4;
  1133.             }
  1134.             elseif ($val == "col-5"){
  1135.                 $xs 5;
  1136.             }
  1137.             elseif ($val == "col-6"){
  1138.                 $xs 6;
  1139.             }
  1140.             elseif ($val == "col-7"){
  1141.                 $xs 7;
  1142.             }
  1143.             elseif ($val == "col-8"){
  1144.                 $xs 8;
  1145.             }
  1146.             elseif ($val == "col-9"){
  1147.                 $xs 9;
  1148.             }
  1149.             elseif ($val == "col-10"){
  1150.                 $xs 10;
  1151.             }
  1152.             elseif ($val == "col-11"){
  1153.                 $xs 11;
  1154.             }
  1155.             elseif ($val == "col-12"){
  1156.                 $xs 12;
  1157.             }
  1158.         }
  1159.         // gestion de sm
  1160.         $sm null;
  1161.         foreach ($tabClass as $val) {
  1162.             if ($val == "col-sm-1"){
  1163.                 $sm 1;
  1164.             }
  1165.             elseif ($val == "col-sm-2"){
  1166.                 $sm 2;
  1167.             }
  1168.             elseif ($val == "col-sm-3"){
  1169.                 $sm 3;
  1170.             }
  1171.             elseif ($val == "col-sm-4"){
  1172.                 $sm 4;
  1173.             }
  1174.             elseif ($val == "col-sm-5"){
  1175.                 $sm 5;
  1176.             }
  1177.             elseif ($val == "col-sm-6"){
  1178.                 $sm 6;
  1179.             }
  1180.             elseif ($val == "col-sm-7"){
  1181.                 $sm 7;
  1182.             }
  1183.             elseif ($val == "col-sm-8"){
  1184.                 $sm 8;
  1185.             }
  1186.             elseif ($val == "col-sm-9"){
  1187.                 $sm 9;
  1188.             }
  1189.             elseif ($val == "col-sm-10"){
  1190.                 $sm 10;
  1191.             }
  1192.             elseif ($val == "col-sm-11"){
  1193.                 $sm 11;
  1194.             }
  1195.             elseif ($val == "col-sm-12"){
  1196.                 $sm 12;
  1197.             }
  1198.         }
  1199.         // gestion de md
  1200.         $md null;
  1201.         foreach ($tabClass as $val) {
  1202.             if ($val == "col-md-1"){
  1203.                 $md 1;
  1204.             }
  1205.             elseif ($val == "col-md-2"){
  1206.                 $md 2;
  1207.             }
  1208.             elseif ($val == "col-md-3"){
  1209.                 $md 3;
  1210.             }
  1211.             elseif ($val == "col-md-4"){
  1212.                 $md 4;
  1213.             }
  1214.             elseif ($val == "col-md-5"){
  1215.                 $md 5;
  1216.             }
  1217.             elseif ($val == "col-md-6"){
  1218.                 $md 6;
  1219.             }
  1220.             elseif ($val == "col-md-7"){
  1221.                 $md 7;
  1222.             }
  1223.             elseif ($val == "col-md-8"){
  1224.                 $md 8;
  1225.             }
  1226.             elseif ($val == "col-md-9"){
  1227.                 $md 9;
  1228.             }
  1229.             elseif ($val == "col-md-10"){
  1230.                 $md 10;
  1231.             }
  1232.             elseif ($val == "col-md-11"){
  1233.                 $md 11;
  1234.             }
  1235.             elseif ($val == "col-md-12"){
  1236.                 $md 12;
  1237.             }
  1238.         }
  1239.         // gestion de lg
  1240.         $lg null;
  1241.         foreach ($tabClass as $val) {
  1242.             if ($val == "col-lg-1"){
  1243.                 $lg 1;
  1244.             }
  1245.             elseif ($val == "col-lg-2"){
  1246.                 $lg 2;
  1247.             }
  1248.             elseif ($val == "col-lg-3"){
  1249.                 $lg 3;
  1250.             }
  1251.             elseif ($val == "col-lg-4"){
  1252.                 $lg 4;
  1253.             }
  1254.             elseif ($val == "col-lg-5"){
  1255.                 $lg 5;
  1256.             }
  1257.             elseif ($val == "col-lg-6"){
  1258.                 $lg 6;
  1259.             }
  1260.             elseif ($val == "col-lg-7"){
  1261.                 $lg 7;
  1262.             }
  1263.             elseif ($val == "col-lg-8"){
  1264.                 $lg 8;
  1265.             }
  1266.             elseif ($val == "col-lg-9"){
  1267.                 $lg 9;
  1268.             }
  1269.             elseif ($val == "col-lg-10"){
  1270.                 $lg 10;
  1271.             }
  1272.             elseif ($val == "col-lg-11"){
  1273.                 $lg 11;
  1274.             }
  1275.             elseif ($val == "col-lg-12"){
  1276.                 $lg 12;
  1277.             }
  1278.         }
  1279.         $xl null;
  1280.         foreach ($tabClass as $val) {
  1281.             if ($val == "col-xl-1"){
  1282.                 $xl 1;
  1283.             }
  1284.             elseif ($val == "col-xl-2"){
  1285.                 $xl 2;
  1286.             }
  1287.             elseif ($val == "col-xl-3"){
  1288.                 $xl 3;
  1289.             }
  1290.             elseif ($val == "col-xl-4"){
  1291.                 $xl 4;
  1292.             }
  1293.             elseif ($val == "col-xl-5"){
  1294.                 $xl 5;
  1295.             }
  1296.             elseif ($val == "col-xl-6"){
  1297.                 $xl 6;
  1298.             }
  1299.             elseif ($val == "col-xl-7"){
  1300.                 $xl 7;
  1301.             }
  1302.             elseif ($val == "col-xl-8"){
  1303.                 $xl 8;
  1304.             }
  1305.             elseif ($val == "col-xl-9"){
  1306.                 $xl 9;
  1307.             }
  1308.             elseif ($val == "col-xl-10"){
  1309.                 $xl 10;
  1310.             }
  1311.             elseif ($val == "col-xl-11"){
  1312.                 $xl 11;
  1313.             }
  1314.             elseif ($val == "col-xl-12"){
  1315.                 $xl 12;
  1316.             }
  1317.         }
  1318.         $xxl null;
  1319.         foreach ($tabClass as $val) {
  1320.             if ($val == "col-xxl-1"){
  1321.                 $xxl 1;
  1322.             }
  1323.             elseif ($val == "col-xxl-2"){
  1324.                 $xxl 2;
  1325.             }
  1326.             elseif ($val == "col-xxxll-3"){
  1327.                 $xxl 3;
  1328.             }
  1329.             elseif ($val == "col-xxl-4"){
  1330.                 $xxl 4;
  1331.             }
  1332.             elseif ($val == "col-xxl-5"){
  1333.                 $xxl 5;
  1334.             }
  1335.             elseif ($val == "col-xxl-6"){
  1336.                 $xxl 6;
  1337.             }
  1338.             elseif ($val == "col-xxl-7"){
  1339.                 $xxl 7;
  1340.             }
  1341.             elseif ($val == "col-xxl-8"){
  1342.                 $xxl 8;
  1343.             }
  1344.             elseif ($val == "col-xxl-9"){
  1345.                 $xxl 9;
  1346.             }
  1347.             elseif ($val == "col-xxl-10"){
  1348.                 $xxl 10;
  1349.             }
  1350.             elseif ($val == "col-xxl-11"){
  1351.                 $xxl 11;
  1352.             }
  1353.             elseif ($val == "col-xxl-12"){
  1354.                 $xxl 12;
  1355.             }
  1356.         }
  1357.         $row null;
  1358.         foreach ($tabClass as $val) {
  1359.             if ($val == "row"){
  1360.                 $row 1;
  1361.             }
  1362.         }
  1363.         $perso null;
  1364.         if ($container == null && $xs == null && $sm == null && $md == null && $lg == null && $xl == null && $xxl == null && $row == null ){
  1365.             foreach ($tabClass as $val) {
  1366.                 $perso .= $val." ";
  1367.             }
  1368.         }
  1369.         $complement null;
  1370.         foreach ($tabClass as $val) {
  1371.             if ( $val != 'container' && $val != 'container-fluid' && $val != 'row' && $val != 'col-1' && $val != 'col-2' && $val != 'col-3' && $val != 'col-4' && $val != 'col-5' && $val != 'col-6' && $val != 'col-7' && $val != 'col-8' && $val != 'col-9' && $val != 'col-10' && $val != 'col-11' && $val != 'col-12' && $val != 'col-sm-1' && $val != 'col-sm-2' && $val != 'col-sm-3' && $val != 'col-sm-4' && $val != 'col-sm-5' && $val != 'col-sm-6' && $val != 'col-sm-7' && $val != 'col-sm-8' && $val != 'col-sm-9' && $val != 'col-sm-10' && $val != 'col-sm-11' && $val != 'col-sm-12' && $val != 'col-md-1' && $val != 'col-md-2' && $val != 'col-md-3' && $val != 'col-md-4' && $val != 'col-md-5' && $val != 'col-md-6' && $val != 'col-md-7' && $val != 'col-md-8' && $val != 'col-md-9' && $val != 'col-md-10' && $val != 'col-md-11' && $val != 'col-md-12' && $val != 'col-lg-1' && $val != 'col-lg-2' && $val != 'col-lg-3' && $val != 'col-lg-4' && $val != 'col-lg-5' && $val != 'col-lg-6' && $val != 'col-lg-7' && $val != 'col-lg-8' && $val != 'col-lg-9' && $val != 'col-lg-10' && $val != 'col-lg-11' && $val != 'col-lg-12' && $val != 'col-xl-1' && $val != 'col-xl-2' && $val != 'col-xl-3' && $val != 'col-xl-4' && $val != 'col-xl-5' && $val != 'col-xl-6' && $val != 'col-xl-7' && $val != 'col-xl-8' && $val != 'col-xl-9' && $val != 'col-xl-10' && $val != 'col-xl-11' && $val != 'col-xl-12' && $val != 'col-xxl-1' && $val != 'col-xxl-2' && $val != 'col-xxl-3' && $val != 'col-xxl-4' && $val != 'col-xxl-5' && $val != 'col-xxl-6' && $val != 'col-xxl-7' && $val != 'col-xxl-8' && $val != 'col-xxl-9' && $val != 'col-xxl-10' && $val != 'col-xxl-11' && $val != 'col-xxl-12' && $val != $perso ){
  1372.                 $complement .= $val." ";
  1373.             }
  1374.         }
  1375.         $perso null;
  1376.         // stock Données à préremplir
  1377.         $donneesPreremplies = [
  1378.             'container' => $container,
  1379.             "xs" => $xs,
  1380.             "sm" => $sm,
  1381.             "md" => $md,
  1382.             "lg" => $lg,
  1383.             "xl" => $xl,
  1384.             "xxl" => $xxl,
  1385.             "perso" => $perso,
  1386.             "complement" => $complement,
  1387.             "style" => $elemDiv->getStyles(),
  1388.         ];
  1389.         // Préremplir le formulaire avec les données
  1390.         $form2->setData($donneesPreremplies);
  1391.         // on place le formulaire
  1392.         // $form2 = $this->createForm(ModElemDivFormClass::class);
  1393.         $form2->handleRequest($request);
  1394.         // affiche le code html du formulaire
  1395.         $html2 $this->render('front/form/formModifElemDivClass.html.twig', [
  1396.             'form2' => $form2->createView(),
  1397.             'idPage' => $idPage,
  1398.             'elemDiv' => $elemDiv,
  1399.         ]);
  1400.         //
  1401.         return $this->json([
  1402.             'html' => $html,
  1403.             'html2' => $html2,
  1404.             'htmlH1' => $htmlH1,
  1405.             'idPage' => $idPage,
  1406.             'idElemDiv' => "",
  1407.         ]);
  1408.     }
  1409.     /**
  1410.      * @Route("/descendElem/gfd53g5fdgfd53fdg53g", name="front_descendElem")
  1411.      */
  1412.     public function front_descendElem(UserInterface $userRequest $request): JsonResponse
  1413.     {
  1414.         // recupere le nomDuSite
  1415.         $idPage $_POST["idPage"];
  1416.         $idElem $_POST["idElem"];
  1417.         // on recupère l'objet Page
  1418.         $page $this->modPageRep->find($idPage);
  1419.         // on recupère l'objet ModElemDiv
  1420.         $elem $this->modElemDivRep->find($idElem);
  1421.         // capte l'ordre
  1422.         $oldOrdre $elem->getOrdre();
  1423.         $newOrdre $oldOrdre 1;
  1424.         // on recupere l'objet elem à monter
  1425.         $elemMonte $this->modElemDivRep->findByOrdre($page->getId(), $newOrdre);
  1426.         // gestion de l ordre des elem de la page
  1427.         $elem->setOrdre($newOrdre);
  1428.         $this->em->persist($elem);
  1429.         $this->em->flush();
  1430.         $elemMonte[0]->setOrdre($oldOrdre);
  1431.         $this->em->persist($elemMonte[0]);
  1432.         $this->em->flush();
  1433.         //
  1434.         return $this->json([
  1435.             'msg' => 1
  1436.         ]);
  1437.     }
  1438.     
  1439.     /**
  1440.      * @Route("/monteElem/gfd53g5fdgfd53fdg53g", name="front_monteElem")
  1441.      */
  1442.     public function front_monteElem(UserInterface $userRequest $request): JsonResponse
  1443.     {
  1444.         // recupere le nomDuSite
  1445.         $idPage $_POST["idPage"];
  1446.         $idElem $_POST["idElem"];
  1447.         // on recupère l'objet Page
  1448.         $page $this->modPageRep->find($idPage);
  1449.         // on recupère l'objet Div
  1450.         $elem $this->modElemDivRep->find($idElem);
  1451.         // capte l'ordre
  1452.         $oldOrdre $elem->getOrdre();
  1453.         $newOrdre $oldOrdre 1;
  1454.         // on recupere l'objet div à descendre
  1455.         $elemDecend $this->modElemDivRep->findByOrdre($page->getId(), $newOrdre);
  1456.         // gestion de l ordre des div de la page
  1457.         $elem->setOrdre($newOrdre);
  1458.         $this->em->persist($elem);
  1459.         $this->em->flush();
  1460.         $elemDecend[0]->setOrdre($oldOrdre);
  1461.         $this->em->persist($elemDecend[0]);
  1462.         $this->em->flush();
  1463.         //
  1464.         return $this->json([
  1465.             'msg' => 1
  1466.         ]);
  1467.     }
  1468.     /**
  1469.      * @Route("/supprimeElem/gfd53g5fdgfd53fdg53g", name="front_supprimeElem")
  1470.      */
  1471.     public function front_supprimeElem(UserInterface $userRequest $request): JsonResponse
  1472.     {
  1473.         // recupere le nomDuSite
  1474.         $idPage $_POST["idPage"];
  1475.         $idElem $_POST["idElem"];
  1476.         // on recupere l'objet identiteSite
  1477.         if ("site" == "site"){
  1478.             $identiteSiteRecup $this->modIdentiteRep->find(1);
  1479.             if ($identiteSiteRecup){
  1480.                 $identiteSite $identiteSiteRecup;
  1481.             }
  1482.             else{
  1483.                 // on instancie l'objet identiteSite
  1484.                 $identiteSite = new ModIdentite();
  1485.             }
  1486.         }
  1487.         // on recupère l'objet Page
  1488.         $page $this->modPageRep->find($idPage);
  1489.         // on recupère l'objet Div
  1490.         $elem $this->modElemDivRep->find($idElem);
  1491.         // // supprime le contenu de la div
  1492.         // $cols = $div->getModDivCols();
  1493.         // foreach ($cols as &$col) {
  1494.         //     // enregistre dans la base
  1495.         //     $this->em->remove($col);
  1496.         //     $this->em->flush();
  1497.         // }
  1498.         
  1499.         // enregistre la valeur de l'ordre de la div ) supprimer
  1500.         $supprOrdre $elem->getOrdre();
  1501.         
  1502.         // supprime la div
  1503.         // enregistre dans la base
  1504.         $this->em->remove($elem);
  1505.         $this->em->flush();
  1506.         // gestion de l ordre des div de la page
  1507.         $divMoins $this->modElemDivRep->findDivOrdrePlus($supprOrdre);
  1508.         foreach ($divMoins as &$elem) {
  1509.             $elem->setOrdre($supprOrdre);
  1510.             $this->em->persist($elem);
  1511.             $this->em->flush();
  1512.             $supprOrdre++;
  1513.         }
  1514.         //
  1515.         return $this->json([
  1516.             'msg' => 1
  1517.         ]);
  1518.     }
  1519.     /**
  1520.      * @Route("/afficheFormNewElemDivInElem/gfd53g5fdgfd53fdg53g", name="front_afficheFormNewElemDivInElem")
  1521.      */
  1522.     public function front_afficheFormNewElemDivInElem(UserInterface $userRequest $request): JsonResponse
  1523.     {
  1524.         // recupere idPage
  1525.         $idElem $_POST["idElem"];
  1526.         // on recupere l'objet identiteSite
  1527.         if (== 1){
  1528.             $identiteSiteRecup $this->modIdentiteRep->find(1);
  1529.             if ($identiteSiteRecup){
  1530.                 $identiteSite $identiteSiteRecup;
  1531.             }
  1532.             else{
  1533.                 // on instancie l'objet identiteSite
  1534.                 $identiteSite = new ModIdentite();
  1535.             }
  1536.         }
  1537.         // on recupère l'objet Elem
  1538.         $elem $this->modElemDivRep->find($idElem);
  1539.         
  1540.         // on recupère l'objet Page
  1541.         $page $this->modPageRep->find($elem->getPage());
  1542.         // formatte le titre du modal
  1543.         $htmlH1 "Ajouter un élément dans l'élément ".$elem->getId()." sur la page <br>« ".$page->getNom()." »";
  1544.         // nouvel objet Div
  1545.         $newElemDiv = new ModElemDiv();
  1546.         // on place le formulaire
  1547.         $form $this->createForm(ModElemDivFormType::class, $newElemDiv);
  1548.         $form->handleRequest($request);
  1549.         
  1550.         // affiche la page secur_firstUser
  1551.         $html $this->render('front/form/formNewElemDiv.html.twig', [
  1552.             'form' => $form->createView(),
  1553.             'idPage' => $page->getId(),
  1554.             'htmlH1' => $htmlH1,
  1555.         ]);
  1556.         
  1557.         // on place le formulaire
  1558.         $form2 $this->createForm(ModElemDivFormClass::class);
  1559.         $form2->handleRequest($request);
  1560.         // affiche le code html du formulaire
  1561.         $html2 $this->render('front/form/formNewElemDivClass.html.twig', [
  1562.             'form2' => $form2->createView(),
  1563.             'idPage' => $page->getId(),
  1564.         ]);
  1565.         //
  1566.         return $this->json([
  1567.             'html' => $html,
  1568.             'html2' => $html2,
  1569.             'htmlH1' => $htmlH1,
  1570.             'idPage' => $page->getId(),
  1571.             'idElemDiv' => $elem->getId(),
  1572.         ]);
  1573.     }
  1574.     
  1575.     // ajax ---------------------------------------------------------------------------
  1576.     /**
  1577.      * @Route("/construction/saveEmail/gfd53g5fdgfd53fdg53g", name="front_construction_saveEmail")
  1578.      */
  1579.     public function front_construction_saveEmail(UserInterface $userRequest $requestMailerInterface $mailer): JsonResponse
  1580.     {
  1581.         // recupère les datas
  1582.         $emailVisiteur $request->request->get('emailVisiteur');
  1583.         // recupère les admins
  1584.         $admins $this->modUserRep->findAdmin();
  1585.         foreach ($admins as &$admin) {
  1586.             // 2.2 - envoi un mail
  1587.             $email = (new TemplatedEmail())
  1588.                 ->from($this->from)
  1589.                 ->to(new Address($admin->getEmail()))
  1590.                 ->subject('Un visiteur vous envoi son mail depuis le site '.$this->nomSite.'!')
  1591.                 ->text($this->nomSite.' ! '.$emailVisiteur.' .')
  1592.                 ->htmlTemplate('front/mails/mail_construction.html.twig')
  1593.                 ->context([
  1594.                     'expiration_date' => new \DateTime('+7 days'),
  1595.                     'emailVisiteur' => $emailVisiteur,
  1596.                 ])
  1597.             ;
  1598.     
  1599.             $mailer->send($email);
  1600.         }
  1601.         
  1602.     
  1603.         //
  1604.         return $this->json([
  1605.             'msg' => 1
  1606.         ]);
  1607.     }
  1608.     
  1609.     /**
  1610.      * @Route("/afficheFormNewDiv/gfd53g5fdgfd53fdg53g", name="front_afficheFormNewDiv")
  1611.      */
  1612.     public function front_afficheFormNewDiv(UserInterface $userRequest $request): JsonResponse
  1613.     {
  1614.         // recupere le nomDuSite
  1615.         $idPage $_POST["idPage"];
  1616.         // on recupere l'objet identiteSite
  1617.         $identiteSiteRecup $this->modIdentiteRep->find(1);
  1618.         if ($identiteSiteRecup){
  1619.             $identiteSite $identiteSiteRecup;
  1620.         }
  1621.         else{
  1622.             // on instancie l'objet identiteSite
  1623.             $identiteSite = new ModIdentite();
  1624.         }
  1625.         // on recupère l'objet Page
  1626.         $page $this->modPageRep->find($idPage);
  1627.         // formatte le titre
  1628.         $htmlH1 "Ajouter une div sur la page <br>« ".$page->getNom()." »";
  1629.         // nouvel objet Div
  1630.         $newDiv = new ModDiv();
  1631.         // on place le formulaire
  1632.         $form $this->createForm(ModDivType::class, $newDiv);
  1633.         $form->handleRequest($request);
  1634.         // affiche la page secur_firstUser
  1635.         $html $this->render('front/form/formNewDiv.html.twig', [
  1636.             'form' => $form->createView(),
  1637.             'idPage' => $idPage,
  1638.             'htmlH1' => $htmlH1,
  1639.         ]);
  1640.         //
  1641.         return $this->json([
  1642.             'html' => $html,
  1643.             'htmlH1' => $htmlH1,
  1644.         ]);
  1645.     }
  1646.     /**
  1647.      * @Route("/enregistrementDiv/gfd53g5fdgfd53fdg53g", name="front_enregistrementDiv")
  1648.      */
  1649.     public function front_enregistrementDiv(UserInterface $userRequest $request): JsonResponse
  1650.     {
  1651.         // recupere datas
  1652.         $container $_POST["container"];
  1653.         $hauteur $_POST["hauteur"];
  1654.         $idPage $_POST["idPage"];
  1655.         $tabCol $_POST["tabCol"];
  1656.         // init
  1657.         $page $this->modPageRep->find($idPage);
  1658.         $nbrDivs $page->getModDivs();
  1659.         if ($container == "container"){
  1660.             $container 1;
  1661.         }
  1662.         else{
  1663.             $container 2;
  1664.         }
  1665.         // nouvel objet Div
  1666.         $newDiv = new ModDiv();
  1667.         // // remplissage des données
  1668.         $newDiv->setAttache($page);
  1669.         $newDiv->setOrdrecount($nbrDivs) + );
  1670.         $newDiv->setContainer($container);
  1671.         $newDiv->setHauteur($hauteur);
  1672.         foreach ($tabCol as &$col) {
  1673.             $newDivCol = new ModDivCol();
  1674.             $newDivCol->setOrdre($col[0]);
  1675.             $newDivCol->setLargeur(intval($col[1]));
  1676.             $newDivCol->setSm(intval($col[2]));
  1677.             $newDivCol->setMd(intval($col[3]));
  1678.             $newDivCol->setLg(intval($col[4]));
  1679.             $newDivCol->setXl(intval($col[5]));
  1680.             $newDivCol->setXxl(intval($col[6]));
  1681.             $this->em->persist($newDivCol);
  1682.             $this->em->flush();
  1683.             $newDiv->addModDivCol($newDivCol);
  1684.         }
  1685.         // enregistrement dans la base
  1686.         $this->em->persist($newDiv);
  1687.         $this->em->flush();
  1688.         //
  1689.         return $this->json([
  1690.             'msg' => 1
  1691.         ]);
  1692.     }
  1693.     /**
  1694.      * @Route("/afficheFormModifDiv/gfd53g5fdgfd53fdg53g", name="front_afficheFormModifDiv")
  1695.      */
  1696.     public function front_afficheFormModifDiv(UserInterface $userRequest $request): JsonResponse
  1697.     {
  1698.         // recupere le nomDuSite
  1699.         $idPage $_POST["idPage"];
  1700.         $idDiv $_POST["idDiv"];
  1701.         // on recupere l'objet identiteSite
  1702.         if ("site" == "site"){
  1703.             $identiteSiteRecup $this->modIdentiteRep->find(1);
  1704.             if ($identiteSiteRecup){
  1705.                 $identiteSite $identiteSiteRecup;
  1706.             }
  1707.             else{
  1708.                 // on instancie l'objet identiteSite
  1709.                 $identiteSite = new ModIdentite();
  1710.             }
  1711.         }
  1712.         // on recupère l'objet Page
  1713.         $page $this->modPageRep->find($idPage);
  1714.         // on recupère l'objet Div
  1715.         $div $this->modDivRep->find($idDiv);
  1716.         // formatte le titre
  1717.         $htmlH1 "Modifier la div ".$div->getId()." sur la page <br>« ".$page->getNom()." »";
  1718.         // on place le formulaire
  1719.         $form $this->createForm(ModDivType::class, $div);
  1720.         $form->handleRequest($request);
  1721.         // affiche la page secur_firstUser
  1722.         $html $this->render('front/form/formModifDiv.html.twig', [
  1723.             'form' => $form->createView(),
  1724.             'idPage' => $idPage,
  1725.             'htmlH1' => $htmlH1,
  1726.         ]);
  1727.         //
  1728.         return $this->json([
  1729.             'html' => $html,
  1730.             'htmlH1' => $htmlH1,
  1731.         ]);
  1732.     }
  1733.     /**
  1734.      * @Route("/modificationDiv/gfd53g5fdgfd53fdg53g", name="front_modificationDiv")
  1735.      */
  1736.     public function front_modificationDiv(UserInterface $userRequest $request): JsonResponse
  1737.     {
  1738.         // recupere datas
  1739.         $container $_POST["container"];
  1740.         $hauteur $_POST["hauteur"];
  1741.         $idPage $_POST["idPage"];
  1742.         $idDiv $_POST["idDiv"];
  1743.         $tabCol $_POST["tabCol"];
  1744.         // init
  1745.         $page $this->modPageRep->find($idPage);
  1746.         $nbrDivs $page->getModDivs();
  1747.         if ($container == "container"){
  1748.             $container 1;
  1749.         }
  1750.         else{
  1751.             $container 2;
  1752.         }
  1753.         // nouvel objet Div
  1754.         $div $this->modDivRep->find($idDiv);
  1755.         // // remplissage des données
  1756.         $div->setAttache($page);
  1757.         //$div->setOrdre( count($nbrDivs) + 1 );
  1758.         $div->setContainer($container);
  1759.         $div->setHauteur($hauteur);
  1760.         $nbrOldCols count($div->getModDivCols());
  1761.         $nbrModifCols count($tabCol);
  1762.         // cas 1 . il y a autant de oldcol que de modifcol ou si il y a de nouvelles colonnes
  1763.             // if ($nbrOldCols == $nbrModifCols || $nbrOldCols < $nbrModifCols){
  1764.             //     // boucle le tableau des colonnes
  1765.             //     foreach ($tabCol as &$col) {
  1766.             //         // test l'existence de la colonne
  1767.             //         $newDivCol = $this->modDivColRep->recupColparDivEtOrdre($div->getId(), $col[0]);
  1768.             //         if ( count($newDivCol) > 0){
  1769.             //             $newDivCol = $newDivCol[0];
  1770.             //         }
  1771.             //         else{
  1772.             //             $newDivCol = new ModDivCol();
  1773.             //         }
  1774.             //         $newDivCol->setOrdre($col[0]);
  1775.             //         $newDivCol->setLargeur(intval($col[1]));
  1776.             //         $newDivCol->setSm(intval($col[2]));
  1777.             //         $newDivCol->setMd(intval($col[3]));
  1778.             //         $newDivCol->setLg(intval($col[4]));
  1779.             //         $newDivCol->setXl(intval($col[5]));
  1780.             //         $newDivCol->setXxl(intval($col[6]));
  1781.             //         $this->em->persist($newDivCol);
  1782.             //         $this->em->flush();
  1783.             //         $div->addModDivCol($newDivCol);
  1784.             //     }
  1785.             // }
  1786.             // // cas 2 . il y a plus de oldcol que de modifcol
  1787.         // else {
  1788.             // determine et supprime les col disparues
  1789.             // boucle pour chaque colonne de la div
  1790.             foreach ($div->getModDivCols() as &$oldcol) {
  1791.                 // init suppr à 1
  1792.                 $isSuppr 1;
  1793.                 // boucle pour chaque col de la tab
  1794.                 foreach ($tabCol as &$col) {
  1795.                     if (!isset($col[7])){
  1796.                         $myid 0;
  1797.                     }
  1798.                     else{
  1799.                         $myid substr($col[7], 3);
  1800.                     }
  1801.                     // si il existe la col dans la tab
  1802.                     if ($oldcol->getId() == $myid){
  1803.                         // configure suppr à 0
  1804.                         $isSuppr 0;
  1805.                     }
  1806.                 }
  1807.                 // si suppr est à 1
  1808.                 if ($isSuppr == 1){
  1809.                     $oldOrdre $oldcol->getOrdre();
  1810.                     // supprime la cal de la div
  1811.                     $div->removeModDivCol($oldcol);
  1812.                     // supprime la col de la base
  1813.                     $this->em->remove($oldcol);
  1814.                     $this->em->flush();
  1815.                 }
  1816.             }
  1817.             // boucle le tableau des colonnes
  1818.             $ordreA 0;
  1819.             foreach ($tabCol as &$col) {
  1820.                 // test l'existence de la colonne
  1821.                 //$newDivCol = $this->modDivColRep->recupColparDivEtOrdre($div->getId(), $col[0]);
  1822.                 if (!isset($col[7])){
  1823.                     $myid 0;
  1824.                     $newDivCol = new ModDivCol();
  1825.                 }
  1826.                 else{
  1827.                     $myid substr($col[7], 3);
  1828.                     $newDivCol $this->modDivColRep->find(substr($col[7], 3));
  1829.                 }
  1830.                 // if ( count($newDivCol) > 0){
  1831.                 //     $newDivCol = $newDivCol[0];
  1832.                 // }
  1833.                 // else{
  1834.                 //     $newDivCol = new ModDivCol();
  1835.                 // }
  1836.                 if ( !isset($newDivCol) ){
  1837.                     $newDivCol = new ModDivCol();
  1838.                 }
  1839.                 $newDivCol->setOrdre($col[0]);
  1840.                 $newDivCol->setLargeur(intval($col[1]));
  1841.                 $newDivCol->setSm(intval($col[2]));
  1842.                 $newDivCol->setMd(intval($col[3]));
  1843.                 $newDivCol->setLg(intval($col[4]));
  1844.                 $newDivCol->setXl(intval($col[5]));
  1845.                 $newDivCol->setXxl(intval($col[6]));
  1846.                 $this->em->persist($newDivCol);
  1847.                 $this->em->flush();
  1848.                 $div->addModDivCol($newDivCol);
  1849.                 $ordreA++;
  1850.             }
  1851.         // }
  1852.         // enregistrement dans la base
  1853.         $this->em->persist($div);
  1854.         $this->em->flush();
  1855.         //
  1856.         return $this->json([
  1857.             'msg' => 1
  1858.         ]);
  1859.     }
  1860.     /**
  1861.      * @Route("/supprimeDiv/gfd53g5fdgfd53fdg53g", name="front_supprimeDiv")
  1862.      */
  1863.     public function front_supprimeDiv(UserInterface $userRequest $request): JsonResponse
  1864.     {
  1865.         // recupere le nomDuSite
  1866.         $idPage $_POST["idPage"];
  1867.         $idDiv $_POST["idDiv"];
  1868.         // on recupere l'objet identiteSite
  1869.         if ("site" == "site"){
  1870.             $identiteSiteRecup $this->modIdentiteRep->find(1);
  1871.             if ($identiteSiteRecup){
  1872.                 $identiteSite $identiteSiteRecup;
  1873.             }
  1874.             else{
  1875.                 // on instancie l'objet identiteSite
  1876.                 $identiteSite = new ModIdentite();
  1877.             }
  1878.         }
  1879.         // on recupère l'objet Page
  1880.         $page $this->modPageRep->find($idPage);
  1881.         // on recupère l'objet Div
  1882.         $div $this->modDivRep->find($idDiv);
  1883.         // supprime le contenu de la div
  1884.         $cols $div->getModDivCols();
  1885.         foreach ($cols as &$col) {
  1886.             // enregistre dans la base
  1887.             $this->em->remove($col);
  1888.             $this->em->flush();
  1889.         }
  1890.         
  1891.         // enregistre la valeur de l'ordre de la div ) supprimer
  1892.         $supprOrdre $div->getOrdre();
  1893.         
  1894.         // supprime la div
  1895.         // enregistre dans la base
  1896.         $this->em->remove($div);
  1897.         $this->em->flush();
  1898.         // gestion de l ordre des div de la page
  1899.         $divMoins $this->modDivRep->findDivOrdrePlus($supprOrdre);
  1900.         foreach ($divMoins as &$div) {
  1901.             $div->setOrdre($supprOrdre);
  1902.             $this->em->persist($div);
  1903.             $this->em->flush();
  1904.             $supprOrdre++;
  1905.         }
  1906.         //
  1907.         return $this->json([
  1908.             'msg' => 1
  1909.         ]);
  1910.     }
  1911.     /**
  1912.      * @Route("/descendDiv/gfd53g5fdgfd53fdg53g", name="front_descendDiv")
  1913.      */
  1914.     public function front_descendDiv(UserInterface $userRequest $request): JsonResponse
  1915.     {
  1916.         // recupere le nomDuSite
  1917.         $idPage $_POST["idPage"];
  1918.         $idDiv $_POST["idDiv"];
  1919.         // on recupère l'objet Page
  1920.         $page $this->modPageRep->find($idPage);
  1921.         // on recupère l'objet Div
  1922.         $div $this->modDivRep->find($idDiv);
  1923.         // capte l'ordre
  1924.         $oldOrdre $div->getOrdre();
  1925.         $newOrdre $oldOrdre 1;
  1926.         // on recupere l'objet div à monter
  1927.         $divMonte $this->modDivRep->findByOrdre($page->getId(), $newOrdre);
  1928.         // gestion de l ordre des div de la page
  1929.         $div->setOrdre($newOrdre);
  1930.         $this->em->persist($div);
  1931.         $this->em->flush();
  1932.         $divMonte[0]->setOrdre($oldOrdre);
  1933.         $this->em->persist($divMonte[0]);
  1934.         $this->em->flush();
  1935.         //
  1936.         return $this->json([
  1937.             'msg' => 1
  1938.         ]);
  1939.     }
  1940.     
  1941.     /**
  1942.      * @Route("/monteDiv/gfd53g5fdgfd53fdg53g", name="front_monteDiv")
  1943.      */
  1944.     public function front_monteDiv(UserInterface $userRequest $request): JsonResponse
  1945.     {
  1946.         // recupere le nomDuSite
  1947.         $idPage $_POST["idPage"];
  1948.         $idDiv $_POST["idDiv"];
  1949.         // on recupère l'objet Page
  1950.         $page $this->modPageRep->find($idPage);
  1951.         // on recupère l'objet Div
  1952.         $div $this->modDivRep->find($idDiv);
  1953.         // capte l'ordre
  1954.         $oldOrdre $div->getOrdre();
  1955.         $newOrdre $oldOrdre 1;
  1956.         // on recupere l'objet div à descendre
  1957.         $divDecend $this->modDivRep->findByOrdre($page->getId(), $newOrdre);
  1958.         // gestion de l ordre des div de la page
  1959.         $div->setOrdre($newOrdre);
  1960.         $this->em->persist($div);
  1961.         $this->em->flush();
  1962.         $divDecend[0]->setOrdre($oldOrdre);
  1963.         $this->em->persist($divDecend[0]);
  1964.         $this->em->flush();
  1965.         //
  1966.         return $this->json([
  1967.             'msg' => 1
  1968.         ]);
  1969.     }
  1970.     // initFirstCharte
  1971.     function initFirstCharte(){
  1972.         $idCharte = new ModCharte();
  1973.         $idCharte->setNom("Woody");
  1974.         $idCharte->setChemin("charte/woody/");
  1975.         $idCharte->setActif(1);
  1976.         $myHead '
  1977.             <!-- favicons -->
  1978.             <link href="/docs/logo/favicon.ico" rel="icon">
  1979.             <link href="/docs/logo/apple-touch-icon.png" rel="apple-touch-icon">
  1980.             <!-- Google Web Fonts -->
  1981.             <link rel="preconnect" href="https://fonts.googleapis.com">
  1982.             <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  1983.             <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500&family=Roboto:wght@500;700;900&display=swap" rel="stylesheet">
  1984.             <!-- Icon Font Stylesheet -->
  1985.             <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" rel="stylesheet">
  1986.             <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.4.1/font/bootstrap-icons.css" rel="stylesheet">
  1987.             <!-- Libraries Stylesheet -->
  1988.             <link href="/Modules/Templates/woody-1.0.0/lib/animate/animate.min.css" rel="stylesheet">
  1989.             <link href="/Modules/Templates/woody-1.0.0/lib/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet">
  1990.             <link href="/Modules/Templates/woody-1.0.0/lib/lightbox/css/lightbox.min.css" rel="stylesheet">
  1991.             <!-- Customized Bootstrap Stylesheet -->
  1992.             <link href="/Modules/Templates/woody-1.0.0/css/bootstrap.min.css" rel="stylesheet">
  1993.             <!-- Template Stylesheet -->
  1994.             <link href="/Modules/Templates/woody-1.0.0/css/style.css" rel="stylesheet">
  1995.             <!-- Hover-master -->
  1996.             <link href="/Modules/js/hover/css/hover-min.css" rel="stylesheet">
  1997.         ';
  1998.         $idCharte->setHeadHtml($myHead);
  1999.         $myJs '
  2000.             <!-- JavaScript Libraries -->
  2001.             <script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>
  2002.             <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.bundle.min.js"></script>
  2003.             <script src="/Modules/Templates/woody-1.0.0/lib/wow/wow.min.js"></script>
  2004.             <script src="/Modules/Templates/woody-1.0.0/lib/easing/easing.min.js"></script>
  2005.             <script src="/Modules/Templates/woody-1.0.0/lib/waypoints/waypoints.min.js"></script>
  2006.             <script src="/Modules/Templates/woody-1.0.0/lib/counterup/counterup.min.js"></script>
  2007.             <script src="/Modules/Templates/woody-1.0.0/lib/owlcarousel/owl.carousel.min.js"></script>
  2008.             <script src="/Modules/Templates/woody-1.0.0/lib/isotope/isotope.pkgd.min.js"></script>
  2009.             <script src="/Modules/Templates/woody-1.0.0/lib/lightbox/js/lightbox.min.js"></script>
  2010.             
  2011.             <!-- Template Javascript -->
  2012.             <script src="/Modules/Templates/woody-1.0.0/js/main.js"></script>
  2013.         ';
  2014.         $idCharte->setJsHtml($myJs);
  2015.         $myLoading '
  2016.             <!-- Spinner Start -->
  2017.             <div id="spinner" class="show bg-white position-fixed translate-middle w-100 vh-100 top-50 start-50 d-flex align-items-center justify-content-center">
  2018.                 <div class="spinner-grow text-primary" style="width: 3rem; height: 3rem;" role="status">
  2019.                     <span class="sr-only">Loading...</span>
  2020.                 </div>
  2021.             </div>
  2022.             <!-- Spinner End -->
  2023.         ';
  2024.         $idCharte->setLoadingHtml($myLoading);
  2025.         // enregistrement
  2026.         $this->em->persist($idCharte);
  2027.         $this->em->flush();
  2028.         return $idCharte;
  2029.     }
  2030.     /**
  2031.      * @Route("/emailConstruction/gfd53g5fdgfd53fdg53g", name="save_emailConstruction")
  2032.      */
  2033.     public function save_emailConstruction(Request $request): JsonResponse
  2034.     {
  2035.         // recupere contact
  2036.         $contact $_POST["contact"];
  2037.         // enregistre le mail
  2038.         $inscrit = new ModUser();
  2039.         $inscrit->setUsername("");
  2040.         $inscrit->setRoles(['ROLE_CONSTRUCTION']);
  2041.         $inscrit->setPassword("");
  2042.         $inscrit->setEmail($contact);
  2043.         $inscrit->setTelephone("");
  2044.         $inscrit->setActif(0);
  2045.         $inscrit->setCgu(0);
  2046.         $inscrit->setDateCrea(new \DateTime());
  2047.         $inscrit->setDateModif(new \DateTime());
  2048.         // 3. inscription dans la base
  2049.         $this->em->persist($inscrit);
  2050.         $this->em->flush();
  2051.         //
  2052.         return $this->json([
  2053.             'msg' => 1,
  2054.         ]);
  2055.     }
  2056.     // initElemsType
  2057.     function initElemsType(){
  2058.         $elem1 = new ModElemDivType();
  2059.         $elem1->setNom('Div');
  2060.         $elem1->setOuverture('<div id class style >');
  2061.         $elem1->setFermeture('</div>');
  2062.         // enregistrement dans la base
  2063.         $this->em->persist($elem1);
  2064.         $this->em->flush();
  2065.         $elem2 = new ModElemDivType();
  2066.         $elem2->setNom('Span');
  2067.         $elem2->setOuverture('<span id class style >');
  2068.         $elem2->setFermeture('</span>');
  2069.         // enregistrement dans la base
  2070.         $this->em->persist($elem2);
  2071.         $this->em->flush();
  2072.         $elem3 = new ModElemDivType();
  2073.         $elem3->setNom('Header');
  2074.         $elem3->setOuverture('<header id class style >');
  2075.         $elem3->setFermeture('</header>');
  2076.         // enregistrement dans la base
  2077.         $this->em->persist($elem3);
  2078.         $this->em->flush();
  2079.         $elem4 = new ModElemDivType();
  2080.         $elem4->setNom('Nav');
  2081.         $elem4->setOuverture('<nav id class style >');
  2082.         $elem4->setFermeture('</nav>');
  2083.         // enregistrement dans la base
  2084.         $this->em->persist($elem4);
  2085.         $this->em->flush();
  2086.         $elem5 = new ModElemDivType();
  2087.         $elem5->setNom('Footer');
  2088.         $elem5->setOuverture('<footer id class style >');
  2089.         $elem5->setFermeture('</footer>');
  2090.         // enregistrement dans la base
  2091.         $this->em->persist($elem5);
  2092.         $this->em->flush();
  2093.         $elem6 = new ModElemDivType();
  2094.         $elem6->setNom('Section');
  2095.         $elem6->setOuverture('<section id class style >');
  2096.         $elem6->setFermeture('</section>');
  2097.         // enregistrement dans la base
  2098.         $this->em->persist($elem6);
  2099.         $this->em->flush();
  2100.         $elem7 = new ModElemDivType();
  2101.         $elem7->setNom('Article');
  2102.         $elem7->setOuverture('<article id class style >');
  2103.         $elem7->setFermeture('</article>');
  2104.         // enregistrement dans la base
  2105.         $this->em->persist($elem7);
  2106.         $this->em->flush();
  2107.         $elem8 = new ModElemDivType();
  2108.         $elem8->setNom('Aside');
  2109.         $elem8->setOuverture('<aside id class style >');
  2110.         $elem8->setFermeture('</aside>');
  2111.         // enregistrement dans la base
  2112.         $this->em->persist($elem8);
  2113.         $this->em->flush();
  2114.     }
  2115. }