/** * Ajouter un événement à la BDD * * @param string $type Type (adresse ou personne) * @param array $arrayNewAdresses Contenu lié * * @return void * */ function addEvent($type = "adresse", $arrayNewAdresses = array()) { // ****************************************************** // ensuite on ajoute l'evenement // ****************************************************** $evenement = new archiEvenement(); $idEvenementGroupeAdresses = 0; $idSousEvenement = 0; if ($type == "personne") { $linkTable = "_personneEvenement"; $field = "idPersonne"; } else { $linkTable = "_adresseEvenement"; $field = "idAdresse"; } $table = array('table' => $linkTable, 'field' => $field); //debug($arrayNewAdresses); //$arrayRetourEvenementNouveauDossier=$evenement->ajouterEvenementNouveauDossier(); foreach ($arrayNewAdresses as $newAddress) { if (isset($newAddress['newAdresse']) && !empty($newAddress['newAdresse']) || $newAddress['newAdresse'] == 1) { //debug("full ajout"); $arrayRetourEvenementNouveauDossier = $evenement->ajouterEvenementNouveauDossier(); } else { //debug("ajout simple id : ".$newAddress['idAdresse']); $arrayRetourEvenementNouveauDossier = $evenement->ajouterEvenementNouveauDossier($newAddress['idAdresse']); } } //debug($arrayRetourEvenementNouveauDossier); // s'il n'y a pas eu d'erreurs , on peut faire l'ajout des liaisons entre evenement et adresses if (count($arrayRetourEvenementNouveauDossier['errors']) == 0 && count($arrayNewAdresses) > 0) { $idEvenementGroupeAdresses = $arrayRetourEvenementNouveauDossier['idEvenementGroupeAdresse']; $idSousEvenement = $arrayRetourEvenementNouveauDossier['idSousEvenement']; // liaison entre les adresses et l'evenement groupe d'adresses $resSupp = $this->connexionBdd->requete("delete from {$linkTable} where idEvenement = '" . $idEvenementGroupeAdresses . "'"); // on rend la liste des identifiants unique $arrayNewIdAdresses = array(); foreach ($arrayNewAdresses as $indice => $value) { $arrayNewIdAdresses[] = $value['idAdresse']; } $arrayNewIdAdresses = array_unique($arrayNewIdAdresses); foreach ($arrayNewIdAdresses as $indice => $idAdresse) { $reqLiaisons = "INSERT INTO {$linkTable} ({$field}, idEvenement)\n VALUES ('" . $idAdresse . "', '" . $idEvenementGroupeAdresses . "')\n "; //debug($reqLiaisons); $resLiaisons = $this->connexionBdd->requete($reqLiaisons); } // on relie l'evenement pere (groupe d'adresse ) à l'evenement fils if (isset($newAddress['newAdresse']) && !empty($newAddress['newAdresse']) || $newAddress['newAdresse'] == 1) { $sqlAssociationNettoie = "delete from _evenementEvenement where idEvenement = '" . $arrayRetourEvenementNouveauDossier['idEvenementGroupeAdresse'] . "'"; //debug($sqlAssociationNettoie); $resAssociationNettoie = $this->connexionBdd->requete($sqlAssociationNettoie); } $sqlAssociation = "insert into _evenementEvenement (idEvenement,idEvenementAssocie) values ('" . $arrayRetourEvenementNouveauDossier['idEvenementGroupeAdresse'] . "','" . $arrayRetourEvenementNouveauDossier['idSousEvenement'] . "')"; //debug($sqlAssociation); $resAssociation = $this->connexionBdd->requete($sqlAssociation); if ($type == "personne") { } else { // ************************************************************************************************************************************************************* // envoi d'un mail aux administrateur pour la moderation $utilisateur = new archiUtilisateur(); $message = "L'utilisateur suivant a créé un nouveau dossier : "; $message .= $utilisateur->getMailUtilisateur($this->session->getFromSession('utilisateurConnecte' . $this->idSite)) . "<br>"; $message .= "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdAdresse' => $arrayNewIdAdresses[0], 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses)) . "'>lien vers l'article</a><br>"; $message .= "Adresses liées au nouveau dossier :<br>"; $i = 0; $adressePourSujetMail = ""; foreach ($arrayNewAdresses as $indice => $value) { if ($i == 0) { $adressePourSujetMail = $this->getIntituleAdresseFrom($value['idAdresse'], 'idAdresse'); } if ($value['newAdresse'] == true) { // cette adresse a été créée avec le dossier $message .= "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses, 'archiIdAdresse' => $value['idAdresse'])) . "'>" . $this->getIntituleAdresseFrom($value['idAdresse'], 'idAdresse') . " (nouvelle adresse)</a><br>"; } else { /* cette adresse a été créée précédemment * et est utilisée sur ce dossier * */ $message .= "<a href='" . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses, 'archiIdAdresse' => $value['idAdresse'])) . "'>" . $this->getIntituleAdresseFrom($value['idAdresse'], 'idAdresse') . " (cette adresse existait déjà " . "avant la création du dossier)" . "</a><br>"; } } $mail = new mailObject(); $mail->sendMailToAdministrators($mail->getSiteMail(), "archi-strasbourg.org : " . "un utilisateur a créé un nouveau dossier - " . $adressePourSujetMail, $message, " and alerteMail='1' ", true); $u = new archiUtilisateur(); $u->ajouteMailEnvoiRegroupesAdministrateurs(array('contenu' => $message, 'idTypeMailRegroupement' => 3, 'criteres' => " and alerteMail='1' ")); /* envoi mail aussi au moderateur si ajout * sur adresse de ville que celui ci modere * */ $arrayListeModerateurs = $u->getArrayIdModerateursActifsFromVille($this->variablesPost['ville'], array("sqlWhere" => " AND alerteMail='1' ")); if (count($arrayListeModerateurs) > 0) { foreach ($arrayListeModerateurs as $indice => $idModerateur) { if ($this->session->getFromSession("utilisateurConnecte" . $this->idSite) != $idModerateur) { $mailModerateur = $u->getMailUtilisateur($idModerateur); if ($u->isMailEnvoiImmediat($idModerateur)) { $mail->sendMail($mail->getSiteMail(), $mailModerateur, "archi-strasbourg.org : " . "un utilisateur a créé un nouveau dossier - " . $adressePourSujetMail, $message, true); } else { // envoi regroupé $u->ajouteMailEnvoiRegroupes(array('contenu' => $message, 'idDestinataire' => $idModerateur, 'idTypeMailRegroupement' => 3)); } } } } } //echo $retourEvenement["html"]; if ($type == "personne") { header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idAdresse), false, false)); } else { header("Location: " . $this->creerUrl('', '', array('archiAffichage' => 'adresseDetail', 'archiIdEvenementGroupeAdresse' => $idEvenementGroupeAdresses, 'archiIdAdresse' => $value['idAdresse']), false, false)); } } }