From 63f8e704df0b37093770eca6b1bf8e3e7f46a2a5 Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Fri, 25 Sep 2020 18:54:11 +0200 Subject: [PATCH] Grosse amélioration et rationalisation (généralisation) notifications --- CHANGES.txt | 6 ++++++ README.md | 2 +- src/Controller/AppController.php | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------- src/Controller/DocumentsController.php | 3 ++- src/Controller/MaterielsController.php | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- src/Controller/UsersController.php | 2 +- src/Model/Table/AppTable.php | 3 ++- 7 files changed, 219 insertions(+), 111 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 049c435..970e9fb 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -110,6 +110,12 @@ TODO : (sur le modèle de /pages/acls) ------- +25/09/2020 v4.103.8-3.7.9 (EP) + - (i) Grosse amélioration et rationalisation (généralisation) de la gestion des notifications : log et/ou email (VERSION FINALE) + - (b) Bugfix action /materiels/mailDevis + - (b) Divers bugfixes + +------- 25/09/2020 v4.103.7-3.7.9 (EP) - (i) Grosse amélioration et rationalisation de la gestion des notifications : log et/ou email (étape 6) - (i) Les noms et verbes associés aux actions (pour les notifs) sont désormais aussi configurables, et par labo diff --git a/README.md b/README.md index 775a4a8..4edb9a8 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Logiciel testé et validé sur les configurations suivantes : -------------------------------------------------------------------------------------------- Date: 25/09/2020 -Version: 4.103.7-3.7.9 +Version: 4.103.8-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 09c85e2..fe94b5b 100755 --- a/src/Controller/AppController.php +++ b/src/Controller/AppController.php @@ -2282,7 +2282,7 @@ class AppController extends Controller if ( ! isset($_SESSION['Auth']['User']) ) return true; // pb avec QrCode : pas de $this->e, donc on évite - if ($this instanceof QrCodesController) return true; + ////if ($this instanceof QrCodesController) return true; if ( // Pour toutes les actions autres que 'add' ou 'edit' ! in_array($this->a,['add','edit']) @@ -2307,11 +2307,18 @@ class AppController extends Controller ////$this->getEntity($this->e_id); //if (!$this->e->getErrors()) //debug($this->getCurrentEntity()); exit; - if (!$this->getCurrentEntity() || !$this->getCurrentEntity()->getErrors()) + if ( + // Cas de Users avec l'action /users/login par exemple (ou Materiel avec l'action QrCode...) + !$this->getCurrentEntity() + || + // Toutes les autres actions + !$this->getCurrentEntity()->getErrors() + ) { $emails = $this->sendNotificationForEntityAction(); + //debug($emails); + } } } - //debug($emails); //exit; } // afterFilter() @@ -2620,7 +2627,7 @@ class AppController extends Controller function ilog($msg=null) { // true => n'envoie pas de log - $DEBUG = true; + $DEBUG = false; //$controller = $this->request->getParam('controller'); //$action = $this->getActionPassed(); @@ -2894,7 +2901,13 @@ class AppController extends Controller // Fonction d'envoi de mails private function sendEmailTo($subject, $msg, $mail, $config) { - if ($mail != null && ! $config->test) { + /* + debug($subject); + debug($msg); + debug($mail); + exit; + */ + if ($mail != null && !$config->test) { if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { //debug("icii"); $email = new Email(); @@ -3006,13 +3019,14 @@ class AppController extends Controller // PHP5 : // @obsolete public function sendmail($entity, $mode=3, $subject = null, $msg = null) { - $this->sendNotificationForEntityAction($mode,$subject,$msg); + //$this->sendNotificationForEntityAction($mode,$subject,$msg); + $this->sendNotificationForEntityAction($mode, $entity); } - public function sendNotificationForEntityAction($mode=3, $subject = null, $msg = null) { + public function sendNotificationForEntityAction($mode=3, $given_entity=null, $subject = null, $msg = null) { //return null; // true => n'envoie pas de notif - $DEBUG = true; + $DEBUG = false; $control = $this->getName(); //debug($control); exit; @@ -3023,6 +3037,10 @@ class AppController extends Controller $entity = $this->getCurrentEntity(); ////if ( !$entity ) return null; + // Par exemple, pour les actions documents/mail-devis ou users/login ... + if (!$entity && $this->e_id) $entity = $this->getEntity($this->e_id); + //debug($entity); exit; + $entities_name = strtolower($control); // materiels, documents, suivis, emprunts... $entity_name_field = $this->getNameFieldLabel(); if ($entity) @@ -3106,29 +3124,32 @@ class AppController extends Controller $IS_ENTITY_MATERIEL = $entity instanceof Materiel; $IS_ENTITY_LINKED_TO_MATERIEL = false; $entity_types_linked_to_materiel = ['Suivi', 'Emprunt', 'Document']; - foreach ($entity_types_linked_to_materiel as $Entity_type_linked) + foreach ($entity_types_linked_to_materiel as $Entity_type_linked) { // Si c'est une entité liée et qu'elle a bien un Materiel associé // (par exemple pour Document, ce n'est pas forcément le cas car il peut être associé à un Suivi et non un Materiel) //if ( ($entity instanceof $Entity_type_linked) && $entity->materiel_id ) { //if ( is_a($entity, "App\\Model\\Entity\\".$Entity_type_linked) && $entity->materiel_id ) { if ( is_a($entity, "App\\Model\\Entity\\".$Entity_type_linked) ) { - if (! $entity->materiel_id) - throw new \Exception("L'entité $entity devrait être liée à un matériel via son champ FK materiel_id, or ce champ est null !"); - $IS_ENTITY_LINKED_TO_MATERIEL = true; - break; + // On vérifie que cette entité est bien liée à un matériel + // car ce n'est pas toujours le cas. + // Par exemple, un Document peut être lié à un Suivi (au lieu d'un Materiel) + if ($entity->materiel_id) { + $IS_ENTITY_LINKED_TO_MATERIEL = true; + break; + } + //else throw new \Exception("L'entité $entity devrait être liée à un matériel via son champ FK materiel_id, or ce champ est null !"); } + } $IS_ENTITY_OTHER = !$IS_ENTITY_MATERIEL && !$IS_ENTITY_LINKED_TO_MATERIEL; // On définit quelques infos sur le matériel s'il est disponible $materiel = null; $contain = ['SurCategories', 'Categories', 'SousCategories']; - if ($IS_ENTITY_MATERIEL) { + if ($IS_ENTITY_MATERIEL) $materiel = $this->getEntity($entity->id, false, $contain); - } - else { + elseif ($IS_ENTITY_LINKED_TO_MATERIEL) $materiel = $this->getCurrentEntityRelatedMateriel($entity->materiel_id, $contain); - } - + /* * 3) LOG */ @@ -3138,26 +3159,36 @@ class AppController extends Controller // ex: "Document modifié = 'doc-toto' (id=112)" // ex: "Utilisateur connecté = 'Pierre Durand' (id=112)" // ex: "Utilisateur déconnecté = 'Pierre Durand' (id=112)" - if ($this->isNotifierActionSendingLog($action)) { //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity' (id=$id)"; //$msglog = "$entity_type {$action_attrs['past_verb']} = '$entity_name' (id=$id)"; - $msglog = "$entity_type {$action_attrs['past_verb']}"; + $msglog = ucfirst($entity_type).' '.$action_attrs['past_verb']; if ($entity) $msglog .= " = '$entity_name' (id=$id)"; + // Cas particulier d'un Document : on affiche son type + if ($entity instanceof Document) $msglog .= " (type={$entity->type_doc})"; // Si c'est une entité liée à un matériel, on ajoute des infos sur le matériel : " - matériel lié 'tititoto' (url)" if ($IS_ENTITY_LINKED_TO_MATERIEL) { //$msglog .= " - matériel lié '{$materiel->designation}' ($host/materiels/view/{$materiel->id})"; - $msglog .= " - matériel lié '{$materiel->designation}' (id={$materiel->id})"; + $msglog .= " - lié au Materiel '{$materiel->designation}' (id={$materiel->id})"; + } + // CAS TRES PARTICULIER d'un Document lié à un Suivi (et non pas à un Materiel) + if ($IS_ENTITY_OTHER && $entity instanceof Document && $entity->suivi_id) { + //$msglog .= " - suivi lié '{$entity->Suivi->nom}' (id={$entity->suivi_id})"; + $msglog .= " - lié au Suivi (id={$entity->suivi_id})"; } //debug($msglog); //(!$DEBUG) && //$this->isNotifierActionSendingLog($action) && $this->ilog("$entity_name $action_verb = '$entity' (id=$id)"); - $this->isNotifierActionSendingLog($action) && $this->ilog($msglog); + $this->ilog($msglog); } // Si notification email pas demandée, on quitte - ////if (! $this->isNotifierActionSendingEmail($action)) return null; + if (!$DEBUG) if (! $this->isNotifierActionSendingEmail($action) ) return null; + // Si les deux cases "Activer l'envoi des mails.." sont décochées, on se fatigue pas à exécuter la fonction + $configuration = $this->confLabinvent; + if (!$configuration->envoi_mail && !$configuration->envoi_mail_guests) return null; + /* * 4) CRÉATION DU MAIL (sujet et body) @@ -3166,12 +3197,10 @@ class AppController extends Controller * */ - // MESSAGE GÉNÉRIQUE - // Sujet : $subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun$entity_type"; - debug($subject); + $DEBUG && debug($subject); // Message (body) : @@ -3181,6 +3210,8 @@ class AppController extends Controller $msg_mail .= "$user a ".$action_attrs['past_verb']; if ($entity) { $msg_mail .= " $article_le$entity_type '$entity_name'"; + // Cas particulier d'un Document : on affiche son type + if ($entity instanceof Document) $msg_mail .= " (type={$entity->type_doc})"; // (EP) Ajout de l'url (ou id) du materiel //$msg_mail .= $action=='delete' ? " (id=$id)" : " ($host/materiels/view/$id)"; $msg_mail .= $action=='delete' ? " (id=$id)" : " ($host/$entities_name/view/$id)"; @@ -3203,6 +3234,11 @@ class AppController extends Controller } */ //if ($entity instanceof Materiel || $ENTITY_TYPE_LINKED) { + // CAS TRES PARTICULIER d'un Document lié à un Suivi (et non pas à un Materiel) + if ($IS_ENTITY_OTHER && $entity instanceof Document && $entity->suivi_id) { + //$msglog .= " - suivi lié '{$entity->Suivi->nom}' (id={$entity->suivi_id})"; + $msg_mail .= " - lié au Suivi (id={$entity->suivi_id})"; + } if ($IS_ENTITY_MATERIEL || $IS_ENTITY_LINKED_TO_MATERIEL) { $msg_detail = "\n\nAttributs du matériel "; //$materiel = ($entity instanceof Materiel) ? $entity : $this->getMateriel($entity->materiel_id); @@ -3258,19 +3294,23 @@ class AppController extends Controller } // Entité Materiel ou associée // - (3) Matos only (sauf delete, dévalidé, TBA et archive) : Veuillez vérifier... - $actions_no_need_to_be_checked = ['delete', 'statusCreated', 'statusTobearchived', 'statusArchived']; - if ( $entity instanceof Materiel && !in_array($action,$actions_no_need_to_be_checked) ) - $msg_mail .= "\n\nVeuillez vérifier et compléter si besoin la fiche correspondante."; + $actions_no_need_to_be_checked = ['view', 'index', 'delete', 'statusCreated', 'statusTobearchived', 'statusArchived']; + if ( $IS_ENTITY_MATERIEL && !in_array($action,$actions_no_need_to_be_checked) ) + $msg_mail .= "\n\nVeuillez vérifier et compléter si besoin la fiche correspondante."; // - (4) TOUS : Vous recevez ce message car... (raison) if ($entity) { $msg_mail .= "\n\nVous recevez ce message car"; $raison = " vous êtes concerné(e) par cette action effectuée sur l'inventaire des matériels du laboratoire"; - $raison .= "\n\n(vous êtes l'utilisateur du matériel, ou bien le gestionnaire, ou encore le responsable thématique, métier ou projet)"; - $raison .= "\n\n(ou alors, vous êtes dans la liste mail spécifique gérée via la page de configuration du logiciel LabInvent)."; + if ($action == 'mailDevis') + $raison .= "\n\n(vous êtes le gestionnaire de référence du matériel)"; + else + $raison .= "\n\n(vous êtes l'utilisateur du matériel, ou bien le gestionnaire, ou encore le responsable thématique, métier ou projet)"; + if ($action != 'mailDevis') + $raison .= "\n\n(ou alors, vous êtes dans la liste mail spécifique gérée via la page de configuration du logiciel LabInvent)."; $msg_mail .= $raison; } - debug($msg_mail); + $DEBUG && debug($msg_mail); // Par défaut /* @@ -3278,11 +3318,12 @@ class AppController extends Controller $msg = "$acteur a effectué l'action \"$action\" sur le matériel \"$nom_materiel\""; */ - exit; + // PLUS BESOIN DE TOUT CE BLABLA TROP SPÉCIFIQUE /* + /S * - mail pour un MATERIEL - */ + S/ // if ($entity != null) { if ($entity instanceof Materiel) { @@ -3351,7 +3392,7 @@ class AppController extends Controller $msgMore .= "\n\n$attrs[1] : " . $val; } if ($msgMore) $msg .= $msgMore; - /* + /S //if ($materiel->sur_categorie_id != "") if ($materiel->sur_categorie_id) { $val = $materiel->has('sur_category') ? $materiel->sur_category->nom : $materiel->sur_categorie_id; @@ -3364,7 +3405,7 @@ class AppController extends Controller //if ($materiel->description != "") if ($materiel->description) $msgMore .= "\n\nDescription :\n" . $materiel->description; - */ + S/ // Dans la liste des mails, on ajoute l'utilisateur (responsable) du matériel //$mailList[0] = $materiel->email_responsable; @@ -3385,9 +3426,9 @@ class AppController extends Controller $entity instanceof Document ) { - /* + /S * - mail pour un DOCUMENT LIÉ - */ + S/ // @todo: ajouter quelques infos dans ces cas : if ($entity instanceof Document) { @@ -3438,7 +3479,7 @@ class AppController extends Controller } $msg .= "\n\n (id doc = {$doc->id}, id du $entity_name associé = $id)"; $nomFic =$id."_".$nom_doc."_".$id_doc.".".$type_doc; - /* + /S //if (!$id_mat == Null) { if ($id_mat) { $msg .= "\n\n (id doc=".$doc->id.", Materiel associé d'id=\"$id_mat\")"; @@ -3447,7 +3488,7 @@ class AppController extends Controller $msg .= "\n\n (id doc=".$doc->id.", Suivi associé d'id=\"$id_suiv\")"; $nomFic =$id_suiv."_".$nom_doc."_".$id_doc.".".$type_doc; } - */ + S/ } // sujet null // Si le doc est attaché à un matériel, on recupère ce matériel @@ -3465,45 +3506,41 @@ class AppController extends Controller } // Entités (Entity) liées à un Materiel - /* + /S * @todo: * else if ($entity instanceof Configuration) { * ; * } * ... etc ... (il faut qu'on soit plus précis) - */ + S/ - + */ /* * 4) DESTINATAIRES du mail : on construit la liste des destinataires */ - // Si l'action n'est pas autorisée à envoyer un mai => on quitte - if (! $this->isNotifierActionSendingEmail($action) ) return null; - - // Si les deux cases "Activer l'envoi des mails.." sont décochées, on se fatigue pas à exécuter la fonction - $configuration = $this->confLabinvent; - if (!$configuration->envoi_mail && !$configuration->envoi_mail_guests) return null; - // Pas de matériel défini => pas de mail (pas de bras, pas de chocolat) ! - if ($materiel == null) return null; + ////if ($materiel == null) return null; $mailList = []; /* - * 4a) Envoi général + * 4a) Envoi général (uniquement pour les entités liées à un matériel) * * 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 + * - (1) le proprio (l'utilisateur) du matériel (sauf s'il est l'acteur de l'action) + * - (2) le gestionnaire de référence du matos + * - (3) les responsables thématiques et métier * - (TODO:) les responsables (scientifique et chef projet) du projet */ + + if (!$IS_ENTITY_OTHER) { + //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) + // - (1) Ajout de l'utilisateur du matériel (sauf s'il est l'acteur de l'action) /* debug($acteur); debug($this->userName); @@ -3515,7 +3552,11 @@ class AppController extends Controller //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) + // - (2) Ajout du Gestionnaire de référence du matos (s'il y en a un) + if ($materiel->gestionnaire_id) { + $gestionnaire_ref_email = TableRegistry::getTableLocator()->get('Users')->get($materiel->gestionnaire_id)->email; + $mailList[] = $gestionnaire_ref_email; + } /* if ($materiel->gestionnaire_id) $mailList[] = TableRegistry::getTableLocator()->get('Users') @@ -3527,11 +3568,9 @@ class AppController extends Controller ->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 + // - (3) Ajout des Responsables de groupe thématique ou métier /* $mailsRespMetier = []; $mailRespThematique = []; @@ -3609,6 +3648,9 @@ class AppController extends Controller */ } // si envoi général activé + } // uniquement pour entité liée à un matériel + + /* * 4b) Envoi à la liste spécifique * @@ -3667,7 +3709,7 @@ class AppController extends Controller break; } */ - $DEBUG && debug($mailList); + //$DEBUG && debug($mailList); //$DEBUG && exit; /* @@ -3709,13 +3751,17 @@ class AppController extends Controller //$mailList = array_unique($mailList); // ... Pour envoyer les mails aux personnes concernees + // Si action 'mailDevis', on envoie un mail SEULEMENT au gestionnaire de référence du matériel + if ($action == 'mailDevis') $mailList = [$gestionnaire_ref_email]; //$mailList = ['epallier@irap.omp.eu']; - $mailList = ['etiennoury@gmail.com']; - foreach ($mailList as $mail) { + //$mailList = ['etienne.pallier@irap.omp.eu']; + //$mailList = ['etiennoury@gmail.com']; + foreach ($mailList as $email_addr) { // 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 //if ($mail == $_SESSION['Auth']['User']['mail'][0]) //continue; - $message = $msg; // Sisi, cette variable $message est utile, m'enfin vous pouvez toujours essayer de la supprimer ..... Et pensez à regarder le contenu de vos mails !!! Sinon ca fait une tumeur + //$message = $msg; // Sisi, cette variable $message est utile, m'enfin vous pouvez toujours essayer de la supprimer ..... Et pensez à regarder le contenu de vos mails !!! Sinon ca fait une tumeur + $message = $msg_mail; // 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) @@ -3723,8 +3769,10 @@ class AppController extends Controller $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, 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 { @@ -3741,41 +3789,44 @@ class AppController extends Controller //} */ //if ($entity != null && !in_array($action, ['delete','statusValidated','statusCreated'])) { - if ($entity != null) { - //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 - - $DEBUG && debug($message); - //debug($message); exit; - //debug($mode); - - if (! $DEBUG) switch($mode) { - - //si le mode 1 est sélectionné c'est un envoi de mail avec ajout d'une photo - //explique le document qui a été ajouté, et le met en pièce jointe - case 1 : - $this->sendEmailImgTo("$subject", $message, $mail, $configuration, $nomFic); - break; - - //si le mode 2 est sélectionné c'est un envoi de mail avec ajout d'un document - //à personnaliser - case 2 : - $this->sendEmailPJTo("$subject", $message, $mail, $configuration, $nomFic); - break; - - //si le mode defaut est sélectionné c'est un simple envoi de mail - //récapitule une action (mieux pour les add...) - default : - $this->sendEmailTo("$subject", $message, $mail, $configuration); - break; + ////if ($entity != null) { + //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; + */ + + // Si action 'mailDevis', on ajoute le nom du fichier attaché + if ($action == 'mailDevis') { + // On change le contenu en fonction de si le document a été lié à un matériel ou à un suivi + $id_mat = $entity->materiel_id; + $id_suiv = $entity->suivi_id; + $id = $id_mat ? $id_mat : $id_suiv; + //$msg .= "\n\n (id doc = {$doc->id}, id du $entity_name associé = $id)"; + $nomFic = $id."_".$entity->nom."_".$entity->id.".".$entity->type_doc; + //$subject = "$acteur a partagé un document avec vous"; + //$msg = "$acteur après avoir ajouté le document \"$nom_doc\", a voulu le partager avec vous, c'est un document ayant le format \"$type_doc\" ."; + //$msg .="\n\n Le document est en pièce jointe."; + //si le mode 1 est sélectionné c'est un envoi de mail avec ajout d'une photo (explique le document qui a été ajouté, et le met en pièce jointe) + //si le mode 2 est sélectionné c'est un envoi de mail avec ajout d'un doc à personnaliser + $fn = $entity->photo ? 'sendEmailImgTo' : 'sendEmailPJTo'; + !$DEBUG && $this->$fn("$subject", $message, $email_addr, $configuration, $nomFic); + } + // Pour toutes les autres actions, mode par defaut (3) => simple envoi de mail + else { + //debug($subject); + //debug($message); + !$DEBUG && $this->sendEmailTo("$subject", $message, $email_addr, $configuration); + } - } // switch - } + ////} // entity not null + } //foreach ($mailList as $mail) - return $mailList; + $DEBUG && debug($mailList); + $DEBUG && exit; + + return $mailList; } // sendmail() diff --git a/src/Controller/DocumentsController.php b/src/Controller/DocumentsController.php index 3bbce20..926dd2f 100755 --- a/src/Controller/DocumentsController.php +++ b/src/Controller/DocumentsController.php @@ -54,6 +54,7 @@ class DocumentsController extends AppController 'add' => 'both', 'edit' => 'log', 'delete' => 'both', + 'mailDevis' => 'both', // ... ]); /* @@ -1017,7 +1018,7 @@ class DocumentsController extends AppController /** MI - * Envoi de mail - cette fonction sera appelée si l'on clique sur le bouton envelloppe d'un document sur la page vue d'un matériel + * Envoi de mail - cette fonction sera appelée si l'on clique sur le bouton enveloppe d'un document sur la page vue d'un matériel * Met en place l'envoi de mail * @param string $id : document id */ diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index c3fb023..ff13c2e 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -288,10 +288,10 @@ class MaterielsController extends AppController { 'statusCreated' => ['Dé-validation','dé-validé'], 'statusValidated' => ['Validation','validé'], //TODO: spécial - 'statusTobearchived' => ["Demande d'archivage","demandé l'archivage", '', "d'un"], + 'statusTobearchived' => ["Demande d'archivage","demandé l'archivage", '', "d'un "], 'statusArchived' => ['Archivage','archivé'], - 'setLabelIsPlaced' => ["Positionnement d'étiquette","posé l'étiquette", 'sur un', 'sur un'], - 'printLabelRuban' => ["Impression de l'étiquette", "imprimé l'étiquette", '', 'sur un'], + 'setLabelIsPlaced' => ["Positionnement d'étiquette","posé l'étiquette", 'sur un ', 'sur le '], + 'printLabelRuban' => ["Impression de l'étiquette", "imprimé l'étiquette", '', 'sur le '], ]); @@ -304,15 +304,24 @@ class MaterielsController extends AppController { * */ $this->setNotificationAllowedOnActions([ + + // CRUD 'add' => 'both', - 'edit' => 'log', + //'edit' => 'log', + //'edit' => 'mail', + 'edit' => 'both', 'delete' => 'both', //'view', + + // status changed 'statusCreated' => 'log', 'statusTobearchived' => 'both', 'statusValidated' => 'both', 'statusArchived' => 'both', // ... + + // autres + 'printLabelRuban' => 'log', 'setLabelIsPlaced' => 'log', ]); /* @@ -474,15 +483,54 @@ class MaterielsController extends AppController { // 2) Puis on fait nos petites règles locales pour notre petit labo à nous tout seul /* - // a) Adaptation des règles de notification - // Actions de ce controleur qui enverront des notifications (emails) + * a) Noms et verbes à utiliser (surtout dans les notifications) pour les actions + * + */ + /* + $this->setActionsNounAndPastVerb([ + // Changement des noms et verbes utilisés pour la notif sur l'action 'dévalider' + 'statusCreated' => ['Dé-VAvalidation','dé-VAvalidé'], + + 'statusValidated' => ['Validation','validé'], + 'statusTobearchived' => ["Demande d'archivage","demandé l'archivage", '', "d'un "], + 'statusArchived' => ['Archivage','archivé'], + 'setLabelIsPlaced' => ["Positionnement d'étiquette","posé l'étiquette", 'sur un ', 'sur le '], + 'printLabelRuban' => ["Impression de l'étiquette", "imprimé l'étiquette", '', 'sur le '], + ]); + */ + + /* + * b) Actions de ce controleur qui enverront des notifications (log et/ou email) + * + * 'log' = logger seulement + * 'mail' => envoyer un mail seulement + * 'both' = faire les 2 (logger ET envoyer un mail) + * + */ + /* $this->setNotificationAllowedOnActions([ - 'add', 'edit', 'delete', - 'statusCreated', 'statusTobearchived', 'statusValidated', 'statusArchived', + // CRUD + 'add' => 'both', + 'edit' => 'log', + 'delete' => 'both', + //'view', + // status changed + 'statusCreated' => 'log', + 'statusTobearchived' => 'both', + 'statusValidated' => 'both', + 'statusArchived' => 'both', // ... + // autres + 'printLabelRuban' => 'log', + 'setLabelIsPlaced' => 'log', ]); + */ - // b) Adaptation des règles d'accès (ACLs) + /* + * c) Règles d'accès (ACLs) + * + */ + /* // - Adaptation de la règle pour "ajout par copie" $this->setAuthorizationsForAction('add_by_copy', '', ['CREATED',0], [ 'user' => ['CREATED',1], @@ -501,6 +549,7 @@ class MaterielsController extends AppController { ]); */ } + // Méthode de définition des autorisations SPÉCIFIQUES au laboratoire CRAL protected function setAuthorizations_CRAL() { $this->d("SPECIFIC CRAL!"); @@ -3718,7 +3767,7 @@ class MaterielsController extends AppController { $this->printLabel('ruban', $id, $from); //(EP202009) //$this->sendEmail($this->Materiels->get($id)); - $this->sendmail($this->Materiels->get($id)); + ////$this->sendmail($this->Materiels->get($id)); } diff --git a/src/Controller/UsersController.php b/src/Controller/UsersController.php index 6388f59..541f058 100755 --- a/src/Controller/UsersController.php +++ b/src/Controller/UsersController.php @@ -82,7 +82,7 @@ class UsersController extends AppController * */ $this->setNotificationAllowedOnActions([ - //'login' => 'log', + 'login' => 'log', // Ne marchera pas car pas d'utilisateur en session //'logout' => 'log', diff --git a/src/Model/Table/AppTable.php b/src/Model/Table/AppTable.php index 382ce67..be15aeb 100644 --- a/src/Model/Table/AppTable.php +++ b/src/Model/Table/AppTable.php @@ -54,8 +54,9 @@ class AppTable extends Table return $success; } public function delete(EntityInterface $entity, $options = []) { + $DEBUG = false; $this->current_entity = $entity; - //return parent::delete($entity,$options); + if (!$DEBUG) return parent::delete($entity,$options); return true; } -- libgit2 0.21.2