Commit a6582098 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Documentation

parent a8004087
Loading
Loading
Loading
Loading
Loading
+5 −3
Changes for SQL/001_tables.sql: 5 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -2,15 +2,17 @@ create table unicaen_mail_mail
(
    id serial not null constraint umail_pkey primary key,
    date_envoi timestamp not null,
    status_envoi integer not null,
    status_envoi varchar(256) not null,
    destinataires text not null,
    redirection boolean not null,
    sujet text,
    corps text,
    attachement_type varchar(256),
    attachement_id integer,
    entity_class varchar(1024),
    entity_id varchar(256),
    template_code varchar(256)
);

create unique index ummail_id_uindex on unicaen_mail_mail (id);


+8 −0
Changes for SQL/002_privileges.sql: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- MAIL

INSERT INTO unicaen_privilege_categorie (id ,code, libelle, ordre, namespace) VALUES (next_val('unicaen_privilege_categorie_id_seq'), 'mail', 'UnicaenMail - Gestion des mails', 9000, 'UnicaenMail\Provider\Privilege');
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val('unicaen_privilege_privilege_id_seq'), current_val('unicaen_privilege_categorie_id_seq'), 'mail_index', 'Affichage de l''index', 10);
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val('unicaen_privilege_privilege_id_seq'), current_val('unicaen_privilege_categorie_id_seq'), 'mail_afficher', 'Afficher un mail', 20);
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val('unicaen_privilege_privilege_id_seq'), current_val('unicaen_privilege_categorie_id_seq'), 'mail_reenvoi', 'Ré-envoi d''un mail', 30);
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val('unicaen_privilege_privilege_id_seq'), current_val('unicaen_privilege_categorie_id_seq'), 'mail_supprimer', 'Suppression d''un mail', 40);
INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre) VALUES (next_val('unicaen_privilege_privilege_id_seq'), current_val('unicaen_privilege_categorie_id_seq'), 'mail_test', 'Envoi d''un mail de test', 100);
 No newline at end of file
+1 −1
Changes for config/merged/mail.config.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ return array(
                    'administration' => [
                        'pages' => [
                            'mail' => [
                                'label' => 'Mail (NEUE)',
                                'label' => 'Mail',
                                'route' => 'mail',
                                'resource' => PrivilegeController::getResourceId(MailController::class, 'index'),
                                'order'    => 9003,
+27 −0
Changes for config/unicaen-mail.local.php.dist: 27 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php
/**
 * Configuration locale du module UnicaenMail.
 */
return [
    'unicaen-mail' => [
        /**
         * Options concernant l'envoi de mail par l'application
         */
        'transport_options' => [
            'host' => 'XXX.XXX.XX',
            'port' => 'XX',
        ],
        /**
         * Adresses des redirection si do_not_send est à true
         */
        'redirect_to' => ['XXX@XXX.XX', ],
        'do_not_send' => true,

        /**
         * Configuration de l'expéditeur
         */
        'sigle' => 'XXX',
        'expediteur' => 'XXX : XXXX XX XXXXXXX',
        'email' => 'ne-pas-repondre@XXXX.XX'
    ],
];
 No newline at end of file
+125 −0
Changes for readme.md: 125 added lines, 0 removed lines.
Original line number Diff line number Diff line
Module Unicaen Renderer
=======================
------------------------

Description
-----------
Le module **unicaen/mail** est en charge de l'envoi et du stockage des courriers électroniques.

Le module fournit un menu dans Administration > Mail permettant d'accéder au listing des mails et des actions liés à ceux-ci.

Description du fonctionnement
============================

Les mails
----------

Mail sont stocké en base avec les informations suivantes :
* destinataire (redirection ou pas)
* date d'envoi
* status
* sujet/corps
* meta-information (entité liée + template utilisé)

Mail service est en chage de faire l'envoi et l'enregistrement en base.

Exemple d'utilisation sans utilisation d'un template
```php
$mail = $this->getMailService()->sendMail('john.doe@aol.com', 'Reunion importante', 'Bonjour nous avons ...');
```

Exemple d'utilisation avec utilisation d'un template + entité liée
```php
$contenu = $this->getContenuService()->generateContenu('MON TEMPLATE', ['VAR1' => $var1, 'VAR2' => $var2, ...]);
$mail = $this->getMailService()->sendMail('john.doe@aol.com', $contenu->getSujet(), $contenu->getCorps());
$mail->setEntity($campagne);
$mail->setTemplateCode($contenu->getTemplate()->getCode());
$this->getMailService()->update($mail);
```

Aides de vue founies
--------------------

```php
'view_helpers' => [
    'invokables' => [
        'mail' => MailViewHelper::class,
        'mails' => MailsViewHelper::class,
    ],
],
```

`$this->mail($monMails)` : Affiche un mail généré avec description à gauche et texte générée à droite.
`$this->mails($monTableauDeMails)` : Affiche une table avec un ligne par mail et founi les actions associées.

***Attention !!!*** l'aide `mails` peut recevoir un tableau permettant de bricoler les droits des actions. 

Configuration
=============

La configuration local à fournir est disponible dans [mail/config/unicaen-mail.local.php.dist]

```php
<?php
/**
 * Configuration locale du module UnicaenMail.
 */
return [
    'unicaen-mail' => [
        /**
         * Options concernant l'envoi de mail par l'application
         */
        'transport_options' => [
            'host' => 'XXX.XXX.XX',
            'port' => 'XX',
        ],
        /**
         * Adresses des redirection si do_not_send est à true
         */
        'redirect_to' => ['XXX@XXX.XX', ],
        'do_not_send' => true,
        
        /**
         * Configuration de l'expéditeur
         */
        'sigle' => 'XXX',
        'expediteur' => 'XXX : XXXX XX XXXXXXX',
        'email' => 'ne-pas-repondre@XXXX.XX'
    ],
];
```

Tables pour les données du modules
==================================

**N.B.** Le script permettant de créer les tables est fourni dans le fichier [mail/SQL/001_tables.sql]

**unicaen_mail_mail** : table stockant les mails

| Column | Type | Obligatoire | Unique | Description |
|---|---|---|---|---|
| id | int | true | true | identifiant numerique de la macro |
| date_envoi | timestamp| true | false | date de l'envoi du mail |
| status_envoi | varchar(256) | true | false | Statut "indicatif" de l'envoi : FAILED, SUCCESS, PENDING |
| destinataires | text | true | false | chaines de caractères concaténant les adresse des destinataires |
| redirection | boolean| true | false | TRUE si il s'agit d'une redirection |
| sujet | text | false | false | sujet du mail |
| corps | text | false | false | corps du mail |
| entity_class | varchar(256) | false | false | classname de l'entité lié au mail |
| entity_id | varchar(256) | false | false | id de l'entité lié au mail |
| template_code | varchar(256) | false | false | code du template utilisé |

Privilèges associés au module
=============================

**N.B.** Le script permettant de créer les tables est fourni dans le fichier [mail/SQL/002_privileges.sql]

```php
const MAIL_INDEX                            = 'mail-mail_index';
const MAIL_AFFICHER                         = 'mail-mail_afficher';
const MAIL_TEST                             = 'mail-mail_test';
const MAIL_REENVOI                          = 'mail-mail_reenvoi';
const MAIL_SUPPRIMER                        = 'mail-mail_supprimer';
```

***Attention !!!*** Penser à donner les privilèges aux rôles adéquats.