<?php
namespace App\Controller;
use App\Entity\CommunesEpci;
use App\Entity\Donnes;
use App\Entity\PersonnesAssocies;
use App\Entity\Tracking;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
class PubliqueController extends AbstractController
{
/**
* @var PropesctRepository
*/
private $_repo = [];
/**
* AdministrationCategoriesSousCategorieController constructor.
* @param EntityManagerInterface $_em
*/
public function __construct(EntityManagerInterface $_em){
// Récupération de l'entity manager
$this->_em = $_em;
// Récupération des repository utiles
$this->_repo = [
"CommunesEpci" => $this->_em->getRepository(CommunesEpci::class),
"Tracking" => $this->_em->getRepository(Tracking::class),
];
}
/**
* @Route("/", name="accueil")
* @param SessionInterface $session
* @param Request $request
* @return Response
*/
public function index(SessionInterface $session, Request $request): Response
{
$pp = $request->request;
$retour = [
"messageErreurConnexion" => ""
];
/*
* Suppression de la session
*/
$session->set("commune_epci", null);
/*
* Stockage qui viens depuis newsletter
*/
if(isset($_GET["zidnuzb"]) == true && $_GET["zidnuzb"] != ""){
$id = str_replace("suyabbc", "", trim($_GET["zidnuzb"]));
$id = str_replace("ujznnincuays", "", $id);
$commune_epci = $this->_repo["CommunesEpci"]->findOneBy(["id" => $id]);
$tracking = new Tracking();
$tracking->setCommunesEpci($commune_epci);
$tracking->setDateAjout(new \DateTime());
$tracking->setClef("Newsletter N°1");
$tracking->setAction("Clic sur le lien de la newsletter N°1");
$this->_em->persist($tracking);
$this->_em->flush();
}
/*
* Connexion
*/
if($pp->get("identifiant") != "" && $pp->get("mot-de-passe") != "") {
$commune_epci = $this->_repo["CommunesEpci"]->findOneBy([
"login" => $pp->get("identifiant"),
"mot_de_passe" => $pp->get("mot-de-passe"),
"actif" => true
]);
if($commune_epci == null)
$retour["messageErreurConnexion"] = "<div class='alert alert-danger'>Identifiant ou mot de passe incorrect</div>";
else {
$retour["messageErreurConnexion"] = "<div class='alert alert-success'>Connexion valide</div>";
$session->set("commune_epci", $commune_epci->getId());
$tracking = new Tracking();
$tracking->setCommunesEpci($commune_epci);
$tracking->setDateAjout(new \DateTime());
$tracking->setClef("connexion");
$tracking->setAction("Connexion à la fiche");
$this->_em->persist($tracking);
$this->_em->flush();
switch($commune_epci->getType()) {
case "commune":
return $this->redirectToRoute("communes");
break;
case "epci":
return $this->redirectToRoute("epci");
break;
}
}
}
/*
* Retour de la vue
*/
return $this->render('publique/connexion.html.twig', $retour);
}
/**
* @Route("/communes", name="communes")
* @param Request $request
* @param SessionInterface $session
* @return Response
*/
public function communes(SessionInterface $session, Request $request): Response
{
$pp = $request->request;
$commune = null;
$_mode_dev = false;
/*
* Verrification information commune
*/
if($session->get("commune_epci") == "")
return $this->redirectToRoute("accueil", ["reson" => "null - " . $session->get("commune_epci")]);
else{
$commune = $this->_repo["CommunesEpci"]->findOneById($session->get("commune_epci"));
if($commune == null)
return $this->redirectToRoute("accueil", ["reson" => $session->get("commune_epci")]);
}
/*
* Classement des données
*/
$commune->_classement_donnees();
$commune->_classement_personnes_associes();
/*
* Stocjage des informations de la commune
*/
$retour = [
"comm_epci" => $commune,
"messageAction" => ""
];
/*
* Traitement du formulaire
*/
if($pp->get("sauvegarde-header") != "" || $pp->get("travail-termine") != "" || $pp->get("sauvegarde-bas") != "" || $pp->get("travail-termine-apres-modification") != ""){
$date_ajout = new \DateTime();
/*
* Tracking sauvegarde
*/
$tracking = new Tracking();
$tracking->setCommunesEpci($commune);
$tracking->setDateAjout($date_ajout);
$tracking->setClef("sauvegarde");
$tracking->setAction("Sauvegarde de la fiche");
$this->_em->persist($tracking);
$this->_em->flush();
/*
* Désactivation des anciennes données
*/
foreach ($commune->getDonnes() as $donnee) {
if($donnee->getClef() != "maire-photo" && $donnee->getClef() != "nom")
$donnee->setActif(false);
$this->_em->persist($donnee);
}
foreach ($commune->getPersonnesAssocies() as $personne) {
$personne->setActif(false);
$this->_em->persist($personne);
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Traitement des données
*/
$tableau_indice_bdd = [
"nom",
"siret",
// Tab Maire
"maire-civilite",
"maire-nom",
"maire-prenom",
"maire-date-naissance-jour",
"maire-date-naissance-mois",
"maire-date-naissance-annee",
"maire-profession",
"maire-portable",
"maire-mail",
"maire-elu-maire-depuis-jour",
"maire-elu-maire-depuis-mois",
"maire-elu-maire-depuis-annee",
"maire-autre-mandats",
// Tab Adjoint(e)s et Conseiller(ère)s délégué(e)s
// Tab Conseiller(ère)s municipaux
// Tab Informations Mairie
"adresse-mairie",
"code-postal-mairie",
"telephone-mairie",
"mail-mairie",
"site-mairie",
"am-ouverture-1",
"am-fermeture-1",
"pm-ouverture-1",
"pm-fermeture-1",
"am-ouverture-2",
"am-fermeture-2",
"pm-ouverture-2",
"pm-fermeture-2",
"am-ouverture-3",
"am-fermeture-3",
"pm-ouverture-3",
"pm-fermeture-3",
"am-ouverture-4",
"am-fermeture-4",
"pm-ouverture-4",
"pm-fermeture-4",
"am-ouverture-5",
"am-fermeture-5",
"pm-ouverture-5",
"pm-fermeture-5",
"am-ouverture-6",
"am-fermeture-6",
"pm-ouverture-6",
"pm-fermeture-6",
"infos-plus-horaires-mairie"
];
foreach ($tableau_indice_bdd as $indice) {
$valeur = "";
switch($indice){
case "maire-nom" :
$valeur = strtoupper($pp->get("maire-nom"));
break;
case "maire-prenom" :
$valeur= str_replace('-', ' ', ucwords($pp->get("maire-prenom")));
break;
case "maire-portable" :
$valeur= str_replace(' ', '', $pp->get("maire-portable"));
break;
case "telephone-mairie" :
$valeur= str_replace(' ', '', $pp->get("telephone-mairie"));
break;
case "site-mairie" :
$valeur= str_replace('https://', '', $pp->get("site-mairie"));
$valeur= str_replace('http://', '', $valeur);
$valeur= str_replace('https', '', $valeur);
$valeur= str_replace('http', '', $valeur);
$valeur= str_replace('://', '', $valeur);
$valeur= str_replace('//', '', $valeur);
$valeur = "https://" . $valeur;
break;
case "maire-autre-mandats" :
for($i = 0; $i <= $pp->get("maire-nombre-mandats"); $i++){
$valeur_a_ajouter = $pp->get("maire-autre-mandats-" . $i);
if(trim($valeur_a_ajouter) != "") {
if ($valeur != "")
$valeur .= "¤";
$valeur .= $valeur_a_ajouter;
}
}
break;
default :
$valeur = $pp->get($indice);
break;
}
if($_mode_dev == true)
dump("Indice : " . $indice . " - Valeur : " . $valeur);
$donnee = new Donnes();
$donnee->setClef($indice);
$donnee->setValeur($valeur);
$donnee->setDateAjout($date_ajout);
$donnee->setActif(true);
$donnee->setCommunesEpci($commune);
if($_mode_dev == false)
$this->_em->persist($donnee);
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Ajout des personnes attachées
*/
for ($i = 0; $i <= $pp->get("nombre-conseiller-municipaux"); $i++){
$nom = $pp->get("conseillers-municipaux-nom-" . $i);
$prenom = $pp->get("conseillers-municipaux-prenom-" . $i);
if($nom != "" && $prenom != ""){
$personne = new PersonnesAssocies();
$personne->setCivilite($pp->get("conseillers-municipaux-civilite-" . $i));
$personne->setNom(strtoupper($nom));
$personne->setPrenom(str_replace('-', ' ', ucwords($prenom)));
$personne->setDelegation(null);
$personne->setEmail(null);
$personne->setType("conseillers-municipaux");
$personne->setDateAjout($date_ajout);
$personne->setActif(true);
$personne->setCommunesEpci($commune);
$this->_em->persist($personne);
}
}
if($_mode_dev == false)
$this->_em->flush();
for ($i = 0; $i <= $pp->get("nombre-adjoints-max"); $i++){
$nom = $pp->get("adjoint-nom-" . $i);
$prenom = $pp->get("adjoint-prenom-" . $i);
if($nom != "" && $prenom != ""){
if($_mode_dev == true)
dump("Ajout d'un adjoint : " . $nom . " " . $prenom);
$personne = new PersonnesAssocies();
$personne->setCivilite($pp->get("adjoint-civilite-" . $i));
$personne->setNom(strtoupper($nom));
$personne->setPrenom(str_replace('-', ' ', ucwords($prenom)));
$personne->setDelegation($pp->get("adjoint-delegation-" . $i));
$personne->setEmail(null);
$personne->setType("adjoint");
$personne->setDateAjout($date_ajout);
$personne->setActif(true);
$personne->setCommunesEpci($commune);
$this->_em->persist($personne);
}
}
if($_mode_dev == false)
$this->_em->flush();
for ($i = 0; $i <= $pp->get("nombre-conseillers-delegues-max"); $i++){
$nom = $pp->get("conseiller-delegue-nom-" . $i);
$prenom = $pp->get("conseiller-delegue-prenom-" . $i);
if($nom != "" && $prenom != ""){
if($_mode_dev == true)
dump("Ajout d'un conseiller délégué : " . $nom . " " . $prenom);
$personne = new PersonnesAssocies();
$personne->setCivilite($pp->get("conseiller-delegue-civilite-" . $i));
$personne->setNom(strtoupper($nom));
$personne->setPrenom(str_replace('-', ' ', ucwords($prenom)));
$personne->setDelegation($pp->get("conseiller-delegue-delegation-" . $i));
$personne->setEmail(null);
$personne->setType("conseiller-delegue");
$personne->setDateAjout($date_ajout);
$personne->setActif(true);
$personne->setCommunesEpci($commune);
$this->_em->persist($personne);
}
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Ajout des personnes Fonction Administrative
*/
for ($i = 0; $i <= $pp->get("id-administratif-max"); $i++){
$nom = $pp->get("dgs-a-autres-nom-" . $i);
$prenom = $pp->get("dgs-a-autres-prenom-" . $i);
$email = $pp->get("dgs-a-autres-email-" . $i);
if($nom != "" && $prenom != "" && $email != ""){
if($_mode_dev == true)
dump("Ajout d'une personne fonction administrative : " . $nom . " " . $prenom);
$personne = new PersonnesAssocies();
$personne->setCivilite($pp->get("dgs-a-autres-civilite-" . $i));
$personne->setNom(strtoupper($nom));
$personne->setPrenom(str_replace('-', ' ', ucwords($prenom)));
$personne->setDelegation(null);
$personne->setEmail($email);
$personne->setType($pp->get("dgs-a-autres-type-" . $i));
$personne->setDateAjout($date_ajout);
$personne->setActif(true);
$personne->setCommunesEpci($commune);
$this->_em->persist($personne);
}
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Upload du visuel
*/
if(isset($_FILES['maire-photo']) && $_FILES['maire-photo']['name'] != null){
$file = $_FILES['maire-photo'];
$errors= array();
$file_name = $file['name'];
$nom_fichier = strtolower($file_name);
$file_size = $file['size'];
$file_tmp = $file['tmp_name'];
$file_type= $file['type'];
$file_ext = explode('.', $nom_fichier)[1];
list($width, $height) = getimagesize($file_tmp);
$extensions = [
"jpeg",
"jpg",
"png"
];
if(in_array($file_ext,$extensions)=== false)
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
if($file_size > 4097152)
$errors[]='File size must be excately 3 MB';
if($width < 500 || $height < 500)
$errors[]='Image trop petite, elle doit faire au moins 500x500';
if(empty($errors)==true){
/*
* Upload
*/
$nom_fichier = "commune-" . $commune->getId() . "-" . date("Y-m-d-h-m-s") . "_source" . "." . $file_ext;
$nom_fichier_final = "commune-" . $commune->getId() . "-" . date("Y-m-d-h-m-s") . "." . $file_ext;
move_uploaded_file($file_tmp, "images/c/" . $nom_fichier);
$this->resize_img("images/c/" . $nom_fichier, "images/c/" . $nom_fichier_final, 500, 90);
/*
* Desactivation ancienne photo
*/
foreach ($commune->getDonnes() as $donnee) {
if($donnee->getClef() == "maire-photo")
$donnee->setActif(false);
$this->_em->persist($donnee);
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Sauvegarde nouvelle photo
*/
$donnee = new Donnes();
$donnee->setClef("maire-photo");
$donnee->setValeur($nom_fichier_final);
$donnee->setDateAjout($date_ajout);
$donnee->setActif(true);
$donnee->setCommunesEpci($commune);
$this->_em->persist($donnee);
/*
* Tracking upload
*/
$tracking = new Tracking();
$tracking->setCommunesEpci($commune);
$tracking->setDateAjout($date_ajout);
$tracking->setClef("upload");
$tracking->setAction("Upload du fichier " . $nom_fichier . " et redimentionnement en " . $nom_fichier_final);
$this->_em->persist($tracking);
if($_mode_dev == false)
$this->_em->flush();
}else{
$message = "<p>Une erreur est survenue durant l'upload de la photo</p><ul>";
foreach($errors as $error)
$message .= "<li>" . $error . "</li>";
$message .= "</ul>";
$this->addFlash('erreur', $message);
}
}
/*
* Tacking bouton cliqué
*/
$bouton_actionner = "";
if($pp->get("travail-termine") != "")
$bouton_actionner = "J'ai terminé ma fiche (bouton rouge)";
if($pp->get("sauvegarde-header") != "")
$bouton_actionner = "Sauvegarder mes modification (bouton bleu haut)";
if($pp->get("sauvegarde-bas") != "")
$bouton_actionner = "Sauvegarder mes modification (bouton bleu bas)";
if($pp->get("travail-termine-apres-modification") != "")
$bouton_actionner = "Modification fiche après validation (bouton rouge)";
$tracking = new Tracking();
$tracking->setCommunesEpci($commune);
$tracking->setDateAjout($date_ajout);
$tracking->setClef("bouton sauvegarde");
$tracking->setAction($bouton_actionner);
$this->_em->persist($tracking);
if($_mode_dev == false)
$this->_em->flush();
/*
* Validation fiche
*/
if($pp->get("travail-termine") != ""){
$tracking = new Tracking();
$tracking->setCommunesEpci($commune);
$tracking->setDateAjout($date_ajout);
$tracking->setClef("validation");
$tracking->setAction("Validation de la fiche pour BAT annuaiire 2023");
$this->_em->persist($tracking);
if($_mode_dev == false)
$this->_em->flush();
}
/*
* Message d'action
*/
$this->addFlash('success', 'Données sauvegardées');
//$retour["messageAction"] = "<div class='alert alert-success'>Données sauvegardées</div>";
if($_mode_dev == false)
return $this->redirectToRoute("communes");
}
/*
* Retour de la vue
*/
return $this->render('publique/communes.html.twig', $retour);
}
/**
* @Route("/epci", name="epci")
* @param Request $request
* @param SessionInterface $session
* @return Response
*/
public function epci(SessionInterface $session, Request $request): Response
{
$pp = $request->request;
$epci = null;
$_mode_dev = false;
/*
* Verrification information EPCI
*/
if($session->get("commune_epci") == "")
return $this->redirectToRoute("accueil", ["reson" => "null - " . $session->get("commune_epci")]);
else{
$epci = $this->_repo["CommunesEpci"]->findOneById($session->get("commune_epci"));
if($epci == null)
return $this->redirectToRoute("accueil", ["reson" => $session->get("commune_epci")]);
}
/*
* Classement des données
*/
$epci->_classement_donnees();
$epci->_classement_personnes_associes();
/*
* Stocjage des informations de la commune
*/
$retour = [
"comm_epci" => $epci,
"messageAction" => ""
];
/*
* Traitement du formulaire
*/
if($pp->get("sauvegarde-header") != "" || $pp->get("travail-termine") != "" || $pp->get("sauvegarde-bas") != "" || $pp->get("travail-termine-apres-modification") != "") {
$date_ajout = new \DateTime();
if($_mode_dev == false)
dump($_POST);
/*
* Tracking sauvegarde
*/
$tracking = new Tracking();
$tracking->setCommunesEpci($epci);
$tracking->setDateAjout($date_ajout);
$tracking->setClef("sauvegarde");
$tracking->setAction("Sauvegarde de la fiche");
$this->_em->persist($tracking);
if($_mode_dev == false)
$this->_em->flush();
/*
* Désactivation des anciennes données
*/
foreach ($epci->getDonnes() as $donnee) {
if($donnee->getClef() != "president-photo" && $donnee->getClef() != "nom")
$donnee->setActif(false);
$this->_em->persist($donnee);
}
foreach ($epci->getPersonnesAssocies() as $personne) {
$personne->setActif(false);
$this->_em->persist($personne);
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Traitement des données
*/
$tableau_indice_bdd = [
"nom",
// Tab Maire
"president-civilite",
"president-nom",
"president-prenom",
"president-date-naissance-jour",
"president-date-naissance-mois",
"president-date-naissance-annee",
"president-profession",
"president-portable",
"president-mail",
"president-autre-mandats",
// Tab Adjoint(e)s et Conseiller(ère)s délégué(e)s
// Tab Conseiller(ère)s municipaux
// Tab Informations Mairie
"adresse-epci",
"code-postal-epci",
"ville-epci",
"telephone-epci",
"mail-epci",
"site-epci",
"competences-epci"
];
foreach ($tableau_indice_bdd as $indice) {
$valeur = "";
switch($indice){
case "president-nom" :
$valeur = strtoupper($pp->get("president-nom"));
break;
case "president-prenom" :
$valeur= str_replace('-', ' ', ucwords($pp->get("president-prenom")));
break;
case "president-portable" :
$valeur= str_replace(' ', '', $pp->get("president-portable"));
break;
case "telephone-epci" :
$valeur= str_replace(' ', '', $pp->get("telephone-epci"));
break;
case "site-epci" :
$valeur= str_replace('https://', '', $pp->get("site-epci"));
$valeur= str_replace('http://', '', $valeur);
$valeur= str_replace('https', '', $valeur);
$valeur= str_replace('http', '', $valeur);
$valeur= str_replace('://', '', $valeur);
$valeur= str_replace('//', '', $valeur);
$valeur = "https://" . $valeur;
break;
case "president-autre-mandats" :
for($i = 0; $i <= $pp->get("president-nombre-mandats"); $i++){
$valeur_a_ajouter = $pp->get("president-autre-mandats-" . $i);
if(trim($valeur_a_ajouter) != "") {
if ($valeur != "")
$valeur .= "¤";
$valeur .= $valeur_a_ajouter;
}
}
break;
case "competences-epci" :
for($i = 0; $i <= $pp->get("nombre-autre-competence"); $i++){
$valeur_a_ajouter = $pp->get("competences-epci-" . $i);
if(trim($valeur_a_ajouter) != "") {
if ($valeur != "")
$valeur .= "¤";
$valeur .= $valeur_a_ajouter;
}
//dump($valeur_a_ajouter);
}
break;
default :
$valeur = $pp->get($indice);
break;
}
if($_mode_dev == true)
dump($indice . " -- " . $valeur);
$donnee = new Donnes();
$donnee->setClef($indice);
$donnee->setValeur($valeur);
$donnee->setDateAjout($date_ajout);
$donnee->setActif(true);
$donnee->setCommunesEpci($epci);
$this->_em->persist($donnee);
}
/*
* Ajout des personnes Fonction Administrative
*/
for ($i = 0; $i <= $pp->get("id-administratif-max"); $i++){
$nom = $pp->get("dgs-a-autres-nom-" . $i);
$prenom = $pp->get("dgs-a-autres-prenom-" . $i);
$email = $pp->get("dgs-a-autres-email-" . $i);
if($nom != "" && $prenom != "" && $email != ""){
//dump($i . " -- " . $nom . " " . $prenom . " " . $email);
$personne = new PersonnesAssocies();
$personne->setCivilite($pp->get("dgs-a-autres-civilite-" . $i));
$personne->setNom(strtoupper($nom));
$personne->setPrenom(str_replace('-', ' ', ucwords($prenom)));
$personne->setDelegation(null);
$personne->setEmail($email);
$personne->setType($pp->get("dgs-a-autres-type-" . $i));
$personne->setDateAjout($date_ajout);
$personne->setActif(true);
$personne->setCommunesEpci($epci);
$this->_em->persist($personne);
}
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Ajout des personnes attachées
*/
for ($i = 0; $i <= $pp->get("nombre-vide-president-delegation-max"); $i++){
$nom = $pp->get("vide-president-delegation-nom-" . $i);
$prenom = $pp->get("vide-president-delegation-prenom-" . $i);
$commune = $pp->get("vide-president-delegation-commune-" . $i);
$delegation = $pp->get("vide-president-delegation-delegation-" . $i);
if($nom != "" && $prenom != ""){
$personne = new PersonnesAssocies();
$personne->setCivilite($pp->get("vide-president-delegation-civilite-" . $i));
$personne->setNom(strtoupper($nom));
$personne->setPrenom(str_replace('-', ' ', ucwords($prenom)));
$personne->setCommune(strtoupper($commune));
$personne->setDelegation($delegation);
$personne->setType("vide-president-delegation");
$personne->setDateAjout($date_ajout);
$personne->setActif(true);
$personne->setCommunesEpci($epci);
$this->_em->persist($personne);
}
}
if($_mode_dev == false)
$this->_em->flush();
for ($i = 0; $i <= $pp->get("autre-membres-elus"); $i++){
$nom = $pp->get("autre-membres-elus-nom-" . $i);
$prenom = $pp->get("autre-membres-elus-prenom-" . $i);
$commune = $pp->get("autre-membres-elus-commune-" . $i);
$mandat = $pp->get("autre-membres-elus-mandat-" . $i);
if($nom != "" && $prenom != "" && $commune != "" && $mandat != ""){
$personne = new PersonnesAssocies();
$personne->setCivilite($pp->get("autre-membres-elus-civilite-" . $i));
$personne->setNom(strtoupper($nom));
$personne->setPrenom(str_replace('-', ' ', ucwords($prenom)));
$personne->setCommune(strtoupper($commune));
$personne->setMandat($mandat);
$personne->setType("autre-membres-elus");
$personne->setDateAjout($date_ajout);
$personne->setActif(true);
$personne->setCommunesEpci($epci);
$this->_em->persist($personne);
}
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Upload du visuel
*/
if(isset($_FILES['president-photo']) && $_FILES['president-photo']['name'] != null){
$file = $_FILES['president-photo'];
$errors= array();
$file_name = $file['name'];
$nom_fichier = strtolower($file_name);
$file_size = $file['size'];
$file_tmp = $file['tmp_name'];
$file_type= $file['type'];
$file_ext = explode('.', $nom_fichier)[1];
list($width, $height) = getimagesize($file_tmp);
$extensions = [
"jpeg",
"jpg",
"png"
];
if(in_array($file_ext,$extensions)=== false)
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
if($file_size > 4097152)
$errors[]='File size must be excately 3 MB';
if($width < 500 || $height < 500)
$errors[]='Image trop petite, elle doit faire au moins 500x500';
if(empty($errors)==true){
/*
* Upload
*/
$nom_fichier = "epci-" . $epci->getId() . "-" . date("Y-m-d-h-m-s") . "_source" . "." . $file_ext;
$nom_fichier_final = "epci-" . $epci->getId() . "-" . date("Y-m-d-h-m-s") . "." . $file_ext;
move_uploaded_file($file_tmp, "images/e/" . $nom_fichier);
$this->resize_img("images/e/" . $nom_fichier, "images/e/" . $nom_fichier_final, 500, 90);
/*
* Desactivation ancienne photo
*/
foreach ($epci->getDonnes() as $donnee) {
if($donnee->getClef() == "president-photo")
$donnee->setActif(false);
$this->_em->persist($donnee);
}
if($_mode_dev == false)
$this->_em->flush();
/*
* Sauvegarde nouvelle photo
*/
$donnee = new Donnes();
$donnee->setClef("president-photo");
$donnee->setValeur($nom_fichier_final);
$donnee->setDateAjout($date_ajout);
$donnee->setActif(true);
$donnee->setCommunesEpci($epci);
$this->_em->persist($donnee);
if($_mode_dev == false)
$this->_em->flush();
/*
* Tracking upload
*/
$tracking = new Tracking();
$tracking->setCommunesEpci($epci);
$tracking->setDateAjout($date_ajout);
$tracking->setClef("upload");
$tracking->setAction("Upload du fichier " . $nom_fichier . " et redimentionnement en " . $nom_fichier_final);
$this->_em->persist($tracking);
if($_mode_dev == false)
$this->_em->flush();
}else{
$message = "<p>Une erreur est survenue durant l'upload de la photo</p><ul>";
foreach($errors as $error)
$message .= "<li>" . $error . "</li>";
$message .= "</ul>";
$this->addFlash('erreur', $message);
}
}
/*
* Tacking bouton cliqué
*/
$bouton_actionner = "";
if($pp->get("travail-termine") != "")
$bouton_actionner = "J'ai terminé ma fiche (bouton rouge)";
if($pp->get("sauvegarde-header") != "")
$bouton_actionner = "Sauvegarder mes modification (bouton bleu haut)";
if($pp->get("sauvegarde-bas") != "")
$bouton_actionner = "Sauvegarder mes modification (bouton bleu bas)";
if($pp->get("travail-termine-apres-modification") != "")
$bouton_actionner = "Modification fiche après validation (bouton rouge)";
$tracking = new Tracking();
$tracking->setCommunesEpci($epci);
$tracking->setDateAjout($date_ajout);
$tracking->setClef("bouton sauvegarde");
$tracking->setAction($bouton_actionner);
$this->_em->persist($tracking);
if($_mode_dev == false)
$this->_em->flush();
/*
* Validation fiche
*/
if($pp->get("travail-termine") != ""){
$tracking = new Tracking();
$tracking->setCommunesEpci($epci);
$tracking->setDateAjout($date_ajout);
$tracking->setClef("validation");
$tracking->setAction("Validation de la fiche pour BAT annuaiire 2023");
$this->_em->persist($tracking);
if($_mode_dev == false)
$this->_em->flush();
}
/*
* Message d'action
*/
$this->addFlash('success', 'Données sauvegardées');
//$retour["messageAction"] = "<div class='alert alert-success'>Données sauvegardées</div>";
if($_mode_dev == false)
return $this->redirectToRoute("epci");
}
/*
* Retour de la vue
*/
return $this->render('publique/epci.html.twig', $retour);
}
/**
* Redimentionnement de l'image
* @param $image_path
* @param $image_dest
* @param int $max_size
* @param int $qualite
* @param string $type
*/
private function resize_img($image_path,$image_dest,$max_size = 300,$qualite = 100,$type = 'auto'){
// Vérification que le fichier existe
if(!file_exists($image_path)):
return 'wrong_path';
endif;
if($image_dest == ""):
$image_dest = $image_path;
endif;
// Extensions et mimes autorisés
$extensions = array('jpg','jpeg','png','gif');
$mimes = array('image/jpeg','image/gif','image/png');
// Récupération de l'extension de l'image
$tab_ext = explode('.', $image_path);
$extension = strtolower($tab_ext[count($tab_ext)-1]);
// Récupération des informations de l'image
$image_data = getimagesize($image_path);
// Si c'est une image envoyé alors son extension est .tmp et on doit d'abord la copier avant de la redimentionner
if($extension == 'tmp' && in_array($image_data['mime'],$mimes)):
copy($image_path,$image_dest);
$image_path = $image_dest;
$tab_ext = explode('.', $image_path);
$extension = strtolower($tab_ext[count($tab_ext)-1]);
endif;
// Test si l'extension est autorisée
if (in_array($extension,$extensions) && in_array($image_data['mime'],$mimes)):
// On stocke les dimensions dans des variables
$img_width = $image_data[0];
$img_height = $image_data[1];
// On vérifie quel coté est le plus grand
if($img_width >= $img_height && $type != "height"):
// Calcul des nouvelles dimensions à partir de la largeur
if($max_size >= $img_width):
return 'no_need_to_resize';
endif;
$new_width = $max_size;
$reduction = ( ($new_width * 100) / $img_width );
$new_height = round(( ($img_height * $reduction )/100 ),0);
else:
// Calcul des nouvelles dimensions à partir de la hauteur
if($max_size >= $img_height):
return 'no_need_to_resize';
endif;
$new_height = $max_size;
$reduction = ( ($new_height * 100) / $img_height );
$new_width = round(( ($img_width * $reduction )/100 ),0);
endif;
// Création de la ressource pour la nouvelle image
$dest = imagecreatetruecolor($new_width, $new_height);
// En fonction de l'extension on prépare l'iamge
switch($extension){
case 'jpg':
case 'jpeg':
$src = imagecreatefromjpeg($image_path); // Pour les jpg et jpeg
break;
case 'png':
$src = imagecreatefrompng($image_path); // Pour les png
break;
case 'gif':
$src = imagecreatefromgif($image_path); // Pour les gif
break;
}
// Création de l'image redimentionnée
if(imagecopyresampled($dest, $src, 0, 0, 0, 0, $new_width, $new_height, $img_width, $img_height)):
// On remplace l'image en fonction de l'extension
switch($extension){
case 'jpg':
case 'jpeg':
imagejpeg($dest , $image_dest, $qualite); // Pour les jpg et jpeg
break;
case 'png':
imagepng($dest , $image_dest, $qualite); // Pour les png
break;
case 'gif':
imagegif($dest , $image_dest, $qualite); // Pour les gif
break;
}
return 'success';
else:
return 'resize_error';
endif;
else:
return 'no_img';
endif;
}
}