Overview
Comment:Nouveau signal pour les plugins : email.envoi permet de déléguer l'envoi de message à un plugin
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: bd31c18e813662f6e516e461fe65d8ba598e9906
User & Date: bohwaz on 2018-08-10 21:02:11
Other Links: branch diff | manifest | tags
Context
2018-08-10
21:55
Ne plus autoriser les identifiants de plugin contenant des majuscules, des tirets ou des points check-in: b7cf1d181e user: bohwaz tags: dev
21:02
Nouveau signal pour les plugins : email.envoi permet de déléguer l'envoi de message à un plugin check-in: bd31c18e81 user: bohwaz tags: dev
20:37
Permettre de désactiver la fonction site web public check-in: 2d9f291194 user: bohwaz tags: dev
Changes

Modified src/config.dist.php from [90199df4e4] to [4b1bdaf310].

233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
 * TLS = connexion TLS native (le plus sécurisé)
 * STARTTLS = utilisation de STARTTLS (moyennement sécurisé)
 *
 * Défaut : STARTTLS
 */
const SMTP_SECURITY = 'STARTTLS';

/**
 * Personnalisation de la méthode utilisée pour l'envoi d'emails
 * 
 * Doit être un callback valide en PHP : string ou tableau
 * Les fonctions anonymes ne sont pas acceptées.
 * 
 * Utile pour par exemple déléguer l'envoi d'email à une queue d'envoi
 * ou autre.
 * 
 * Les arguments passé à la méthode seront :
 * @param string $recipient Adresse email du destinataire
 * @param string $subject Sujet du mail
 * @param string $content Contenu du mail
 * @param integer|null $id_membre ID unique du membre (ou null si le destinataire n'est pas un membre)
 * @param string|null $pgp_key Clé PGP du destinataire si le message doit être chiffré
 * 
 * Défaut : ['Garradin\Utils', 'mail']
 */
const SEND_EMAIL_CALLBACK = ['Garradin\Utils', 'mail'];

/**
 * Activer les sauvegardes automatiques
 * 
 * Utile à désactiver si vous avez déjà des sauvegardes effectuées
 * automatiquement au niveau du système.
 * 
 * Sinon les sauvegardes seront effectuées soit par la tâche cron







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







233
234
235
236
237
238
239




















240
241
242
243
244
245
246
 * TLS = connexion TLS native (le plus sécurisé)
 * STARTTLS = utilisation de STARTTLS (moyennement sécurisé)
 *
 * Défaut : STARTTLS
 */
const SMTP_SECURITY = 'STARTTLS';





















/**
 * Activer les sauvegardes automatiques
 * 
 * Utile à désactiver si vous avez déjà des sauvegardes effectuées
 * automatiquement au niveau du système.
 * 
 * Sinon les sauvegardes seront effectuées soit par la tâche cron

Modified src/include/init.php from [be38061631] to [bfe2446b5f].

105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
    'SMTP_HOST'             => false,
    'SMTP_USER'             => null,
    'SMTP_PASSWORD'         => null,
    'SMTP_PORT'             => 587,
    'SMTP_SECURITY'         => 'STARTTLS',
    'ADMIN_URL'             => WWW_URL . 'admin/',
    'NTP_SERVER'            => 'fr.pool.ntp.org',
    'SEND_EMAIL_CALLBACK'   => ['Garradin\Utils', 'mail'],
    'ENABLE_AUTOMATIC_BACKUPS' => true,
];

foreach ($default_config as $const => $value)
{
    $const = sprintf('Garradin\\%s', $const);








<







105
106
107
108
109
110
111

112
113
114
115
116
117
118
    'SMTP_HOST'             => false,
    'SMTP_USER'             => null,
    'SMTP_PASSWORD'         => null,
    'SMTP_PORT'             => 587,
    'SMTP_SECURITY'         => 'STARTTLS',
    'ADMIN_URL'             => WWW_URL . 'admin/',
    'NTP_SERVER'            => 'fr.pool.ntp.org',

    'ENABLE_AUTOMATIC_BACKUPS' => true,
];

foreach ($default_config as $const => $value)
{
    $const = sprintf('Garradin\\%s', $const);

Modified src/include/lib/Garradin/Utils.php from [f7ad314b8e] to [fbda8b8bf3].

658
659
660
661
662
663
664


665








666
667
668
669
670
671
672
    {
        // Ne pas envoyer de mail à des adresses invalides
        if (!SMTP::checkEmailIsValid($recipient, false))
        {
            throw new UserException('Adresse email invalide: ' . $recipient);
        }



        return call_user_func(SEND_EMAIL_CALLBACK, $recipient, $id_membre, $subject, $content, $pgp_key);








    }

    static public function mail($to, $subject, $content, $id_membre, $pgp_key)
    {
        $headers = [];
        $config = Config::getInstance();








>
>
|
>
>
>
>
>
>
>
>







658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
    {
        // Ne pas envoyer de mail à des adresses invalides
        if (!SMTP::checkEmailIsValid($recipient, false))
        {
            throw new UserException('Adresse email invalide: ' . $recipient);
        }

        // Tentative d'envoi du message en utilisant un plugin
        $email_sent_via_plugin = Plugin::fireSignal('email.envoi', compact($recipient, $subject, $content, $id_membre, $pgp_key));

        if (!$email_sent_via_plugin)
        {
            // L'envoi d'email n'a pas été effectué par un plugin, utilisons l'envoi interne
            // via mail() ou SMTP donc
            return self::mail($recipient, $subject, $content, $id_membre, $pgp_key);
        }

        return true;
    }

    static public function mail($to, $subject, $content, $id_membre, $pgp_key)
    {
        $headers = [];
        $config = Config::getInstance();