Recevoir un journal d'activité par mail avec le module Drupal 8 Entity Activity

boite aux lettres

Dans un précédent billet j'ai eu l'occasion de présenter le module Entity Activity qui nous permet de mettre en place un système de notification sur tout type d'entité de contenu de Drupal 8, selon les 3 principales actions de leur cycle de vie : création, mise à jour et suppression.

Depuis la version bêta 8, le module Entity Activity intègre un sous-module, Entity Activity Mail, qui nous permet désormais d'envoyer par mail un résumé des notifications générées pour chaque utilisateur, selon une fréquence qui est paramétrable par chaque utilisateur.

Configuration générale

Le module propose plusieurs options de configuration générale.

Entity Activity Mail General settings

Les principales options de configuration, outre la possibilité de stopper l'envoi des notifications par mail globalement, sont :

  • La possibilité d'exclure les notifications, qui ont été marquées comme lu, du rapport envoyé par mail
  • La définition de l'heure à laquelle les taches d'arrière-plan seront lancées pour générer tous les rapports de notification pour chaque utilisateur, puis générer leur envoi. Les taches lancées peuvent être ici très chronophages selon le volume des notifications et d'utilisateurs, aussi il est recommandé de configurer le cron du site au niveau du serveur pour que le Cron soit lancé à minima toutes les heures afin que les files d'attente en charge de la génération des rapports et de l'envoi par mail des rapports soient traitées complètement.
  • La possibilité de journaliser l'envoi de chaque rapport à des fins d'historique ou de debug.

Nous avons également la possibilité de personnaliser le mail du rapport des notifications.

Entity Activty Mail mail settings

 

Notamment nous pouvons personnaliser le mail expéditeur (laisser vide pour utiliser le mail du site), le sujet du mail, un texte affiché avant le rapport des notifications et enfin un texte affiché après le rapport (pied de page).

Il est vivement recommandé d'utiliser le module SwiftMailer pour permettre l'envoi des mails au format HTML, ou tout autre solution à votre convenance pour vous assurer que les mails expédiés soient bien au format HTML, pour une intégration et un theming plus aisé des rapports générés et expédiés.

Configuration pour les utilisateurs

Afin de permettre à chaque utilisateur de sélectionner la fréquence à laquelle il souhaite recevoir le rapport des notifications, nous devons configurer le composant Logs report frequency sur l'affichage du formulaire des utilisateurs.

Widget frequency

Ce composant va permettre à chaque utilisateur de paramétrer son compte selon ses préférences.

Frequency options

Ainsi, un utilisateur peut choisir de :

  • Ne jamais recevoir de rapport par mail
  • Recevoir un mail à chaque notification généré (immédiatement)
  • Recevoir un rapport journalier, hebdomadaire ou encore mensuel.

Theming du rapport

Le mail du rapport des notifications peut être thémé en surchargeant le template de base fourni par le module : entity-activity-mail-report.html.twig

Le template de base se charge de rendre chaque notification selon le mode d'affichage Mail, mode de rendu que vous pouvez personnaliser à ce niveau, avec la variable logs_content qui contient un tableau de rendu de toutes les entités logs dans ce mode d'affichage. Pour des besoins plus fins, le template Twig dispose avec la variable logs de toutes les entités Log qui composent le rapport. Si vos besoins sont plus avancés, vous pouvez toujours demander une intervention d'un Freelance Drupal qui pourra très certainement personnaliser le rendu selon vos attentes.

En guise de conclusion

En quelques clics nous pouvons désormais proposer aux utilisateurs de recevoir un rapport de notifications selon leur préférence.

Comme nous l'avons dit plus haut la génération et l'envoi par mail de ces rapports peut être très chronophage aussi le module fonctionne en 3 étapes : tout d'abord il collecte tous les utilisateurs éligibles selon leur fréquence d'envoi, puis pour chaque utilisateur une file de traitement est en charge de générer le rapport, puis une autre file de traitement est en charge de l'envoi par mail proprement dit. Ces trois étapes permettent de fluidifier la génération et l'envoi des rapports, mais il faut bien avoir en tête que les files de traitement ne sont exécutées que lors du lancement du Cron du site. C'est pourquoi il est très vivement recommandé de lancer le Cron depuis le serveur hégergeant le site à minima toutes les heures, ou moins selon le volume (nombre d'utilisateurs, estimation du nombre de notifications) de votre projet Drupal.

Enfin, le développement de cet ajout fonctionnel a été sponsorisé par Gallimedia. Merci donc à eux.

 

Ajouter un commentaire