public function supprimer($idEvenement, $idHistoriqueEvenement = '') { $html = ''; $idEvenementGroupeAdresse = 0; if ($idHistoriqueEvenement != '') { $adresse = new archiAdresse(); $reqRecupIdEvenementGroupeAdresse = "\n\t\t\t\t\tSELECT DISTINCT ee.idEvenement as idEvenementGroupeAdresse\n\t\t\t\t\tFROM evenements he\n\t\t\t\t\tLEFT JOIN _evenementEvenement ee ON ee.idEvenementAssocie = he.idEvenement\n\t\t\t\t\tWHERE idEvenement ='" . $idHistoriqueEvenement . "'"; //debug($reqRecupIdEvenementGroupeAdresse); $resRecupIdEvenementGroupeAdresse = $this->connexionBdd->requete($reqRecupIdEvenementGroupeAdresse); $fetchRecupIdEvenementGroupeAdresse = mysql_fetch_assoc($resRecupIdEvenementGroupeAdresse); $idEvenementGroupeAdresse = $fetchRecupIdEvenementGroupeAdresse['idEvenementGroupeAdresse']; // recup d'idAdresse pour l'affichage du detail de l'adresse a la fin de la suppression $reqSuppHistorique = "DELETE FROM evenements WHERE idEvenement = '" . idEvenement . "'"; //debug($reqSuppHistorique); $resSupprHistorique = $this->connexionBdd->requete($reqSuppHistorique); // maj des position au cas ou , meme si dans ce cas en principe ce n'est pas la peine (a moins que ce ne soit le dernier historique du groupe d'adresse $this->majPositionsEvenements(array('idEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'refreshAfterDelete' => true)); $idAdresse = $adresse->getIdAdresseFromIdEvenementGroupeAdresse($idEvenementGroupeAdresse); } else { $image = new archiImage(); $personne = new archiPersonne(); $courant = new archiCourantArchitectural(); $adresse = new archiAdresse(); // suppression d'un evenement // verification que l'evenement est le seul ou pas lié au groupe d'adresse $idEvenementGroupeAdresse = $this->getParent($idEvenement); foreach ($_SESSION['lastVisited'] as $key => $lastVisit) { if ($lastVisit['idEvenementGroupeAdresse'] == $idEvenementGroupeAdresse) { unset($_SESSION['lastVisited'][$key]); } } //debug($idEvenementGroupeAdresse); // on verifie que l'evenement n'a qu'un seul parent $reqVerifParent = "\n\t\t\t\t\tSELECT idEvenement\n\t\t\t\t\tFROM _evenementEvenement\n\t\t\t\t\tWHERE idEvenementAssocie = '" . $idEvenement . "'\n\t\t\t\t\t\t\t"; //debug($reqVerifParent); $resVerifParent = $this->connexionBdd->requete($reqVerifParent); if (mysql_num_rows($resVerifParent) == 1) { // on verifie que l'evenement parent est bien un groupe d'adresse ( pour le jour ou on ajoutera les sous sous evenements) if ($this->isEvenementGroupeAdresse($idEvenementGroupeAdresse)) { // comptage du nombre d'elements du groupe d'adresse $req = "select idEvenementAssocie from _evenementEvenement where idEvenement = '" . $idEvenementGroupeAdresse . "'"; //debug($req); $res = $this->connexionBdd->requete($req); if (mysql_num_rows($res) == 1) { // un seul element a supprimer , on supprime aussi le groupe d'adresse dans un deuxieme temps , voir plus bas, et donc les commentaires lies a ce groupe d'adresse // evenement images $image->deleteImagesFromIdEvenement($idEvenement); // personnes $personne->deleteLiaisonsPersonneFromIdEvenement($idEvenement); // courant architectural $courant->deleteLiaisonsCourantFromIdEvenement($idEvenement); // commentaires $adresse->deleteCommentairesFromIdEvenement($idEvenementGroupeAdresse); // adresses liees à l'evenement , on supprime la liaison $this->deleteLiaisonsAdressesLieesSurEvenement($idEvenement); // quand il y aura des sous sous evenements , il faudra aussi les supprimer // ... $reqDeleteEvenement = "DELETE FROM evenements WHERE idEvenement = '" . $idEvenement . "'"; //debug($reqDeleteEvenement); $resDeleteEvenement = $this->connexionBdd->requete($reqDeleteEvenement); $reqDeleteEvenementGroupeEvenement = "DELETE FROM evenements WHERE idEvenement = ( SELECT idEvenement FROM _evenementEvenement WHERE idEvenementAssocie = '" . $idEvenement . "' )"; $reqDeleteEvenementEvenement = "DELETE FROM _evenementEvenement WHERE idEvenementAssocie = '" . $idEvenement . "'"; //debug($reqDeleteEvenementEvenement); $resDeleteEvenementEvenement = $this->connexionBdd->requete($reqDeleteEvenementEvenement); // maj des position $this->majPositionsEvenements(array('idEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'refreshAfterDelete' => true)); // dans ce cas la fonction va se charger de supprimer les positions des evenements du groupe d'adresse supprimé } elseif (mysql_num_rows($res) > 1) { $image = new archiImage(); $personne = new archiPersonne(); $courant = new archiCourantArchitectural(); // plusieurs elements , on supprime simplement l'evenement passé en parametre de la fonction // evenement images $image->deleteImagesFromIdEvenement($idEvenement); // personnes $personne->deleteLiaisonsPersonneFromIdEvenement($idEvenement); // courant architectural $courant->deleteLiaisonsCourantFromIdEvenement($idEvenement); // quand il y aura des sous sous evenements , il faudra aussi les supprimer // ... // adresses liees à l'evenement , on supprime la liaison $this->deleteLiaisonsAdressesLieesSurEvenement($idEvenement); $reqDeleteEvenementEvenement = "DELETE FROM _evenementEvenement WHERE idEvenementAssocie = '" . $idEvenement . "'"; //debug($reqDeleteEvenementEvenement); $resDeleteEvenementEvenement = $this->connexionBdd->requete($reqDeleteEvenementEvenement); //supression de l'evenement $reqDeleteEvenement = "DELETE FROM evenements WHERE idEvenement = '" . $idEvenement . "'"; //debug($reqDeleteEvenement); $resDeleteEvenement = $this->connexionBdd->requete($reqDeleteEvenement); $this->majPositionsEvenements(array('idEvenementGroupeAdresse' => $idEvenementGroupeAdresse, 'refreshAfterDelete' => true)); // dans ce cas la fonction va mettre a jour les positions des evenements pour que ceux ci se suivent, et supprimera la liaison vers l'evenement qui n'existe plus } elseif (mysql_num_rows($res) == 0) { // probleme , il n'y a pas d'evenements fils correspondant a l'idEvenementGroupeAdresse echo "l'événement n'existe plus. Veuillez contacter l'administrateur.<br>"; } } else { echo "L'événement parent n'est pas de type groupe d'adresse : veuillez contactez l'administrateur.<br>"; } } elseif (mysql_num_rows($resVerifParent) > 1) { echo "Erreur : l'evenement appartient a plusieurs groupes d'adresses : contactez l'administrateur<br>"; } else { echo "Erreur : l'evenement n'appartient a aucun groupe d'adresse : contactez l'administrateur<br>"; } // pour l'affichage de retour : on recupere l'adresse $idAdresse = $adresse->getIdAdresseFromIdEvenementGroupeAdresse($idEvenementGroupeAdresse); // attention si l'evenement groupe adresse a ete supprimé precedemment $nbEvenementLiesAuGroupeAdresse = $this->getNbEvenementsFromGroupeAdresse($idEvenementGroupeAdresse); if ($nbEvenementLiesAuGroupeAdresse == 0 && $idEvenementGroupeAdresse != '' && $idEvenementGroupeAdresse != '0') { // s'il n'y a aucun evenement lié au groupe d'adresses , on peut supprimer le groupe d'adresse et les liaisons vers celui ci $reqDeleteGroupeAdresseHistorique = "DELETE FROM evenements WHERE idEvenement = '" . $idEvenementGroupeAdresse . "'"; //debug($reqDeleteGroupeAdresseHistorique); $resDeleteGroupeAdresseHistorique = $this->connexionBdd->requete($reqDeleteGroupeAdresseHistorique); $reqDeleteAdresseGroupeAdresse = "DELETE FROM _adresseEvenement WHERE idEvenement = '" . $idEvenementGroupeAdresse . "'"; //debug($reqDeleteAdresseGroupeAdresse); $resDeleteAdresseGroupeAdresse = $this->connexionBdd->requete($reqDeleteAdresseGroupeAdresse); // on supprime aussi les liaisons vers le groupe d'adresse dans les adresses liés $reqDeleteLiaisonsAdressesLiees = "DELETE FROM _evenementAdresseLiee WHERE idEvenementGroupeAdresse='" . $idEvenementGroupeAdresse . "'"; //debug($reqDeleteLiaisonsAdressesLiees); $resDeleteAdresseGroupeAdresse = $this->connexionBdd->requete($reqDeleteLiaisonsAdressesLiees); // supprimons aussi les liaisons vueSur et prisDepuis sur le groupe d'adresse $reqDeleteVueSurPrisDepuis = "DELETE FROM _adresseImage WHERE idEvenementGroupeAdresse = '" . $idEvenementGroupeAdresse . "' AND (vueSur='1' OR prisDepuis='1')"; //debug($reqDeleteVueSurPrisDepuis); $resDeleteVueSurPrisDepuis = $this->connexionBdd->requete($reqDeleteVueSurPrisDepuis); // suppression des liaisons entre evenement et evenement groupe d'adresse $reqDeleteEvenementGAEvenementAssocie = "DELETE FROM _evenementEvenement WHERE idEvenement='" . $idEvenementGroupeAdresse . "'"; //debug($reqDeleteEvenementGAEvenementAssocie); $resDeleteEvenementGAEvenementAssocie = $this->connexionBdd->requete($reqDeleteEvenementGAEvenementAssocie); $idEvenementGroupeAdresse = 0; } } if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) { header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson), false, false)); } if ($idEvenementGroupeAdresse == 0) { header("Location: index.php"); } else { header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $idAdresse, 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresse), false, false)); } }