src/Controller/PubliqueController.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CommunesEpci;
  4. use App\Entity\Donnes;
  5. use App\Entity\PersonnesAssocies;
  6. use App\Entity\Tracking;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class PubliqueController extends AbstractController
  14. {
  15.     /**
  16.      * @var PropesctRepository
  17.      */
  18.     private $_repo = [];
  19.     /**
  20.      * AdministrationCategoriesSousCategorieController constructor.
  21.      * @param EntityManagerInterface $_em
  22.      */
  23.     public function __construct(EntityManagerInterface $_em){
  24.         //  Récupération de l'entity manager
  25.         $this->_em $_em;
  26.         //  Récupération des repository utiles
  27.         $this->_repo = [
  28.             "CommunesEpci" => $this->_em->getRepository(CommunesEpci::class),
  29.             "Tracking" => $this->_em->getRepository(Tracking::class),
  30.         ];
  31.     }
  32.     /**
  33.      * @Route("/", name="accueil")
  34.      * @param SessionInterface $session
  35.      * @param Request $request
  36.      * @return Response
  37.      */
  38.     public function index(SessionInterface $sessionRequest $request): Response
  39.     {
  40.         $pp $request->request;
  41.         $retour = [
  42.             "messageErreurConnexion" => ""
  43.         ];
  44.         /*
  45.          * Suppression de la session
  46.          */
  47.         $session->set("commune_epci"null);
  48.         /*
  49.          * Stockage qui viens depuis newsletter
  50.          */
  51.         if(isset($_GET["zidnuzb"]) == true && $_GET["zidnuzb"] != ""){
  52.             $id str_replace("suyabbc"""trim($_GET["zidnuzb"]));
  53.             $id str_replace("ujznnincuays"""$id);
  54.             $commune_epci $this->_repo["CommunesEpci"]->findOneBy(["id" => $id]);
  55.             $tracking = new Tracking();
  56.             $tracking->setCommunesEpci($commune_epci);
  57.             $tracking->setDateAjout(new \DateTime());
  58.             $tracking->setClef("Newsletter N°1");
  59.             $tracking->setAction("Clic sur le lien de la newsletter N°1");
  60.             $this->_em->persist($tracking);
  61.             $this->_em->flush();
  62.         }
  63.         /*
  64.          * Connexion
  65.          */
  66.         if($pp->get("identifiant") != "" && $pp->get("mot-de-passe") != "") {
  67.             $commune_epci $this->_repo["CommunesEpci"]->findOneBy([
  68.                 "login" => $pp->get("identifiant"),
  69.                 "mot_de_passe" => $pp->get("mot-de-passe"),
  70.                 "actif" => true
  71.             ]);
  72.             if($commune_epci == null)
  73.                 $retour["messageErreurConnexion"] = "<div class='alert alert-danger'>Identifiant ou mot de passe incorrect</div>";
  74.             else {
  75.                 $retour["messageErreurConnexion"] = "<div class='alert alert-success'>Connexion valide</div>";
  76.                 $session->set("commune_epci"$commune_epci->getId());
  77.                 $tracking = new Tracking();
  78.                 $tracking->setCommunesEpci($commune_epci);
  79.                 $tracking->setDateAjout(new \DateTime());
  80.                 $tracking->setClef("connexion");
  81.                 $tracking->setAction("Connexion à la fiche");
  82.                 $this->_em->persist($tracking);
  83.                 $this->_em->flush();
  84.                 switch($commune_epci->getType()) {
  85.                     case "commune":
  86.                         return $this->redirectToRoute("communes");
  87.                         break;
  88.                     case "epci":
  89.                         return $this->redirectToRoute("epci");
  90.                         break;
  91.                 }
  92.             }
  93.         }
  94.         /*
  95.          * Retour de la vue
  96.          */
  97.         return $this->render('publique/connexion.html.twig'$retour);
  98.     }
  99.     /**
  100.      * @Route("/communes", name="communes")
  101.      * @param Request $request
  102.      * @param SessionInterface $session
  103.      * @return Response
  104.      */
  105.     public function communes(SessionInterface $sessionRequest $request): Response
  106.     {
  107.         $pp $request->request;
  108.         $commune null;
  109.         $_mode_dev false;
  110.         /*
  111.          * Verrification information commune
  112.          */
  113.         if($session->get("commune_epci") == "")
  114.             return $this->redirectToRoute("accueil", ["reson" => "null - " $session->get("commune_epci")]);
  115.         else{
  116.             $commune $this->_repo["CommunesEpci"]->findOneById($session->get("commune_epci"));
  117.             if($commune == null)
  118.                 return $this->redirectToRoute("accueil", ["reson" => $session->get("commune_epci")]);
  119.         }
  120.         /*
  121.          * Classement des données
  122.          */
  123.         $commune->_classement_donnees();
  124.         $commune->_classement_personnes_associes();
  125.         /*
  126.          * Stocjage des informations de la commune
  127.          */
  128.         $retour = [
  129.             "comm_epci" => $commune,
  130.             "messageAction" => ""
  131.         ];
  132.         /*
  133.          * Traitement du formulaire
  134.          */
  135.         if($pp->get("sauvegarde-header") != "" || $pp->get("travail-termine") != "" || $pp->get("sauvegarde-bas") != "" || $pp->get("travail-termine-apres-modification") != ""){
  136.             $date_ajout = new \DateTime();
  137.             /*
  138.              * Tracking sauvegarde
  139.              */
  140.             $tracking = new Tracking();
  141.             $tracking->setCommunesEpci($commune);
  142.             $tracking->setDateAjout($date_ajout);
  143.             $tracking->setClef("sauvegarde");
  144.             $tracking->setAction("Sauvegarde de la fiche");
  145.             $this->_em->persist($tracking);
  146.             $this->_em->flush();
  147.             /*
  148.              * Désactivation des anciennes données
  149.              */
  150.             foreach ($commune->getDonnes() as $donnee) {
  151.                 if($donnee->getClef() != "maire-photo" && $donnee->getClef() != "nom")
  152.                     $donnee->setActif(false);
  153.                 $this->_em->persist($donnee);
  154.             }
  155.             foreach ($commune->getPersonnesAssocies() as $personne) {
  156.                 $personne->setActif(false);
  157.                 $this->_em->persist($personne);
  158.             }
  159.             if($_mode_dev == false)
  160.                 $this->_em->flush();
  161.             /*
  162.              * Traitement des données
  163.              */
  164.             $tableau_indice_bdd = [
  165.                 "nom",
  166.                 "siret",
  167.                 //  Tab Maire
  168.                 "maire-civilite",
  169.                 "maire-nom",
  170.                 "maire-prenom",
  171.                 "maire-date-naissance-jour",
  172.                 "maire-date-naissance-mois",
  173.                 "maire-date-naissance-annee",
  174.                 "maire-profession",
  175.                 "maire-portable",
  176.                 "maire-mail",
  177.                 "maire-elu-maire-depuis-jour",
  178.                 "maire-elu-maire-depuis-mois",
  179.                 "maire-elu-maire-depuis-annee",
  180.                 "maire-autre-mandats",
  181.                 //  Tab Adjoint(e)s et Conseiller(ère)s délégué(e)s
  182.                 //  Tab Conseiller(ère)s municipaux
  183.                 //  Tab Informations Mairie
  184.                 "adresse-mairie",
  185.                 "code-postal-mairie",
  186.                 "telephone-mairie",
  187.                 "mail-mairie",
  188.                 "site-mairie",
  189.                 "am-ouverture-1",
  190.                 "am-fermeture-1",
  191.                 "pm-ouverture-1",
  192.                 "pm-fermeture-1",
  193.                 "am-ouverture-2",
  194.                 "am-fermeture-2",
  195.                 "pm-ouverture-2",
  196.                 "pm-fermeture-2",
  197.                 "am-ouverture-3",
  198.                 "am-fermeture-3",
  199.                 "pm-ouverture-3",
  200.                 "pm-fermeture-3",
  201.                 "am-ouverture-4",
  202.                 "am-fermeture-4",
  203.                 "pm-ouverture-4",
  204.                 "pm-fermeture-4",
  205.                 "am-ouverture-5",
  206.                 "am-fermeture-5",
  207.                 "pm-ouverture-5",
  208.                 "pm-fermeture-5",
  209.                 "am-ouverture-6",
  210.                 "am-fermeture-6",
  211.                 "pm-ouverture-6",
  212.                 "pm-fermeture-6",
  213.                 "infos-plus-horaires-mairie"
  214.             ];
  215.             foreach ($tableau_indice_bdd as $indice) {
  216.                 $valeur "";
  217.                 switch($indice){
  218.                     case "maire-nom" :
  219.                         $valeur strtoupper($pp->get("maire-nom"));
  220.                         break;
  221.                     case "maire-prenom" :
  222.                         $valeurstr_replace('-'' 'ucwords($pp->get("maire-prenom")));
  223.                         break;
  224.                     case "maire-portable" :
  225.                         $valeurstr_replace(' '''$pp->get("maire-portable"));
  226.                         break;
  227.                     case "telephone-mairie" :
  228.                         $valeurstr_replace(' '''$pp->get("telephone-mairie"));
  229.                         break;
  230.                     case "site-mairie" :
  231.                         $valeurstr_replace('https://'''$pp->get("site-mairie"));
  232.                         $valeurstr_replace('http://'''$valeur);
  233.                         $valeurstr_replace('https'''$valeur);
  234.                         $valeurstr_replace('http'''$valeur);
  235.                         $valeurstr_replace('://'''$valeur);
  236.                         $valeurstr_replace('//'''$valeur);
  237.                         $valeur "https://" $valeur;
  238.                         break;
  239.                     case "maire-autre-mandats" :
  240.                         for($i 0$i <= $pp->get("maire-nombre-mandats"); $i++){
  241.                             $valeur_a_ajouter $pp->get("maire-autre-mandats-" $i);
  242.                             if(trim($valeur_a_ajouter) != "") {
  243.                                 if ($valeur != "")
  244.                                     $valeur .= "¤";
  245.                                 $valeur .= $valeur_a_ajouter;
  246.                             }
  247.                         }
  248.                         break;
  249.                     default :
  250.                         $valeur $pp->get($indice);
  251.                         break;
  252.                 }
  253.                 if($_mode_dev == true)
  254.                     dump("Indice : " $indice " - Valeur : " $valeur);
  255.                 $donnee = new Donnes();
  256.                 $donnee->setClef($indice);
  257.                 $donnee->setValeur($valeur);
  258.                 $donnee->setDateAjout($date_ajout);
  259.                 $donnee->setActif(true);
  260.                 $donnee->setCommunesEpci($commune);
  261.                 if($_mode_dev == false)
  262.                     $this->_em->persist($donnee);
  263.             }
  264.             if($_mode_dev == false)
  265.                 $this->_em->flush();
  266.             /*
  267.              * Ajout des personnes attachées
  268.              */
  269.             for ($i 0$i <= $pp->get("nombre-conseiller-municipaux"); $i++){
  270.                 $nom $pp->get("conseillers-municipaux-nom-" $i);
  271.                 $prenom $pp->get("conseillers-municipaux-prenom-" $i);
  272.                 if($nom != "" && $prenom != ""){
  273.                     $personne = new PersonnesAssocies();
  274.                     $personne->setCivilite($pp->get("conseillers-municipaux-civilite-" $i));
  275.                     $personne->setNom(strtoupper($nom));
  276.                     $personne->setPrenom(str_replace('-'' 'ucwords($prenom)));
  277.                     $personne->setDelegation(null);
  278.                     $personne->setEmail(null);
  279.                     $personne->setType("conseillers-municipaux");
  280.                     $personne->setDateAjout($date_ajout);
  281.                     $personne->setActif(true);
  282.                     $personne->setCommunesEpci($commune);
  283.                     $this->_em->persist($personne);
  284.                 }
  285.             }
  286.             if($_mode_dev == false)
  287.                 $this->_em->flush();
  288.             for ($i 0$i <= $pp->get("nombre-adjoints-max"); $i++){
  289.                 $nom $pp->get("adjoint-nom-" $i);
  290.                 $prenom $pp->get("adjoint-prenom-" $i);
  291.                 if($nom != "" && $prenom != ""){
  292.                     if($_mode_dev == true)
  293.                         dump("Ajout d'un adjoint : " $nom " " $prenom);
  294.                     $personne = new PersonnesAssocies();
  295.                     $personne->setCivilite($pp->get("adjoint-civilite-" $i));
  296.                     $personne->setNom(strtoupper($nom));
  297.                     $personne->setPrenom(str_replace('-'' 'ucwords($prenom)));
  298.                     $personne->setDelegation($pp->get("adjoint-delegation-" $i));
  299.                     $personne->setEmail(null);
  300.                     $personne->setType("adjoint");
  301.                     $personne->setDateAjout($date_ajout);
  302.                     $personne->setActif(true);
  303.                     $personne->setCommunesEpci($commune);
  304.                     $this->_em->persist($personne);
  305.                 }
  306.             }
  307.             if($_mode_dev == false)
  308.                 $this->_em->flush();
  309.             for ($i 0$i <= $pp->get("nombre-conseillers-delegues-max"); $i++){
  310.                 $nom $pp->get("conseiller-delegue-nom-" $i);
  311.                 $prenom $pp->get("conseiller-delegue-prenom-" $i);
  312.                 if($nom != "" && $prenom != ""){
  313.                     if($_mode_dev == true)
  314.                         dump("Ajout d'un conseiller délégué : " $nom " " $prenom);
  315.                     $personne = new PersonnesAssocies();
  316.                     $personne->setCivilite($pp->get("conseiller-delegue-civilite-" $i));
  317.                     $personne->setNom(strtoupper($nom));
  318.                     $personne->setPrenom(str_replace('-'' 'ucwords($prenom)));
  319.                     $personne->setDelegation($pp->get("conseiller-delegue-delegation-" $i));
  320.                     $personne->setEmail(null);
  321.                     $personne->setType("conseiller-delegue");
  322.                     $personne->setDateAjout($date_ajout);
  323.                     $personne->setActif(true);
  324.                     $personne->setCommunesEpci($commune);
  325.                     $this->_em->persist($personne);
  326.                 }
  327.             }
  328.             if($_mode_dev == false)
  329.                 $this->_em->flush();
  330.             /*
  331.              * Ajout des personnes Fonction Administrative
  332.              */
  333.             for ($i 0$i <= $pp->get("id-administratif-max"); $i++){
  334.                 $nom $pp->get("dgs-a-autres-nom-" $i);
  335.                 $prenom $pp->get("dgs-a-autres-prenom-" $i);
  336.                 $email $pp->get("dgs-a-autres-email-" $i);
  337.                 if($nom != "" && $prenom != "" && $email != ""){
  338.                     if($_mode_dev == true)
  339.                         dump("Ajout d'une personne fonction administrative : " $nom " " $prenom);
  340.                     $personne = new PersonnesAssocies();
  341.                     $personne->setCivilite($pp->get("dgs-a-autres-civilite-" $i));
  342.                     $personne->setNom(strtoupper($nom));
  343.                     $personne->setPrenom(str_replace('-'' 'ucwords($prenom)));
  344.                     $personne->setDelegation(null);
  345.                     $personne->setEmail($email);
  346.                     $personne->setType($pp->get("dgs-a-autres-type-" $i));
  347.                     $personne->setDateAjout($date_ajout);
  348.                     $personne->setActif(true);
  349.                     $personne->setCommunesEpci($commune);
  350.                     $this->_em->persist($personne);
  351.                 }
  352.             }
  353.             if($_mode_dev == false)
  354.                 $this->_em->flush();
  355.             /*
  356.              * Upload du visuel
  357.              */
  358.             if(isset($_FILES['maire-photo']) && $_FILES['maire-photo']['name'] != null){
  359.                 $file $_FILES['maire-photo'];
  360.                 $errors= array();
  361.                 $file_name $file['name'];
  362.                 $nom_fichier strtolower($file_name);
  363.                 $file_size $file['size'];
  364.                 $file_tmp $file['tmp_name'];
  365.                 $file_type$file['type'];
  366.                 $file_ext explode('.'$nom_fichier)[1];
  367.                 list($width$height) = getimagesize($file_tmp);
  368.                 $extensions = [
  369.                     "jpeg",
  370.                     "jpg",
  371.                     "png"
  372.                 ];
  373.                 if(in_array($file_ext,$extensions)=== false)
  374.                     $errors[]="extension not allowed, please choose a JPEG or PNG file.";
  375.                 if($file_size 4097152)
  376.                     $errors[]='File size must be excately 3 MB';
  377.                 if($width 500 || $height 500)
  378.                     $errors[]='Image trop petite, elle doit faire au moins 500x500';
  379.                 if(empty($errors)==true){
  380.                     /*
  381.                      * Upload
  382.                      */
  383.                     $nom_fichier "commune-" $commune->getId() . "-" date("Y-m-d-h-m-s") . "_source" "." $file_ext;
  384.                     $nom_fichier_final "commune-" $commune->getId() . "-" date("Y-m-d-h-m-s") . "." $file_ext;
  385.                     move_uploaded_file($file_tmp"images/c/" $nom_fichier);
  386.                     $this->resize_img("images/c/" $nom_fichier"images/c/" $nom_fichier_final50090);
  387.                     /*
  388.                      * Desactivation ancienne photo
  389.                      */
  390.                     foreach ($commune->getDonnes() as $donnee) {
  391.                         if($donnee->getClef() == "maire-photo")
  392.                             $donnee->setActif(false);
  393.                         $this->_em->persist($donnee);
  394.                     }
  395.                     if($_mode_dev == false)
  396.                         $this->_em->flush();
  397.                     /*
  398.                      * Sauvegarde nouvelle photo
  399.                      */
  400.                     $donnee = new Donnes();
  401.                     $donnee->setClef("maire-photo");
  402.                     $donnee->setValeur($nom_fichier_final);
  403.                     $donnee->setDateAjout($date_ajout);
  404.                     $donnee->setActif(true);
  405.                     $donnee->setCommunesEpci($commune);
  406.                     $this->_em->persist($donnee);
  407.                     /*
  408.                      * Tracking upload
  409.                      */
  410.                     $tracking = new Tracking();
  411.                     $tracking->setCommunesEpci($commune);
  412.                     $tracking->setDateAjout($date_ajout);
  413.                     $tracking->setClef("upload");
  414.                     $tracking->setAction("Upload du fichier " $nom_fichier " et redimentionnement en " $nom_fichier_final);
  415.                     $this->_em->persist($tracking);
  416.                     if($_mode_dev == false)
  417.                         $this->_em->flush();
  418.                 }else{
  419.                     $message "<p>Une erreur est survenue durant l'upload de la photo</p><ul>";
  420.                     foreach($errors as $error)
  421.                         $message .= "<li>" $error "</li>";
  422.                     $message .= "</ul>";
  423.                     $this->addFlash('erreur'$message);
  424.                 }
  425.             }
  426.             /*
  427.              * Tacking bouton cliqué
  428.              */
  429.             $bouton_actionner "";
  430.             if($pp->get("travail-termine") != "")
  431.                 $bouton_actionner "J'ai terminé ma fiche (bouton rouge)";
  432.             if($pp->get("sauvegarde-header") != "")
  433.                 $bouton_actionner "Sauvegarder mes modification (bouton bleu haut)";
  434.             if($pp->get("sauvegarde-bas") != "")
  435.                 $bouton_actionner "Sauvegarder mes modification (bouton bleu bas)";
  436.             if($pp->get("travail-termine-apres-modification") != "")
  437.                 $bouton_actionner "Modification fiche après validation (bouton rouge)";
  438.             $tracking = new Tracking();
  439.             $tracking->setCommunesEpci($commune);
  440.             $tracking->setDateAjout($date_ajout);
  441.             $tracking->setClef("bouton sauvegarde");
  442.             $tracking->setAction($bouton_actionner);
  443.             $this->_em->persist($tracking);
  444.             if($_mode_dev == false)
  445.                 $this->_em->flush();
  446.             /*
  447.              * Validation fiche
  448.              */
  449.             if($pp->get("travail-termine") != ""){
  450.                 $tracking = new Tracking();
  451.                 $tracking->setCommunesEpci($commune);
  452.                 $tracking->setDateAjout($date_ajout);
  453.                 $tracking->setClef("validation");
  454.                 $tracking->setAction("Validation de la fiche pour BAT annuaiire 2023");
  455.                 $this->_em->persist($tracking);
  456.                 if($_mode_dev == false)
  457.                     $this->_em->flush();
  458.             }
  459.             /*
  460.              * Message d'action
  461.              */
  462.             $this->addFlash('success''Données sauvegardées');
  463.             //$retour["messageAction"] = "<div class='alert alert-success'>Données sauvegardées</div>";
  464.             if($_mode_dev == false)
  465.                 return $this->redirectToRoute("communes");
  466.         }
  467.         /*
  468.          * Retour de la vue
  469.          */
  470.         return $this->render('publique/communes.html.twig'$retour);
  471.     }
  472.     /**
  473.      * @Route("/epci", name="epci")
  474.      * @param Request $request
  475.      * @param SessionInterface $session
  476.      * @return Response
  477.      */
  478.     public function epci(SessionInterface $sessionRequest $request): Response
  479.     {
  480.         $pp $request->request;
  481.         $epci null;
  482.         $_mode_dev false;
  483.         /*
  484.          * Verrification information EPCI
  485.          */
  486.         if($session->get("commune_epci") == "")
  487.             return $this->redirectToRoute("accueil", ["reson" => "null - " $session->get("commune_epci")]);
  488.         else{
  489.             $epci $this->_repo["CommunesEpci"]->findOneById($session->get("commune_epci"));
  490.             if($epci == null)
  491.                 return $this->redirectToRoute("accueil", ["reson" => $session->get("commune_epci")]);
  492.         }
  493.         /*
  494.          * Classement des données
  495.          */
  496.         $epci->_classement_donnees();
  497.         $epci->_classement_personnes_associes();
  498.         /*
  499.          * Stocjage des informations de la commune
  500.          */
  501.         $retour = [
  502.             "comm_epci" => $epci,
  503.             "messageAction" => ""
  504.         ];
  505.         /*
  506.          * Traitement du formulaire
  507.          */
  508.         if($pp->get("sauvegarde-header") != "" || $pp->get("travail-termine") != "" || $pp->get("sauvegarde-bas") != "" || $pp->get("travail-termine-apres-modification") != "") {
  509.             $date_ajout = new \DateTime();
  510.             if($_mode_dev == false)
  511.                 dump($_POST);
  512.             /*
  513.              * Tracking sauvegarde
  514.              */
  515.             $tracking = new Tracking();
  516.             $tracking->setCommunesEpci($epci);
  517.             $tracking->setDateAjout($date_ajout);
  518.             $tracking->setClef("sauvegarde");
  519.             $tracking->setAction("Sauvegarde de la fiche");
  520.             $this->_em->persist($tracking);
  521.             if($_mode_dev == false)
  522.                 $this->_em->flush();
  523.             /*
  524.              * Désactivation des anciennes données
  525.              */
  526.             foreach ($epci->getDonnes() as $donnee) {
  527.                 if($donnee->getClef() != "president-photo" && $donnee->getClef() != "nom")
  528.                     $donnee->setActif(false);
  529.                 $this->_em->persist($donnee);
  530.             }
  531.             foreach ($epci->getPersonnesAssocies() as $personne) {
  532.                 $personne->setActif(false);
  533.                 $this->_em->persist($personne);
  534.             }
  535.             if($_mode_dev == false)
  536.                 $this->_em->flush();
  537.             /*
  538.              * Traitement des données
  539.              */
  540.             $tableau_indice_bdd = [
  541.                 "nom",
  542.                 //  Tab Maire
  543.                 "president-civilite",
  544.                 "president-nom",
  545.                 "president-prenom",
  546.                 "president-date-naissance-jour",
  547.                 "president-date-naissance-mois",
  548.                 "president-date-naissance-annee",
  549.                 "president-profession",
  550.                 "president-portable",
  551.                 "president-mail",
  552.                 "president-autre-mandats",
  553.                 //  Tab Adjoint(e)s et Conseiller(ère)s délégué(e)s
  554.                 //  Tab Conseiller(ère)s municipaux
  555.                 //  Tab Informations Mairie
  556.                 "adresse-epci",
  557.                 "code-postal-epci",
  558.                 "ville-epci",
  559.                 "telephone-epci",
  560.                 "mail-epci",
  561.                 "site-epci",
  562.                 "competences-epci"
  563.             ];
  564.             foreach ($tableau_indice_bdd as $indice) {
  565.                 $valeur "";
  566.                 switch($indice){
  567.                     case "president-nom" :
  568.                         $valeur strtoupper($pp->get("president-nom"));
  569.                         break;
  570.                     case "president-prenom" :
  571.                         $valeurstr_replace('-'' 'ucwords($pp->get("president-prenom")));
  572.                         break;
  573.                     case "president-portable" :
  574.                         $valeurstr_replace(' '''$pp->get("president-portable"));
  575.                         break;
  576.                     case "telephone-epci" :
  577.                         $valeurstr_replace(' '''$pp->get("telephone-epci"));
  578.                         break;
  579.                     case "site-epci" :
  580.                         $valeurstr_replace('https://'''$pp->get("site-epci"));
  581.                         $valeurstr_replace('http://'''$valeur);
  582.                         $valeurstr_replace('https'''$valeur);
  583.                         $valeurstr_replace('http'''$valeur);
  584.                         $valeurstr_replace('://'''$valeur);
  585.                         $valeurstr_replace('//'''$valeur);
  586.                         $valeur "https://" $valeur;
  587.                         break;
  588.                     case "president-autre-mandats" :
  589.                         for($i 0$i <= $pp->get("president-nombre-mandats"); $i++){
  590.                             $valeur_a_ajouter $pp->get("president-autre-mandats-" $i);
  591.                             if(trim($valeur_a_ajouter) != "") {
  592.                                 if ($valeur != "")
  593.                                     $valeur .= "¤";
  594.                                 $valeur .= $valeur_a_ajouter;
  595.                             }
  596.                         }
  597.                         break;
  598.                     case "competences-epci" :
  599.                         for($i 0$i <= $pp->get("nombre-autre-competence"); $i++){
  600.                             $valeur_a_ajouter $pp->get("competences-epci-" $i);
  601.                             if(trim($valeur_a_ajouter) != "") {
  602.                                 if ($valeur != "")
  603.                                     $valeur .= "¤";
  604.                                 $valeur .= $valeur_a_ajouter;
  605.                             }
  606.                             //dump($valeur_a_ajouter);
  607.                         }
  608.                         break;
  609.                     default :
  610.                         $valeur $pp->get($indice);
  611.                         break;
  612.                 }
  613.                 if($_mode_dev == true)
  614.                     dump($indice " -- " $valeur);
  615.                 $donnee = new Donnes();
  616.                 $donnee->setClef($indice);
  617.                 $donnee->setValeur($valeur);
  618.                 $donnee->setDateAjout($date_ajout);
  619.                 $donnee->setActif(true);
  620.                 $donnee->setCommunesEpci($epci);
  621.                 $this->_em->persist($donnee);
  622.             }
  623.             /*
  624.              * Ajout des personnes Fonction Administrative
  625.              */
  626.             for ($i 0$i <= $pp->get("id-administratif-max"); $i++){
  627.                 $nom $pp->get("dgs-a-autres-nom-" $i);
  628.                 $prenom $pp->get("dgs-a-autres-prenom-" $i);
  629.                 $email $pp->get("dgs-a-autres-email-" $i);
  630.                 if($nom != "" && $prenom != "" && $email != ""){
  631.                     //dump($i . " -- " . $nom . " " . $prenom . " " . $email);
  632.                     $personne = new PersonnesAssocies();
  633.                     $personne->setCivilite($pp->get("dgs-a-autres-civilite-" $i));
  634.                     $personne->setNom(strtoupper($nom));
  635.                     $personne->setPrenom(str_replace('-'' 'ucwords($prenom)));
  636.                     $personne->setDelegation(null);
  637.                     $personne->setEmail($email);
  638.                     $personne->setType($pp->get("dgs-a-autres-type-" $i));
  639.                     $personne->setDateAjout($date_ajout);
  640.                     $personne->setActif(true);
  641.                     $personne->setCommunesEpci($epci);
  642.                     $this->_em->persist($personne);
  643.                 }
  644.             }
  645.             if($_mode_dev == false)
  646.                 $this->_em->flush();
  647.             /*
  648.              * Ajout des personnes attachées
  649.              */
  650.             for ($i 0$i <= $pp->get("nombre-vide-president-delegation-max"); $i++){
  651.                 $nom $pp->get("vide-president-delegation-nom-" $i);
  652.                 $prenom $pp->get("vide-president-delegation-prenom-" $i);
  653.                 $commune $pp->get("vide-president-delegation-commune-" $i);
  654.                 $delegation $pp->get("vide-president-delegation-delegation-" $i);
  655.                 if($nom != "" && $prenom != ""){
  656.                     $personne = new PersonnesAssocies();
  657.                     $personne->setCivilite($pp->get("vide-president-delegation-civilite-" $i));
  658.                     $personne->setNom(strtoupper($nom));
  659.                     $personne->setPrenom(str_replace('-'' 'ucwords($prenom)));
  660.                     $personne->setCommune(strtoupper($commune));
  661.                     $personne->setDelegation($delegation);
  662.                     $personne->setType("vide-president-delegation");
  663.                     $personne->setDateAjout($date_ajout);
  664.                     $personne->setActif(true);
  665.                     $personne->setCommunesEpci($epci);
  666.                     $this->_em->persist($personne);
  667.                 }
  668.             }
  669.             if($_mode_dev == false)
  670.                 $this->_em->flush();
  671.             for ($i 0$i <= $pp->get("autre-membres-elus"); $i++){
  672.                 $nom $pp->get("autre-membres-elus-nom-" $i);
  673.                 $prenom $pp->get("autre-membres-elus-prenom-" $i);
  674.                 $commune $pp->get("autre-membres-elus-commune-" $i);
  675.                 $mandat $pp->get("autre-membres-elus-mandat-" $i);
  676.                 if($nom != "" && $prenom != "" && $commune != "" && $mandat != ""){
  677.                     $personne = new PersonnesAssocies();
  678.                     $personne->setCivilite($pp->get("autre-membres-elus-civilite-" $i));
  679.                     $personne->setNom(strtoupper($nom));
  680.                     $personne->setPrenom(str_replace('-'' 'ucwords($prenom)));
  681.                     $personne->setCommune(strtoupper($commune));
  682.                     $personne->setMandat($mandat);
  683.                     $personne->setType("autre-membres-elus");
  684.                     $personne->setDateAjout($date_ajout);
  685.                     $personne->setActif(true);
  686.                     $personne->setCommunesEpci($epci);
  687.                     $this->_em->persist($personne);
  688.                 }
  689.             }
  690.             if($_mode_dev == false)
  691.                 $this->_em->flush();
  692.             /*
  693.             * Upload du visuel
  694.             */
  695.             if(isset($_FILES['president-photo']) && $_FILES['president-photo']['name'] != null){
  696.                 $file $_FILES['president-photo'];
  697.                 $errors= array();
  698.                 $file_name $file['name'];
  699.                 $nom_fichier strtolower($file_name);
  700.                 $file_size $file['size'];
  701.                 $file_tmp $file['tmp_name'];
  702.                 $file_type$file['type'];
  703.                 $file_ext explode('.'$nom_fichier)[1];
  704.                 list($width$height) = getimagesize($file_tmp);
  705.                 $extensions = [
  706.                     "jpeg",
  707.                     "jpg",
  708.                     "png"
  709.                 ];
  710.                 if(in_array($file_ext,$extensions)=== false)
  711.                     $errors[]="extension not allowed, please choose a JPEG or PNG file.";
  712.                 if($file_size 4097152)
  713.                     $errors[]='File size must be excately 3 MB';
  714.                 if($width 500 || $height 500)
  715.                     $errors[]='Image trop petite, elle doit faire au moins 500x500';
  716.                 if(empty($errors)==true){
  717.                     /*
  718.                      * Upload
  719.                      */
  720.                     $nom_fichier "epci-" $epci->getId() . "-" date("Y-m-d-h-m-s") . "_source" "." $file_ext;
  721.                     $nom_fichier_final "epci-" $epci->getId() . "-" date("Y-m-d-h-m-s") . "." $file_ext;
  722.                     move_uploaded_file($file_tmp"images/e/" $nom_fichier);
  723.                     $this->resize_img("images/e/" $nom_fichier"images/e/" $nom_fichier_final50090);
  724.                     /*
  725.                      * Desactivation ancienne photo
  726.                      */
  727.                     foreach ($epci->getDonnes() as $donnee) {
  728.                         if($donnee->getClef() == "president-photo")
  729.                             $donnee->setActif(false);
  730.                         $this->_em->persist($donnee);
  731.                     }
  732.                     if($_mode_dev == false)
  733.                         $this->_em->flush();
  734.                     /*
  735.                      * Sauvegarde nouvelle photo
  736.                      */
  737.                     $donnee = new Donnes();
  738.                     $donnee->setClef("president-photo");
  739.                     $donnee->setValeur($nom_fichier_final);
  740.                     $donnee->setDateAjout($date_ajout);
  741.                     $donnee->setActif(true);
  742.                     $donnee->setCommunesEpci($epci);
  743.                     $this->_em->persist($donnee);
  744.                     if($_mode_dev == false)
  745.                         $this->_em->flush();
  746.                     /*
  747.                      * Tracking upload
  748.                      */
  749.                     $tracking = new Tracking();
  750.                     $tracking->setCommunesEpci($epci);
  751.                     $tracking->setDateAjout($date_ajout);
  752.                     $tracking->setClef("upload");
  753.                     $tracking->setAction("Upload du fichier " $nom_fichier " et redimentionnement en " $nom_fichier_final);
  754.                     $this->_em->persist($tracking);
  755.                     if($_mode_dev == false)
  756.                         $this->_em->flush();
  757.                 }else{
  758.                     $message "<p>Une erreur est survenue durant l'upload de la photo</p><ul>";
  759.                     foreach($errors as $error)
  760.                         $message .= "<li>" $error "</li>";
  761.                     $message .= "</ul>";
  762.                     $this->addFlash('erreur'$message);
  763.                 }
  764.             }
  765.             /*
  766.              * Tacking bouton cliqué
  767.              */
  768.             $bouton_actionner "";
  769.             if($pp->get("travail-termine") != "")
  770.                 $bouton_actionner "J'ai terminé ma fiche (bouton rouge)";
  771.             if($pp->get("sauvegarde-header") != "")
  772.                 $bouton_actionner "Sauvegarder mes modification (bouton bleu haut)";
  773.             if($pp->get("sauvegarde-bas") != "")
  774.                 $bouton_actionner "Sauvegarder mes modification (bouton bleu bas)";
  775.             if($pp->get("travail-termine-apres-modification") != "")
  776.                 $bouton_actionner "Modification fiche après validation (bouton rouge)";
  777.             $tracking = new Tracking();
  778.             $tracking->setCommunesEpci($epci);
  779.             $tracking->setDateAjout($date_ajout);
  780.             $tracking->setClef("bouton sauvegarde");
  781.             $tracking->setAction($bouton_actionner);
  782.             $this->_em->persist($tracking);
  783.             if($_mode_dev == false)
  784.                 $this->_em->flush();
  785.             /*
  786.              * Validation fiche
  787.              */
  788.             if($pp->get("travail-termine") != ""){
  789.                 $tracking = new Tracking();
  790.                 $tracking->setCommunesEpci($epci);
  791.                 $tracking->setDateAjout($date_ajout);
  792.                 $tracking->setClef("validation");
  793.                 $tracking->setAction("Validation de la fiche pour BAT annuaiire 2023");
  794.                 $this->_em->persist($tracking);
  795.                 if($_mode_dev == false)
  796.                     $this->_em->flush();
  797.             }
  798.             /*
  799.                  * Message d'action
  800.                  */
  801.             $this->addFlash('success''Données sauvegardées');
  802.             //$retour["messageAction"] = "<div class='alert alert-success'>Données sauvegardées</div>";
  803.             if($_mode_dev == false)
  804.                 return $this->redirectToRoute("epci");
  805.         }
  806.         /*
  807.          * Retour de la vue
  808.          */
  809.         return $this->render('publique/epci.html.twig'$retour);
  810.     }
  811.     /**
  812.      * Redimentionnement de l'image
  813.      * @param $image_path
  814.      * @param $image_dest
  815.      * @param int $max_size
  816.      * @param int $qualite
  817.      * @param string $type
  818.      */
  819.     private function resize_img($image_path,$image_dest,$max_size 300,$qualite 100,$type 'auto'){
  820.         // Vérification que le fichier existe
  821.         if(!file_exists($image_path)):
  822.             return 'wrong_path';
  823.         endif;
  824.         if($image_dest == ""):
  825.             $image_dest $image_path;
  826.         endif;
  827.         // Extensions et mimes autorisés
  828.         $extensions = array('jpg','jpeg','png','gif');
  829.         $mimes = array('image/jpeg','image/gif','image/png');
  830.         // Récupération de l'extension de l'image
  831.         $tab_ext explode('.'$image_path);
  832.         $extension  strtolower($tab_ext[count($tab_ext)-1]);
  833.         // Récupération des informations de l'image
  834.         $image_data getimagesize($image_path);
  835.         // Si c'est une image envoyé alors son extension est .tmp et on doit d'abord la copier avant de la redimentionner
  836.         if($extension == 'tmp' && in_array($image_data['mime'],$mimes)):
  837.             copy($image_path,$image_dest);
  838.             $image_path $image_dest;
  839.             $tab_ext explode('.'$image_path);
  840.             $extension  strtolower($tab_ext[count($tab_ext)-1]);
  841.         endif;
  842.         // Test si l'extension est autorisée
  843.         if (in_array($extension,$extensions) && in_array($image_data['mime'],$mimes)):
  844.             // On stocke les dimensions dans des variables
  845.             $img_width $image_data[0];
  846.             $img_height $image_data[1];
  847.             // On vérifie quel coté est le plus grand
  848.             if($img_width >= $img_height && $type != "height"):
  849.                 // Calcul des nouvelles dimensions à partir de la largeur
  850.                 if($max_size >= $img_width):
  851.                     return 'no_need_to_resize';
  852.                 endif;
  853.                 $new_width $max_size;
  854.                 $reduction = ( ($new_width 100) / $img_width );
  855.                 $new_height round(( ($img_height $reduction )/100 ),0);
  856.             else:
  857.                 // Calcul des nouvelles dimensions à partir de la hauteur
  858.                 if($max_size >= $img_height):
  859.                     return 'no_need_to_resize';
  860.                 endif;
  861.                 $new_height $max_size;
  862.                 $reduction = ( ($new_height 100) / $img_height );
  863.                 $new_width round(( ($img_width $reduction )/100 ),0);
  864.             endif;
  865.             // Création de la ressource pour la nouvelle image
  866.             $dest imagecreatetruecolor($new_width$new_height);
  867.             // En fonction de l'extension on prépare l'iamge
  868.             switch($extension){
  869.                 case 'jpg':
  870.                 case 'jpeg':
  871.                     $src imagecreatefromjpeg($image_path); // Pour les jpg et jpeg
  872.                     break;
  873.                 case 'png':
  874.                     $src imagecreatefrompng($image_path); // Pour les png
  875.                     break;
  876.                 case 'gif':
  877.                     $src imagecreatefromgif($image_path); // Pour les gif
  878.                     break;
  879.             }
  880.             // Création de l'image redimentionnée
  881.             if(imagecopyresampled($dest$src0000$new_width$new_height$img_width$img_height)):
  882.                 // On remplace l'image en fonction de l'extension
  883.                 switch($extension){
  884.                     case 'jpg':
  885.                     case 'jpeg':
  886.                         imagejpeg($dest $image_dest$qualite); // Pour les jpg et jpeg
  887.                         break;
  888.                     case 'png':
  889.                         imagepng($dest $image_dest$qualite); // Pour les png
  890.                         break;
  891.                     case 'gif':
  892.                         imagegif($dest $image_dest$qualite); // Pour les gif
  893.                         break;
  894.                 }
  895.                 return 'success';
  896.             else:
  897.                 return 'resize_error';
  898.             endif;
  899.         else:
  900.             return 'no_img';
  901.         endif;
  902.     }
  903. }