From ae5c963936e61a7e520cb7c80ecd4b2dd24de51e Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Fri, 18 Sep 2020 15:35:39 +0200 Subject: [PATCH] Grosse amélioration et rationalisation de la gestion des emails --- CHANGES.txt | 4 ++++ README.md | 4 ++-- src/Controller/AppController.php | 431 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- src/Controller/MaterielsController.php | 19 ++++++++++++++----- src/Template/Configurations/edit.ctp | 20 ++++++++++++++------ src/Template/Configurations/view.ctp | 13 ++++++++++--- tests/Fixture/ConfigurationsFixture.php | 2 +- 7 files changed, 341 insertions(+), 152 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 6eef4b2..f78f6ff 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -94,6 +94,10 @@ Outre ces changements, voici d'autres changements importants : ======= CHANGES ======= ------- +18/09/2020 v4.103.0-3.7.9 (EP) + - (e) Grosse amélioration et rationalisation de la gestion des emails (étape 1) + +------- 17/09/2020 v4.102.0-3.7.9 (EP) - (i) Tests Fixtures => toutes simplifiées pour utiliser le format de la table de prod par défaut diff --git a/README.md b/README.md index 0327309..331956b 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : -------------------------------------------------------------------------------------------- -Date: 15/09/2020 -Version: 4.102.0-3.7.9 +Date: 18/09/2020 +Version: 4.103.0-3.7.9 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php index f6b1220..2f010c2 100755 --- a/src/Controller/AppController.php +++ b/src/Controller/AppController.php @@ -1649,9 +1649,14 @@ class AppController extends Controller - - - + protected function getCurrentURL($WITH_REQUEST_URI=true) { + $link = + (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") + . "://" + . $_SERVER['HTTP_HOST']; + if ($WITH_REQUEST_URI) $link .= $_SERVER['REQUEST_URI']; + return $link; + } protected function getCurrentUserName() { //debug($this->LdapAuth->user('id')); exit; @@ -2692,6 +2697,8 @@ class AppController extends Controller } } + + /**Version MI - version modifiée de la fonction sendEmail par malik du 18 juin au 24 août * * Envoi un mail avec un sujet, contenant un message à destination d'un email, selon l'action effectuée. @@ -2703,9 +2710,24 @@ class AppController extends Controller * @param $msg : * Message à envoyer. Si $msg n'est pas renseigné, un message par défaut sera généré. */ + // PHP7: + //public function sendmail(\App\Model\Entity $entity, $mode=3, $subject = null, $msg = null) + //public function sendmail(\App\Model\Entity\Materiel $entity, $mode=3, $subject = null, $msg = null) + // PHP5 : public function sendmail($entity, $mode=3, $subject = null, $msg = null) { + $configuration = $this->confLabinvent; + // Si les deux cases "Activer l'envoi des mails.." sont décochées, on se fatigue pas à exécuter la fonction + if (!$configuration->envoi_mail && !$configuration->envoi_mail_guests) return null; + + + /* + * 1) Définition des PARAMÈTRES GÉNÉRAUX : host, action, acteur, ... + */ + + $host = $this->getCurrentURL(false); + //$this->myDebug("photo send mail"); //debug("photo send mail"); //exit; @@ -2718,18 +2740,21 @@ class AppController extends Controller * login $_SESSION['Auth']['User']['xxx'][0] /!\ Ce champ est suceptible de changer de nom, dans les tests ce champ est ['cn'][0] * mdp $_SESSION['Auth']['User']['userpassword'][0] */ - $configuration = $this->confLabinvent; $action = $this->request->getAttribute('params')['action']; // add or edit or delete or ... - // Si les deux cases "Activer l'envoi des mails.." sont décochées, on se fatigue pas à exécuter la fonction - if (!$configuration->envoi_mail && !$configuration->envoi_mail_guests) return null; - - $mailList = []; - // On détermine le message et le sujet du mail en fonction de l'action effectuee - // on bloque l'envoi de mail à l'edition et à la validation pour eviter trop d'envoi de mail - // le temps que soit trouvé une autre solution + // ex: 'Etienne Pallier' $acteur = $_SESSION['Auth']['User']['givenname'][0] . ' ' . $_SESSION['Auth']['User']['sn'][0]; + $materiel = null; + + + /* + * 2) CRÉATION DU MAIL (sujet et body) + * + * On détermine le message et le sujet du mail en fonction de l'action effectuee + * + */ + /* * - mail pour un MATERIEL */ @@ -2752,16 +2777,7 @@ class AppController extends Controller case 'delete': $subject = "Suppression d'un matériel"; $msg = "$acteur a supprimé le matériel \"$nom_materiel\""; - // @todo: mettre le nom des domaine, categ, et sous-categ, et non pas l'id - if ($materiel->sur_categorie_id != "") - $msgMore .= "\n\nDomaine : " . $materiel->sur_categorie_id; - if ($materiel->categorie_id != "") - $msgMore .= "\n\nCatégorie : " . $materiel->categorie_id; - if ($materiel->sous_categorie_id != "") - $msgMore .= "\n\nSous-catégorie : " . $materiel->sous_categorie_id; - if ($materiel->description != "") - $msgMore .= "\n\nDescription :\n" . $materiel->description; - break; + break; case 'statusCreated': $subject = "Dé-validation d'un matériel"; $msg = "$acteur a dé-validé le matériel \"$nom_materiel\""; @@ -2785,85 +2801,52 @@ class AppController extends Controller case 'printLabelRuban': $subject = "Etiquette imprimée"; $msg = "L'étiquette concerant votre matériel \"$nom_materiel\" a été imprimée"; - $mailList[0] = $materiel->email_responsable; + //$mailList[0] = $materiel->email_responsable; default: $subject = "Action \"$action\" sur un matériel"; $msg = "$acteur a effectué l'action \"$action\" sur le matériel \"$nom_materiel\""; break; } // end switch - // (EP) Ajout de l'ID du materiel !!! - $msg .= " (id=" . $materiel->id . ")."; - // Only for "delete" action (for the moment...) - if ($msgMore) - $msg .= $msgMore; - // $msg .= "\n\n"; - } // subject is null - - // Et maintenant on construit la liste de mails... - // Si l'envoi général est activé (et que l'action ne correspond pas à 'printLabelRuban'): - if ($configuration->envoi_mail && $action != 'printLabelRuban') { - // owner's mail (utilisateur du matériel) - $mailList[0] = $materiel->email_responsable; - - // resp's mail - $mailsRespMetier = []; - $mailRespThematique = []; - - //TODO: changer ça car c'est pas forcément id=1 - //if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1) { - if ($materiel->groupes_metier_id) { - // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe - $mailsRespMetier = TableRegistry::getTableLocator()->get('Users')->find() - ->select('email') - ->where([ - 'role =' => 'Responsable', - 'groupes_metier_id =' => $materiel->groupes_metier_id - ]) - ->toArray(); + // (EP) Ajout de l'url (ou id) du materiel + $id = $materiel->id; + $msg .= $action=='deleteD' ? " (id=$id)" : " ($host/materiels/view/$id)"; + //$msg .= "\n\nURL de la fiche : $host/materiels/view/{$materiel->id}"; + // $msg .= "\n\n"; + + // (EP) On ajoute quelques informations sur le matériel + $fields = [ + 'sur_categorie_id' => ['sur_category', 'Domaine'], + 'categorie_id' => ['category', 'Catégorie'], + 'sous_categorie_id' => ['sous_category', 'Sous-catégorie'], + 'description' => ['hasnot!', 'Description'] + ]; + foreach ($fields as $fname=>$attrs) if ($materiel->$fname) { + $val = $materiel->has($attrs[0]) ? $materiel->{$attrs[0]}->nom : $materiel->$fname; + $msgMore .= "\n\n$attrs[1] : " . $val; } - - //TODO: changer ça car c'est pas forcément id=1 - //if ($materiel->groupes_thematique_id != null && $materiel->groupes_thematique_id != 1) { - if ($materiel->groupes_thematique_id) { - // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe - $mailRespThematique = TableRegistry::getTableLocator()->get('Users')->find() - ->select('email') - ->where([ - 'role =' => 'Responsable', - 'groupes_thematique_id =' => $materiel->groupes_thematique_id - ]) - ->toArray(); - } - - if ($mailsRespMetier != [] || $mailRespThematique != []) { - $mailsResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique)); - /* - for ($i = 0; $i < sizeof($mailsResp); $i ++) { - $mailList[] = $mailsResp[$i]['email']; - // $mailList[sizeof($mailList)] = $mailsResp[$i]['email']; - } - */ - foreach ($mailsResp as $mailResp) $mailList[] = $mailResp['email']; - $mailList = array_unique($mailList); - } - //debug($mailList);exit(); - - // mail admin de reference (ici appele gestionnaire) -> Partie administration - // Cela a été mis en commentaire car de toute façon l'utilisateur va voir un administratif pour faire valider sa fiche, - // Pas la peine de spam l'administration de mails non plus hein ! - + if ($msgMore) $msg .= $msgMore; /* - * if ($action != 'statusValidated' && $action != 'statusArchived') { - * $mailsAdmin = TableRegistry::getTableLocator()->get('Users')->find()->select('email') - * ->where(['role =' => 'Administration']) - * ->toArray(); - * for ($i = 0; $i < sizeof($mailsAdmin); $i ++) { - * $mailList[sizeof($mailList)] = $mailsAdmin[$i]['email']; - * } - * } + //if ($materiel->sur_categorie_id != "") + if ($materiel->sur_categorie_id) { + $val = $materiel->has('sur_category') ? $materiel->sur_category->nom : $materiel->sur_categorie_id; + $msgMore .= "\n\nDomaine : " . $val; + } + if ($materiel->categorie_id) + $msgMore .= "\n\nCatégorie : " . $materiel->categorie_id; + if ($materiel->sous_categorie_id) + $msgMore .= "\n\nSous-catégorie : " . $materiel->sous_categorie_id; + //if ($materiel->description != "") + if ($materiel->description) + $msgMore .= "\n\nDescription :\n" . $materiel->description; */ - } + + // Dans la liste des mails, on ajoute l'utilisateur (responsable) du matériel + //$mailList[0] = $materiel->email_responsable; + + } // subject is null + + } // Materiel @@ -2912,41 +2895,29 @@ class AppController extends Controller break; } // end switch // (EP) Ajout de l'ID du document, et de l'id du materiel associé !!! - //On change le contenu en fonction de si le document a été lié à un matériel, ou a un suivi - if (!$id_mat == Null) { + // On change le contenu en fonction de si le document a été lié à un matériel, ou à un suivi + $id = $id_mat; + $entity_name = 'matériel'; + if (!$id) { + $id = $id_suiv; + $entity_name = 'suivi'; + } + $msg .= "\n\n (id doc = {$doc->id}, id du $entity_name associé = $id)"; + $nomFic =$id."_".$nom_doc."_".$id_doc.".".$type_doc; + /* + //if (!$id_mat == Null) { + if ($id_mat) { $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_mat\")"; $nomFic =$id_mat."_".$nom_doc."_".$id_doc.".".$type_doc; } else { - $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_suiv\")"; + $msg .= "\n\n (id doc=".$doc->id.", Suivi associé d'id=\"$id_suiv\")"; $nomFic =$id_suiv."_".$nom_doc."_".$id_doc.".".$type_doc; } - } + */ + } // sujet null - // Si le doc est lié à un matos, on ajoute le mail du gestionnaire du matos - // (ssi l'envoi général est activé et que l'action ne correspond pas à 'printLabelRuban') - if ( !$id_mat == Null && $configuration->envoi_mail && $action!='printLabelRuban' ) { - // (EP) Recup du materiel associé - /* - $materiel = TableRegistry::getTableLocator()->get('Materiels')->find() - ->where([ - 'id =' => $doc->materiel_id - ])->first(); - */ - $materiel = TableRegistry::getTableLocator()->get('Materiels')->get($doc->materiel_id); - //debug("envoi"); - //debug("matos = ".$materiel); - //exit; - // owner's mail (utilisateur du matériel associé ) - //$mailList[0] = $entity->materiel->email_responsable; - // (MI) - gestionaire ratachée au matériel - //$mailList[1]= TableRegistry::getTableLocator()->get('Users')->find() - $mailList[]= TableRegistry::getTableLocator()->get('Users')->find() - ->select('email') - ->where([ - 'role =' => 'Administration', - 'id =' => $materiel->gestionnaire_id - ]); - } // if matos + // Si le doc est attaché à un matériel, on recupère ce matériel + if ($id_mat) $materiel = TableRegistry::getTableLocator()->get('Materiels')->get($doc->materiel_id); } // DOC lié @@ -2966,25 +2937,209 @@ class AppController extends Controller * ... etc ... (il faut qu'on soit plus précis) */ - // Et maintenant on construit la liste de mails... + // Pas de matériel défini => pas de mail (pas de bras, pas de chocolat) ! + if ($materiel == null) return null; + - // Si l'envoi à la liste spécifiée est activé (et que l'action ne correspond pas à 'printLabelRuban'): - $specificUsers = []; - if ($configuration->envoi_mail_guests && $action != 'printLabelRuban') { + /* + * 3) DESTINATAIRES : on construit la liste des destinataires + */ + + $mailList = []; + + /* + * 3a) Envoi général + * + * Si l'envoi général est activé, on ajoute les mails des personnes concernées : + * - le proprio (l'utilisateur) du matériel (sauf s'il est l'acteur de l'action) + * - le gestionnaire de référence du matos + * - les responsables thématiques et métier + * - (TODO:) les responsables (scientifique et chef projet) du projet + */ + //if ($configuration->envoi_mail && $action != 'printLabelRuban') { + if ($configuration->envoi_mail) { + + // - Ajout de l'utilisateur du matériel (sauf s'il est l'acteur de l'action) + /* + debug($acteur); + debug($this->userName); + debug($materiel->nom_responsable); + debug($this->userName == $materiel->nom_responsable); + exit; + */ + //if ($this->userName != $materiel->nom_responsable) $mailList[0] = $materiel->email_responsable; + if ($this->userName == $materiel->nom_responsable) $mailList[] = $materiel->email_responsable; + + // - Ajout du gestionnaire de référence du matos (s'il y en a un) + /* + if ($materiel->gestionnaire_id) + $mailList[] = TableRegistry::getTableLocator()->get('Users') + ->find() + ->where([ + 'id =' => $materiel->gestionnaire_id, + 'role =' => 'Administration', + ]) + ->select('email') + //->toArray(); + */ + if ($materiel->gestionnaire_id) + $mailList[] = TableRegistry::getTableLocator()->get('Users')->get($materiel->gestionnaire_id)->email; + //debug($mailList); exit; + + // - Ajout des Responsables de groupe thématique ou métier + /* + $mailsRespMetier = []; + $mailRespThematique = []; + */ + $resp_mails = []; + $groups_fk = [ 'groupes_metier_id', 'groupes_thematique_id' ]; + foreach ($groups_fk as $group_fk) if ($materiel->$group_fk) { + //$mailsRespMetier = TableRegistry::getTableLocator()->get('Users')->find() + $resp_mails[$group_fk] = TableRegistry::getTableLocator()->get('Users')->find() + ->select('email') + ->where([ + 'role =' => 'Responsable', + "$group_fk =" => $materiel->$group_fk + ]) + ->toArray(); + } + debug($resp_mails); + //exit; + /* + if ($materiel->groupes_metier_id) { + $mailsRespMetier = TableRegistry::getTableLocator()->get('Users')->find() + ->select('email') + ->where([ + 'role =' => 'Responsable', + 'groupes_metier_id =' => $materiel->groupes_metier_id + ]) + ->toArray(); + } + if ($materiel->groupes_thematique_id) { + $mailRespThematique = TableRegistry::getTableLocator()->get('Users')->find() + ->select('email') + ->where([ + 'role =' => 'Responsable', + 'groupes_thematique_id =' => $materiel->groupes_thematique_id + ]) + ->toArray(); + } + */ + // On ajoute ces responsables à la liste générale + //$resp_mails = array_merge($resp_mails); + //$resp_mails = array_values($resp_mails); + //$resp_mails = array_values($resp_mails); + //$resp_mails['groupes_metier_id']=[]; $resp_mails['groupes_thematique_id']=[]; + $resp_mails = array_merge($resp_mails['groupes_metier_id'], $resp_mails['groupes_thematique_id']); + debug($resp_mails); + foreach ($resp_mails as $resp_mail) $mailList[] = $resp_mail['email']; + //exit; + /* + if ($mailsRespMetier != [] || $mailRespThematique != []) { + //$mailsResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique)); + /S + for ($i = 0; $i < sizeof($mailsResp); $i ++) { + $mailList[] = $mailsResp[$i]['email']; + // $mailList[sizeof($mailList)] = $mailsResp[$i]['email']; + } + S/ + foreach ($mailsResp as $mailResp) $mailList[] = $mailResp['email']; + } + */ + + // mail admin de reference (ici appele gestionnaire) -> Partie administration + // Cela a été mis en commentaire car de toute façon l'utilisateur va voir un administratif pour faire valider sa fiche, + // Pas la peine de spam l'administration de mails non plus hein ! + /* + if ($action != 'statusValidated' && $action != 'statusArchived') { + $mailsAdmin = TableRegistry::getTableLocator()->get('Users')->find()->select('email') + ->where(['role =' => 'Administration']) + ->toArray(); + for ($i = 0; $i < sizeof($mailsAdmin); $i ++) { + $mailList[sizeof($mailList)] = $mailsAdmin[$i]['email']; + } + } + */ + } // si envoi général activé + + /* + * 3b) Envoi à la liste spécifique + * + * Si l'envoi à la liste spécifique est activé, + * on ajoute simplement TOUS les mails de cette liste, + * sans condition aucune, + * car ce sont des personnes qui ont demandé à être informées + * systématiquement de toutes les actions + * + */ + //$specificUsers = []; + //if ($configuration->envoi_mail_guests && $action != 'printLabelRuban') { + if ($configuration->envoi_mail_guests) { // mail aux adresses specifiees dans la config for ($i = 0; $i < 11; $i ++) { - $specificUser = $configuration['emailGuest' . $i]; - if ($specificUser) - $specificUsers[] = $specificUser; - // $mailList[sizeof($mailList)] = $configuration['emailGuest' . $i]; - $mailList[] = $specificUser; - // Le if vérifie que la ligne soit pas null + /* + $mail_field = "emailGuest$i"; + $specificUser = $configuration->$mail_field; + */ + $specificUser = $configuration["emailGuest$i"]; + if ($specificUser) $mailList[] = $specificUser; + //$specificUsers[] = $specificUser; + // $mailList[sizeof($mailList)] = $configuration['emailGuest' . $i]; } } - // On dedoublonne la liste des mails, c'pas tres cool de se faire spam 2-3 fois pour la meme action sur le meme materiel, non mais ! - // Ca supprime aussi les lignes vides + // On supprime les doublons éventuels + /* test : ajout de doublons + $mailList[] = 'Etienne.Pallier@irap.omp.eu'; + $mailList[] = 'etienne.Pallier@irap.omp.eu'; + $mailList[] = 'elodie.bourrec@irap.omp.eu'; + $mailList[] = 'Elodie.bourrec@irap.omp.eu'; + */ + // on met tous les mails en minuscule car sinon certains doublons pourraient ne pas être identifiés... + $mailList = array_map('strtolower', $mailList); $mailList = array_unique($mailList); + debug($mailList); + //exit(); + + /* + // - DOC only + // Si le doc est lié à un matos, on ajoute le mail du gestionnaire du matos + // (ssi l'envoi général est activé et que l'action ne correspond pas à 'printLabelRuban') + if ( !$id_mat == Null && $configuration->envoi_mail && $action!='printLabelRuban' ) { + // (EP) Recup du materiel associé + /S + $materiel = TableRegistry::getTableLocator()->get('Materiels')->find() + ->where([ + 'id =' => $doc->materiel_id + ])->first(); + S/ + $materiel = TableRegistry::getTableLocator()->get('Materiels')->get($doc->materiel_id); + //debug("envoi"); + //debug("matos = ".$materiel); + //exit; + // owner's mail (utilisateur du matériel associé ) + //$mailList[0] = $entity->materiel->email_responsable; + // (MI) - gestionaire ratachée au matériel + //$mailList[1]= TableRegistry::getTableLocator()->get('Users')->find() + $mailList[]= TableRegistry::getTableLocator()->get('Users')->find() + ->select('email') + ->where([ + 'role =' => 'Administration', + 'id =' => $materiel->gestionnaire_id + ]); + } // si lié à un matos + */ + + + + /* + * 4) ENVOI : enfin, on envoie le mail à toute la liste de destinataires + */ + + // On dédoublonne la liste des mails pour éviter de spammer les gens, non mais ! + // Ca supprime aussi les lignes vides + //$mailList = array_unique($mailList); + // ... Pour envoyer les mails aux personnes concernees foreach ($mailList as $mail) { // On envoi des mails à toute la liste, sauf pour "l'acteur", il sait ce qu'il a fait, pas besoin de le spam non plus hein @@ -2994,7 +3149,12 @@ class AppController extends Controller // Génération du message "Vous recevez ce message en tant que $role" // Si $role inexistant (lorsque c'est un mail de la liste entrée en configuration), le message est plutot "Vous recevez ce message car vous avez demandé à le recevoir. [...]" //if ($specificUsers) - $role = "car vous etes dans la liste spécifique des emails de LabInvent. \n\nPour faire retirer votre mail de cette liste, veuillez contacter un super-administrateur."; + /* + $role = "car vous etes dans la liste spécifique des emails de LabInvent."; + $role .= "\n\nPour faire retirer votre mail de cette liste, veuillez contacter un super-administrateur."; + */ + $role = "car vous êtes concerné(e) par cette action effectuée sur l'inventaire des matériels du laboratoire."; + $role .= "\n\n(vous êtes l'utilisateur du matériel, ou bien le gestionnaire, ou encore le responsable thématique ou métier ou projet)."; /* (EP 13/319) : à quoi sert toute cette suite du texte du mail ??? * Ca sent le bon vieux copier-coller sans réfléchir... //else { @@ -3012,7 +3172,8 @@ class AppController extends Controller */ //if ($entity != null && !in_array($action, ['delete','statusValidated','statusCreated'])) { if ($entity != null) { - if (!in_array($action, ['delete'])) + //if (!in_array($action, ['delete'])) + if ( ($entity instanceof Materiel) && $action != 'delete') $message .= "\n\nVeuillez vérifier et compléter si besoin la fiche correspondante."; $message .= "\n\nVous recevez ce message " . $role; //en fonction du mode à l'appel, on utilise un envoi de mail différent @@ -3041,7 +3202,7 @@ class AppController extends Controller } //foreach ($mailList as $mail) return $mailList; - } // function sendmail + } // sendmail() diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index af52e12..792bf2a 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -2157,23 +2157,32 @@ class MaterielsController extends AppController { public function delete($id = null) { // $this->request->allowMethod(['post', 'delete']); - $verb = 'supprimé'; - $materiel = $this->Materiels->get($id); + $materiel = $this->Materiels->get($id, + [ + 'contain'=>['SurCategories', 'Categories', 'SousCategories'] + ] + ); + // DEBUG + $this->sendmail($materiel); + exit; + + //if ($materiel->has('sur_category')) debug($materiel->sur_category->nom); + //debug($materiel); exit; if ($this->Materiels->delete($materiel)) { - $this->Flash->success(__('Le matériel a bien été supprimé')); + $this->Flash->success(__("Le matériel a bien été $verb")); $this->ilog("Materiel $verb = '$materiel' (id=$id)"); //(EP202009) //$this->sendEmail($materiel); $this->sendmail($materiel); - } else - $this->Flash->error(__('Le matériel n\'a pas pu être supprimé')); + $this->Flash->error(__("Le matériel n'a pas pu être $verb")); return $this->redirect([ 'action' => 'index' ]); } + /** * StatusSetTo method diff --git a/src/Template/Configurations/edit.ctp b/src/Template/Configurations/edit.ctp index 94e1128..fe3400b 100644 --- a/src/Template/Configurations/edit.ctp +++ b/src/Template/Configurations/edit.ctp @@ -160,17 +160,24 @@ function echoSection($title, $section) { echo '
'; */ - echo $this->Form->control('envoi_mail', [ - 'label' => 'Activer l\'envoi des mails général' - ]); echo $this->Form->control('sender_mail', [ - 'label' => 'Attribut "sender" (mail)' + 'label' => "Attribut 'sender' (expéditeur)" + ]); + echo $this->Form->control('envoi_mail', [ + 'label' => "Activer l'envoi 'général' des mails" ]); echo $this->Form->control('envoi_mail_guests', [ - 'label' => 'Activer l\'envoi des mails pour la liste spécifique ci-dessous' + 'label' => "Activer l'envoi 'spécifique' des mails pour la liste ci-dessous" ]); + // (EP202009) non mais, faudrait arrêter d'être fainénant aussi... + for ($i=1 ; $i<=10; $i++) { + echo $this->Form->control('emailGuest'.$i, [ + 'label' => "Destinataire $i" + ]); + } + /* echo $this->Form->control('emailGuest1', [ - 'label' => 'Mail guest 1' + 'label' => 'Destinataire 1' ]); echo $this->Form->control('emailGuest2', [ 'label' => 'Mail guest 2' @@ -199,6 +206,7 @@ function echoSection($title, $section) { echo $this->Form->control('emailGuest10', [ 'label' => 'Mail guest 10' ]); + */ echo '
'; diff --git a/src/Template/Configurations/view.ctp b/src/Template/Configurations/view.ctp index 4ebfa52..2dae98b 100644 --- a/src/Template/Configurations/view.ctp +++ b/src/Template/Configurations/view.ctp @@ -103,9 +103,15 @@ function echoSection($title, $section) { echo ''; echo ''; */ - $displayElement(__('Activer l\'envoi des mails général'), h($configurationObj->envoi_mail)?'Oui':'Non'); - $displayElement(__('Attribut "sender" (mail)'), h($configurationObj->sender_mail)); - $displayElement(__('Activer l\'envoi des mails pour la liste spécifique ci-dessous'), h($configurationObj->envoi_mail_guests)?'Oui':'Non'); + $displayElement(__("Attribut 'sender' (expéditeur)"), h($configurationObj->sender_mail)); + $displayElement(__("Activer l'envoi 'général' des mails"), h($configurationObj->envoi_mail)?'Oui':'Non'); + $displayElement(__("Activer l'envoi 'spécifique' des mails pour la liste ci-dessous"), h($configurationObj->envoi_mail_guests)?'Oui':'Non'); + // (EP202009) non mais, faudrait arrêter d'être fainénant aussi... + for ($i=1 ; $i<=10; $i++) { + $dest = "emailGuest$i"; + $displayElement( __("Destinataire $i"), h($configurationObj->$dest) ); + } + /* $displayElement(__('Mail guest 1'), h($configurationObj->emailGuest1)); $displayElement(__('Mail guest 2'), h($configurationObj->emailGuest2)); $displayElement(__('Mail guest 3'), h($configurationObj->emailGuest3)); @@ -116,6 +122,7 @@ function echoSection($title, $section) { $displayElement(__('Mail guest 8'), h($configurationObj->emailGuest8)); $displayElement(__('Mail guest 9'), h($configurationObj->emailGuest9)); $displayElement(__('Mail guest 10'), h($configurationObj->emailGuest10)); + */ echo '
'; echo ''; diff --git a/tests/Fixture/ConfigurationsFixture.php b/tests/Fixture/ConfigurationsFixture.php index d4e5197..4a4ab33 100644 --- a/tests/Fixture/ConfigurationsFixture.php +++ b/tests/Fixture/ConfigurationsFixture.php @@ -122,7 +122,7 @@ class ConfigurationsFixture extends TestFixture //'envoi_mail_management_dev' => 1, 'envoi_mail' => 1, - //'envoi_mail_guests' => 0, + 'envoi_mail_guests' => 0, 'sender_mail' => 'ezarear@localhost.com', 'emailGuest1' => 'Lorem ipsum dolor sit amet', 'emailGuest2' => 'Lorem ipsum dolor sit amet', -- libgit2 0.21.2