From 176f6d5127f6ce4e1aa82898aa40e062667a8723 Mon Sep 17 00:00:00 2001 From: clem Date: Sat, 4 Jul 2020 01:47:52 +0200 Subject: [PATCH 01/48] =?UTF-8?q?message=20plus=20explicite=20pour=20l'?= =?UTF-8?q?=C3=A9dition=20avec=20les=20crayons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inclure/gamumail_config.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index 78b180a..13457ce 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -29,15 +29,15 @@

Emails en copie "cc" des différents messages - [(#CONFIG{gamumail/mail_cc}|sinon{cliquer})] + [(#CONFIG{gamumail/mail_cc}|sinon{double clic pour éditer})]

-

Si plusieurs emails, les séparer par une virgule

+

Si plusieurs emails, les séparer par une virgule. Double clic pour éditer

Emails en copie cachée "cci" des différents messages - [(#CONFIG{gamumail/mail_cci}|sinon{cliquer})] + [(#CONFIG{gamumail/mail_cci}|sinon{double clic pour éditer})]

-

Si plusieurs emails, les séparer par une virgule

+

Si plusieurs emails, les séparer par une virgule. Double clic pour éditer

From 9c50fa47aae5d95076c6dead1c8da7a8123c1358 Mon Sep 17 00:00:00 2001 From: clem Date: Sat, 4 Jul 2020 01:51:02 +0200 Subject: [PATCH 02/48] suite de la modif --- inclure/gamumail_config.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index 13457ce..931075b 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -29,15 +29,15 @@

Emails en copie "cc" des différents messages - [(#CONFIG{gamumail/mail_cc}|sinon{double clic pour éditer})] + [(#CONFIG{gamumail/mail_cc}|sinon{double clic pour éditer})]

-

Si plusieurs emails, les séparer par une virgule. Double clic pour éditer

+

Si plusieurs emails, les séparer par une virgule. Double clic pour éditer.

Emails en copie cachée "cci" des différents messages - [(#CONFIG{gamumail/mail_cci}|sinon{double clic pour éditer})] + [(#CONFIG{gamumail/mail_cci}|sinon{double clic pour éditer})]

-

Si plusieurs emails, les séparer par une virgule. Double clic pour éditer

+

Si plusieurs emails, les séparer par une virgule. Double clic pour éditer.

From e52663de9bf026872cdf9c84f3e4461cc362d5eb Mon Sep 17 00:00:00 2001 From: tofulm Date: Thu, 16 Jul 2020 15:44:05 +0200 Subject: [PATCH 03/48] compat spip 32 --- paquet.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paquet.xml b/paquet.xml index 490c6f0..7592001 100644 --- a/paquet.xml +++ b/paquet.xml @@ -3,7 +3,7 @@ categorie="communication" version="1.0.6" etat="dev" - compatibilite="[3.3.0-dev;3.3.*]" + compatibilite="[3.2.0;3.3.*]" logo="prive/themes/spip/images/gamumail-64.png" documentation="" schema="1.0.5" From 01cdfba81aecb5486523338591d89bf4e11f5b2f Mon Sep 17 00:00:00 2001 From: clem Date: Wed, 19 Aug 2020 01:30:29 +0200 Subject: [PATCH 04/48] =?UTF-8?q?un=20d=C3=A9but=20de=20form=20de=20cr?= =?UTF-8?q?=C3=A9ation=20de=20slug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/editer_slug.html | 34 +++++++++++++++ css/gamumail.css | 1 + formulaires/editer_slug.html | 84 ++++++++++++++++++++++++++++++++++++ formulaires/editer_slug.php | 71 ++++++++++++++++++++++++++++++ inclure/gamumail_config.html | 72 +++++++++++++++---------------- 5 files changed, 224 insertions(+), 38 deletions(-) create mode 100644 content/editer_slug.html create mode 100644 formulaires/editer_slug.html create mode 100644 formulaires/editer_slug.php diff --git a/content/editer_slug.html b/content/editer_slug.html new file mode 100644 index 0000000..5a10656 --- /dev/null +++ b/content/editer_slug.html @@ -0,0 +1,34 @@ +[(#REM) + la page d'édition d'un modèle pour GamuMail +] +[(#AUTORISER{webmestre}|sinon_interdire_acces)] +
+
+ [(#FORMULAIRE_EDITER_SLUG{#ENV{id_gamumail,0}, #ENV{redirect}})] +
+
+ diff --git a/css/gamumail.css b/css/gamumail.css index 96d810d..5ffa748 100644 --- a/css/gamumail.css +++ b/css/gamumail.css @@ -176,3 +176,4 @@ .editer_cci label { width: 50px; } + diff --git a/formulaires/editer_slug.html b/formulaires/editer_slug.html new file mode 100644 index 0000000..42c9746 --- /dev/null +++ b/formulaires/editer_slug.html @@ -0,0 +1,84 @@ +
+ +[

(#ENV*{message_erreur})

] +[

(#ENV*{message_ok})

] + +
+ #ACTION_FORMULAIRE{#ENV{action}} + + + [(#ENV{id_gamumail}|non) +

Créer un modèle de mail

+ ] + [(#ENV{id_gamumail}|oui) +

Editer ce modèle de mail

+ ] + +
+
+
+ + Paramètres du modèle + +
+ #SET{name,slug} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + #SET{obli,"obligatoire"} +
+ + [(#GET{erreurs})] + +
+
+ +
+ #SET{name,titre} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + #SET{obli,"obligatoire"} +
+ + [(#GET{erreurs})] + +
+
+
+
+
+ +
+
+
+ + Contenus du modèle + +
+ #SET{name,sujet} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + #SET{obli,"obligatoire"} +
+ + [(#GET{erreurs})] + +
+
+ +
+ #SET{name,texte} + #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + #SET{obli,"obligatoire"} +
+ + [(#GET{erreurs})] + +
+
+
+
+
+ +
+ +
+
+
+ diff --git a/formulaires/editer_slug.php b/formulaires/editer_slug.php new file mode 100644 index 0000000..799e1d2 --- /dev/null +++ b/formulaires/editer_slug.php @@ -0,0 +1,71 @@ + intval($id_gamumail), + ); + + return $valeurs; +} + +function formulaires_editer_slug_verifier_dist($id_gamumail = 'new', $redirect = ''){ + $slug = _request('slug'); + $titre = _request('titre'); + $sujet = _request('sujet'); + $texte = _request('texte'); + + $erreurs = array(); + //champs obligatoires + foreach (array ('slug', 'titre') as $obligatoire) { + if (!_request($obligatoire)) { + $erreurs[$obligatoire] = 'Ce champs est obligatoire'; + } + } + + //Il y a des erreurs + if (count($erreurs)) { + $erreurs['message_erreur'] = 'Votre saisie contient des erreurs !'; + } + + return $erreurs; +} + +function formulaires_editer_slug_traiter_dist($id_gamumail = 'new', $redirect = ''){ + $slug = _request('slug'); + $titre = _request('titre'); + $sujet = _request('sujet'); + $texte = _request('texte'); + + $set = [ + 'slug' => $slug, + 'titre' => $titre, + 'sujet' => $sujet, + 'texte' => $texte, + ]; + $id_slug = objet_inserer('gamumail', null, $set); +echo $id_slug; die; + $retour = array(); + $retour['message_ok'] = "Modèle enregistré"; + if ($redirect) { + $retour['redirect'] = $redirect; + } + + return $retour; +} \ No newline at end of file diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index 931075b..3bbdcb3 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -23,7 +23,6 @@ }
-

Configuration des mails

@@ -41,52 +40,50 @@
- -
-
-

- - [(#TITRE)] - -

+ +
+
+

+ + [(#TITRE)] + +

-
- [(#AUTORISER{webmestre}|oui) -
- Slug : - [(#SLUG|sinon{cliquez})] -
- ] -
- Objet : - [(#SUJET|sinon{cliquez})] +
+ [(#AUTORISER{webmestre}|oui) +
+ Slug : + [(#SLUG|sinon{cliquez})]
- Message : -
[(#TEXTE|sinon{cliquez})]
- [(#REM) - Pour l'instant, inutile -
- -
- ] - [(#ENV{ajouter_doc}|oui) -
- #FORMULAIRE_BIGFORM{gamumail, #ID_GAMUMAIL} -
- ] + ] +
+ Objet : + [(#SUJET|sinon{cliquez})]
+ Message : +
[(#TEXTE|sinon{cliquez})]
+ [(#REM) + Pour l'instant, inutile +
+ +
+ ] + [(#ENV{ajouter_doc}|oui) +
+ #FORMULAIRE_BIGFORM{gamumail, #ID_GAMUMAIL} +
+ ]
- - - +
+ + Nouveau modèle
From f56ddbc85e0d455777b81e84d891fc558bd6b6ff Mon Sep 17 00:00:00 2001 From: clem Date: Wed, 19 Aug 2020 12:53:34 +0200 Subject: [PATCH 05/48] =?UTF-8?q?passage=20en=20bouton=20action=20de=20la?= =?UTF-8?q?=20cr=C3=A9ation=20d'un=20slug.=20Ajout=20d'une=20action=20supp?= =?UTF-8?q?ression=20+=20bouton=20=C3=A9dition=20du=20titre=20(trigger=20s?= =?UTF-8?q?ur=20le=20crayon)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- action/creer_slug.php | 39 +++++++++++++++++ action/supprimer_slug.php | 33 ++++++++++++++ content/editer_slug.html | 34 --------------- formulaires/editer_slug.html | 84 ------------------------------------ formulaires/editer_slug.php | 71 ------------------------------ inclure/gamumail_config.html | 49 +++++++++++++++++---- 6 files changed, 112 insertions(+), 198 deletions(-) create mode 100644 action/creer_slug.php create mode 100644 action/supprimer_slug.php delete mode 100644 content/editer_slug.html delete mode 100644 formulaires/editer_slug.html delete mode 100644 formulaires/editer_slug.php diff --git a/action/creer_slug.php b/action/creer_slug.php new file mode 100644 index 0000000..07e0e5d --- /dev/null +++ b/action/creer_slug.php @@ -0,0 +1,39 @@ + '', + 'titre' => 'Le titre du modèle', + 'sujet' => 'Le sujet du mail', + 'texte' => 'Le texte du mail', + 'statut' => 'publie', + ]; + if ($id_slug = objet_inserer('gamumail', null, $set)) { + sql_updateq('spip_gamumails', ['slug' => 'slug_'.$id_slug], 'id_gamumail = '.$id_slug); + } + + // Cache + include_spip('inc/invalideur'); + suivre_invalideur("id='id_gamumail/$id_gamumail'"); +} diff --git a/action/supprimer_slug.php b/action/supprimer_slug.php new file mode 100644 index 0000000..9e9f0f3 --- /dev/null +++ b/action/supprimer_slug.php @@ -0,0 +1,33 @@ + -
- [(#FORMULAIRE_EDITER_SLUG{#ENV{id_gamumail,0}, #ENV{redirect}})] -
-
- diff --git a/formulaires/editer_slug.html b/formulaires/editer_slug.html deleted file mode 100644 index 42c9746..0000000 --- a/formulaires/editer_slug.html +++ /dev/null @@ -1,84 +0,0 @@ -
- -[

(#ENV*{message_erreur})

] -[

(#ENV*{message_ok})

] - -
- #ACTION_FORMULAIRE{#ENV{action}} - - - [(#ENV{id_gamumail}|non) -

Créer un modèle de mail

- ] - [(#ENV{id_gamumail}|oui) -

Editer ce modèle de mail

- ] - -
-
-
- - Paramètres du modèle - -
- #SET{name,slug} - #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} - #SET{obli,"obligatoire"} -
- - [(#GET{erreurs})] - -
-
- -
- #SET{name,titre} - #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} - #SET{obli,"obligatoire"} -
- - [(#GET{erreurs})] - -
-
-
-
-
- -
-
-
- - Contenus du modèle - -
- #SET{name,sujet} - #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} - #SET{obli,"obligatoire"} -
- - [(#GET{erreurs})] - -
-
- -
- #SET{name,texte} - #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} - #SET{obli,"obligatoire"} -
- - [(#GET{erreurs})] - -
-
-
-
-
- -
- -
-
-
- diff --git a/formulaires/editer_slug.php b/formulaires/editer_slug.php deleted file mode 100644 index 799e1d2..0000000 --- a/formulaires/editer_slug.php +++ /dev/null @@ -1,71 +0,0 @@ - intval($id_gamumail), - ); - - return $valeurs; -} - -function formulaires_editer_slug_verifier_dist($id_gamumail = 'new', $redirect = ''){ - $slug = _request('slug'); - $titre = _request('titre'); - $sujet = _request('sujet'); - $texte = _request('texte'); - - $erreurs = array(); - //champs obligatoires - foreach (array ('slug', 'titre') as $obligatoire) { - if (!_request($obligatoire)) { - $erreurs[$obligatoire] = 'Ce champs est obligatoire'; - } - } - - //Il y a des erreurs - if (count($erreurs)) { - $erreurs['message_erreur'] = 'Votre saisie contient des erreurs !'; - } - - return $erreurs; -} - -function formulaires_editer_slug_traiter_dist($id_gamumail = 'new', $redirect = ''){ - $slug = _request('slug'); - $titre = _request('titre'); - $sujet = _request('sujet'); - $texte = _request('texte'); - - $set = [ - 'slug' => $slug, - 'titre' => $titre, - 'sujet' => $sujet, - 'texte' => $texte, - ]; - $id_slug = objet_inserer('gamumail', null, $set); -echo $id_slug; die; - $retour = array(); - $retour['message_ok'] = "Modèle enregistré"; - if ($redirect) { - $retour['redirect'] = $redirect; - } - - return $retour; -} \ No newline at end of file diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index 3bbdcb3..927be81 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -21,21 +21,49 @@ display: inline-block; width: 180px; } + span.crayon, div.crayon { + background-color: #fff; + padding: .5rem; + } + .wp600 { + width: 600px; + } + .btn_supprimer { + float: right; + } + .btn_editer { + float: right; + margin-right: 2rem; + } + .btn { + display: inline-block; + padding: 1rem 1.5rem; + cursor: pointer; + user-select: none; + transition: 0.25s; + transition-property: box-shadow, background-color, color, border; + text-align: center; + vertical-align: middle; + white-space: nowrap; + border: none; + border-radius: 0; + background-color: #e7e9ed; + font-family: inherit; + font-size: inherit; + line-height: 1; + }
-
-

Emails en copie "cc" des différents messages - [(#CONFIG{gamumail/mail_cc}|sinon{double clic pour éditer})] -

+

Emails en copie "cc" des différents messages

+
[(#CONFIG{gamumail/mail_cc}|sinon{double clic pour éditer})]

Si plusieurs emails, les séparer par une virgule. Double clic pour éditer.

-

Emails en copie cachée "cci" des différents messages - [(#CONFIG{gamumail/mail_cci}|sinon{double clic pour éditer})] -

+

Emails en copie cachée "cci" des différents messages

+
[(#CONFIG{gamumail/mail_cci}|sinon{double clic pour éditer})]

Si plusieurs emails, les séparer par une virgule. Double clic pour éditer.

@@ -43,7 +71,10 @@
-

+ +

[(#TITRE)] @@ -79,7 +110,7 @@

- Nouveau modèle + Nouveau modèle
From 08ab9ee4aac3d61199b5666d8df871434cb031d8 Mon Sep 17 00:00:00 2001 From: clem Date: Wed, 19 Aug 2020 12:57:19 +0200 Subject: [PATCH 06/48] micro-explication --- inclure/gamumail_config.html | 1 + 1 file changed, 1 insertion(+) diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index 927be81..c9c8579 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -111,6 +111,7 @@ Nouveau modèle + Double clic pour éditer les champs des modèles.
From 7a78d7b4d54e284e28910bdca412adb61e9e8171 Mon Sep 17 00:00:00 2001 From: clem Date: Wed, 19 Aug 2020 14:45:37 +0200 Subject: [PATCH 07/48] =?UTF-8?q?ajout=20des=20exemples=20de=20fonctions?= =?UTF-8?q?=20appel=C3=A9es=20par=20le=20CVT=20de=20gamumail.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/gamumail.php | 2 +- gamumail_fonctions.php | 66 ++++++++++++++++++++++++++++++++++++ inclure/gamumail_config.html | 7 ++-- 3 files changed, 71 insertions(+), 4 deletions(-) diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index b8b2c14..6c8e98f 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -184,7 +184,7 @@ function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $T $html_footer = ''; if(find_in_path('gamumail/html_footer.html')){ $html_footer = recuperer_fond('gamumail/html_footer', $options); - }elseif (find_in_path($slug . '_html_footer.html')) { + } elseif (find_in_path($slug . '_html_footer.html')) { $html_footer = recuperer_fond('gamumail/'.$slug . '_html_footer', $options); } diff --git a/gamumail_fonctions.php b/gamumail_fonctions.php index 76b6837..9e58989 100644 --- a/gamumail_fonctions.php +++ b/gamumail_fonctions.php @@ -16,3 +16,69 @@ if (!defined('_ECRIRE_INC_VERSION')) { function gamumail_TabClient($objet, $id_objet, $champ){ return compact('objet', 'id_objet', 'champ'); } + + +/** + * modèles pour surcharge des fonctions du CVT gamumail + * chacune de ces fonctions a un équivalent spécifique pour chaque slug + * avec un nom de la forme gamumail_$slug_charger(), gamumail_$slug_verifier()... + **/ + +/** + * fonction appelée en fin de gamumail_charger() + * + * $valeurs = array( + * "slug" => $slug, + * 'sujet' => $gamuMail['sujet'], + * 'texte' => $gamuMail['texte'], + * 'pour' => implode(',', $Tmails), + * 'cc' => lire_config('gamumail/mail_cc'), + * 'cci' => lire_config('gamumail/mail_cci'), + * 'TFichierpdfs' => $TFichierPdf, + * 'Tpdfs_ok' => [], + * 'Tid_doc' => [], + * 'options' => $options + * ); + * + * @return array $valeurs + * + **/ +function gamumail_charger_dist($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) { + + return $valeurs; +} + +/** + * fonction appelée en fin de gamumail_verifier_dist() + * + * @return array $erreurs + * + **/ +function gamumail_verifier_dist($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) { + + return $erreurs; +} + +/** + * fonctions appelée en fin de gamumail_traiter_dist() + * + * @param string $slug modele du mail a charger + * @param int|string $auteur id_auteur ou email du destinataire + * @param array $Tclient [] ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] + * @param array $Tpdf [] ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] + * @param string $redirect + * @param array $options + * + * @return array $corps du message => $corps['html'] et $corps['texte'] + * + **/ +function gamumail_traiter_dist($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) { + + $html = $corps['html']; + $html = str_replace('@@truc_a_remplacer@@', 'le machin qui remplace', $html); + $texte = facteur_mail_html2text($html); + $corps['html'] = $html; + $corps['texte'] = $texte; + + return $corps; +} diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index c9c8579..34612fe 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -8,9 +8,6 @@ margin: 10px auto; padding: 10px; border-radius: 4px; - .crayon { - background-color: #fff; - } } .un-pdf { border: 1px solid black; @@ -52,6 +49,10 @@ font-size: inherit; line-height: 1; } + .markItUp .markItUpHeader ul a em { + width: 2rem; + height: 2rem; + }
From 728d5dcf6de8b9a1c4d25a5a531b2ea95968310c Mon Sep 17 00:00:00 2001 From: clem Date: Wed, 19 Aug 2020 20:10:12 +0200 Subject: [PATCH 08/48] =?UTF-8?q?premier=20jet=20pour=20la=20fonction=20in?= =?UTF-8?q?c/envoyer=5Fgamumail=20qui=20envoie=20un=20mail=20=C3=A0=20part?= =?UTF-8?q?ir=20d'un=20slug.=20Ajout=20du=20champ=20id=5Fdocs=20aux=20slug?= =?UTF-8?q?s.=20Ajout=20d'un=20header=20et=20d'un=20footer=20standard=20po?= =?UTF-8?q?ur=20les=20(inutiles)=20mails=20HTML?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/gamumail.php | 1 + gamumail/html_footer.html | 3 + gamumail/html_header.html | 12 +++ gamumail_administrations.php | 1 + gamumail_fonctions.php | 11 ++- inc/envoyer_gamumail.php | 170 +++++++++++++++++++++++++++++++++++ inclure/gamumail_config.html | 27 ++++-- lang/gamumail_fr.php | 5 ++ paquet.xml | 4 +- 9 files changed, 225 insertions(+), 9 deletions(-) create mode 100644 gamumail/html_footer.html create mode 100644 gamumail/html_header.html create mode 100644 inc/envoyer_gamumail.php diff --git a/base/gamumail.php b/base/gamumail.php index da0843f..f53ea4f 100644 --- a/base/gamumail.php +++ b/base/gamumail.php @@ -52,6 +52,7 @@ function gamumail_declarer_tables_objets_sql($tables) { 'titre' => 'varchar(255) NOT NULL DEFAULT ""', 'sujet' => 'varchar(255) NOT NULL DEFAULT ""', 'texte' => 'text NOT NULL DEFAULT ""', + 'id_docs' => 'text NOT NULL DEFAULT ""', 'statut' => 'varchar(20) DEFAULT "0" NOT NULL', 'maj' => 'TIMESTAMP' ), diff --git a/gamumail/html_footer.html b/gamumail/html_footer.html new file mode 100644 index 0000000..faf65ca --- /dev/null +++ b/gamumail/html_footer.html @@ -0,0 +1,3 @@ +
+ + diff --git a/gamumail/html_header.html b/gamumail/html_header.html new file mode 100644 index 0000000..b8757ff --- /dev/null +++ b/gamumail/html_header.html @@ -0,0 +1,12 @@ + + + + + + #NOM_SITE_SPIP + + +
+ [(#LOGO_SITE_SPIP|image_reduire{200})] +
+
diff --git a/gamumail_administrations.php b/gamumail_administrations.php index 511244d..bae7770 100644 --- a/gamumail_administrations.php +++ b/gamumail_administrations.php @@ -29,6 +29,7 @@ function gamumail_upgrade($nom_meta_base_version, $version_cible) { $maj['create'] = array(array('maj_tables', array('spip_gamumails'))); $maj['1.0.2'] = array(array('maj_tables', array('spip_gamumails'))); $maj['1.0.5'] = array(array('creer_compte_curl')); + $maj['1.0.6'] = array(array('maj_tables', array('spip_gamumails'))); function creer_compte_curl(){ $mdp = uniqid(uniqid(),1); diff --git a/gamumail_fonctions.php b/gamumail_fonctions.php index 9e58989..2530586 100644 --- a/gamumail_fonctions.php +++ b/gamumail_fonctions.php @@ -25,7 +25,7 @@ function gamumail_TabClient($objet, $id_objet, $champ){ **/ /** - * fonction appelée en fin de gamumail_charger() + * fonction appelée en fin de gamumail_charger_dist() * * $valeurs = array( * "slug" => $slug, @@ -69,13 +69,20 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $auteur, $Tclient, $T * @param string $redirect * @param array $options * - * @return array $corps du message => $corps['html'] et $corps['texte'] + * @return array $corps + * $corps = [ + * 'html' => $html, + * 'texte' => $texte, + * 'cc' => $cc, + * 'cci' => $cci + * ]; * **/ function gamumail_traiter_dist($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) { $html = $corps['html']; $html = str_replace('@@truc_a_remplacer@@', 'le machin qui remplace', $html); + include_spip('classes/facteur'); $texte = facteur_mail_html2text($html); $corps['html'] = $html; $corps['texte'] = $texte; diff --git a/inc/envoyer_gamumail.php b/inc/envoyer_gamumail.php new file mode 100644 index 0000000..0e17911 --- /dev/null +++ b/inc/envoyer_gamumail.php @@ -0,0 +1,170 @@ + 1) { + $cci = array_unique(array_merge($cci, $pour)); + $pour = [lire_config('facteur/adresse_envoi_email',lire_config('email_webmaster'))]; + } + + // docs attachés + function entier($val) { + return is_integer($val); + } + $Tid_doc = array_filter(explode(',', $id_docs), 'entier'); + //$Tpdfs_ok = _request('Tpdfs_ok'); + + $pieces_jointes = []; +/* + if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) { + $options = $f($options, $auteur, $Tclient, $Tpdf); + } + if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) { + $options = $f($options, $auteur, $Tclient, $Tpdf); + } +*/ + // les documents joints + if (!empty($Tid_doc)) { + foreach ($Tid_doc as $id_document) { + $Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document)); + $destination = _DIR_IMG.$Tdocument['fichier']; + $extension = $Tdocument['extension']; + if ($Tdocument['titre']) { + $nom_fichier = $Tdocument['titre'] .".".$extension; + } else { + $nom_fichier = basename($Tdocument['fichier']); + } + $type_mime = bigup_get_mime_type_extension($extension); + $pieces_jointes[] = [ + 'chemin' => $destination, + 'nom' => $nom_fichier, + 'encodage' => 'base64', + 'mime' => $type_mime + ]; + } + } +/* + // les pdfs + $Tpdf_dell = []; + if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) { + if (array_key_exists('fichier', $Tpdf)) { + $Tpdf = [$Tpdf]; + } + + $recup_pdf = charger_fonction('charger_pdf','inc'); + foreach ($Tpdfs_ok as $pdf) { + foreach ($Tpdf as $p) { + if ($p['fichier'] === $pdf) { + $c = $p['contexte']; + $nom = $p['nom']; + } + } + + $pdf = $recup_pdf($pdf, $c); + $nom_fichier = $nom.'.pdf'; + $destination = _DIR_TMP.basename($nom_fichier); + $Tpdf_dell[] = $destination; + file_put_contents($destination,$pdf); + $pieces_jointes[] = [ + 'chemin' => $destination, + 'nom' => $nom_fichier, + 'encodage' => 'base64', + 'mime' => 'application/pdf' + ]; + } + } +*/ + $html_header = ''; + if (find_in_path('gamumail/'.$slug .'_html_header.html')) { + $html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options); + } + elseif(find_in_path('gamumail/html_header.html')) { + $html_header = recuperer_fond('gamumail/html_header', $options); + } + $html_footer = ''; + if (find_in_path('gamumail/'.$slug . '_html_footer.html')) { + $html_footer = recuperer_fond('gamumail/'.$slug . '_html_footer', $options); + } + elseif (find_in_path('gamumail/html_footer.html')) { + $html_footer = recuperer_fond('gamumail/html_footer', $options); + } + $html = $html_header . $html . $html_footer; + + $corps = [ + 'html' => $html, + 'texte' => $texte, + 'cc' => $cc, + 'cci' => $cci, + 'pieces_jointes' => $pieces_jointes + ]; + + if ($f = charger_fonction('traiter', 'gamumail', true)) { + $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); + } + if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) { + $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); + } + + $envoyer_mail = charger_fonction('envoyer_mail', 'inc/'); + $ok = $envoyer_mail($pour, $sujet, $corps); + if (!$ok) { + spip_log("Erreur d'envoi du mail : ","gamumail"); + spip_log($corps,"roc"); + $retour['message_erreur'] = _T("gamumail:erreur_envoi_mail"); + } else { + $retour['message_ok'] = _T('gamumail:mail_envoye'); + } +/* + // on supprime les pdfs temporaires + if (count($Tpdf_dell)) { + foreach ($Tpdf_dell as $pdf) { + unlink($pdf); + } + } + + if ($redirect) { + $retour['redirect'] = $redirect; + } +*/ + + return $retour; +} \ No newline at end of file diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index 34612fe..e1e2512 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -3,6 +3,9 @@ display: inline-block; width: 100%; } + .objet--mail { + margin-top: 1.5rem; + } .well { background-color: #cecece; margin: 10px auto; @@ -53,6 +56,9 @@ width: 2rem; height: 2rem; } + span > em { + font-size: 85%; + }
@@ -84,17 +90,28 @@
[(#AUTORISER{webmestre}|oui) -
+
Slug : - [(#SLUG|sinon{cliquez})] + [(#SLUG|sinon{Double clic pour éditer})]
]
Objet : - [(#SUJET|sinon{cliquez})] + [(#SUJET|sinon{Double clic pour éditer})] +
+
+ Message : +
+ [(#TEXTE|sinon{Double clic pour éditer})] +
+
+
+ Documents attachés : liste d'id_document séparés par une virgule , +
+ [(#ID_DOCS|sinon{Double clic pour éditer})] +
+
- Message : -
[(#TEXTE|sinon{cliquez})]
[(#REM) Pour l'instant, inutile
diff --git a/lang/gamumail_fr.php b/lang/gamumail_fr.php index f77c4b5..0b0fbd3 100644 --- a/lang/gamumail_fr.php +++ b/lang/gamumail_fr.php @@ -20,6 +20,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( //EE 'envoyer' => 'Envoyer', "erreur_envoi_mail" => "Erreur dans l'envoi de votre mail", + 'erreur_format_slug' => 'Le slug est un identifiant qui ne peut contenir que des chiffres, lettres et _ ou -', + // I 'icone_creer_gamumail' => 'Créer un gamumail', @@ -32,6 +34,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( //MM "mail_envoye" => "Votre message a bien été envoyé", + // P + 'pas_de_slug' => 'Pas de slug avec cet identifiant', + // R 'retirer_lien_gamumail' => 'Retirer ce gamumail', 'retirer_tous_liens_gamumails' => 'Retirer tous les gamumails', diff --git a/paquet.xml b/paquet.xml index 7592001..c4031ff 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,12 +1,12 @@ GamuMail From 28e73628ae88194cc3e2ed18606d91234828e81f Mon Sep 17 00:00:00 2001 From: clem Date: Thu, 20 Aug 2020 11:35:35 +0200 Subject: [PATCH 09/48] =?UTF-8?q?appel=20des=20squelettes=20de=20header=20?= =?UTF-8?q?et=20footer=20:=20priorit=C3=A9=20au=20squelettes=20sp=C3=A9cif?= =?UTF-8?q?iques=20du=20slug=20si=20ils=20existent=20(le=20g=C3=A9n=C3=A9r?= =?UTF-8?q?ique=20de=20gamumail=20reste=20en=20par=20d=C3=A9faut)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/gamumail.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index 6c8e98f..5dce83f 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -174,20 +174,19 @@ function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $T } $html_header = ''; - - if(find_in_path('gamumail/html_header.html')){ - $html_header = recuperer_fond('gamumail/html_header', $options); - } elseif (find_in_path($slug . '_html_header.html')) { + if (find_in_path('gamumail/'.$slug .'_html_header.html')) { $html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options); + } + elseif(find_in_path('gamumail/html_header.html')) { + $html_header = recuperer_fond('gamumail/html_header', $options); } - $html_footer = ''; - if(find_in_path('gamumail/html_footer.html')){ - $html_footer = recuperer_fond('gamumail/html_footer', $options); - } elseif (find_in_path($slug . '_html_footer.html')) { + if (find_in_path('gamumail/'.$slug . '_html_footer.html')) { $html_footer = recuperer_fond('gamumail/'.$slug . '_html_footer', $options); } - + elseif (find_in_path('gamumail/html_footer.html')) { + $html_footer = recuperer_fond('gamumail/html_footer', $options); + } $html = $html_header . $html . $html_footer; $corps = [ From f0221e822173bfb6c85ebf6422e526952eca8811 Mon Sep 17 00:00:00 2001 From: clem Date: Fri, 21 Aug 2020 02:01:15 +0200 Subject: [PATCH 10/48] =?UTF-8?q?fonction=20envoyer=5Fgamumail=20OK=20(y?= =?UTF-8?q?=20compris=20docs=20attach=C3=A9s).=20Int=C3=A9gration=20des=20?= =?UTF-8?q?=20en=20tant=20que=20mix=20id=5Fauteurs=20et=20mails=20s=C3=A9p?= =?UTF-8?q?ar=C3=A9s=20par=20des=20virgules=20dans=20le=20CVT=20gamumail.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/gamumail.php | 96 +++++++++++++++++++++++++++------------ gamumail/html_header.html | 2 +- gamumail_fonctions.php | 21 +++++---- inc/envoyer_gamumail.php | 82 ++++++++++++++++++++++----------- lang/gamumail_fr.php | 2 + 5 files changed, 138 insertions(+), 65 deletions(-) diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index 5dce83f..6ae9016 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -8,21 +8,25 @@ include_spip('inc/filtres'); * formulaire générique pour envoyer des mails avec pieces attachés * * @param string $slug modele du mail a charger - * @param int|string $auteur id_auteur ou email du destinataire + * @param string $destinataires = adresses mails et id_auteurs séparées par , + * si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs * @param array $Tclient []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] * @param array $Tpdf []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] * @param string $redirect * @param array $options * @return array $valeurs */ -function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ - +function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ $Tmails = []; - if (intval($auteur)) { - $Tmails[] = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($auteur)); - } elseif (is_string($auteur)) { - if (email_valide($auteur)) { - $Tmails[] = $auteur; + $destinataires = explode(',', $destinataires); + foreach ($destinataires as $dest) { + if (is_numeric($dest)) { + if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) { + $Tmails[] = $mail; + } + } + elseif (email_valide($dest)) { + $Tmails[] = $dest; } } @@ -65,35 +69,64 @@ function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $T ); if ($f = charger_fonction('charger', 'gamumail', true)) { - $valeurs = $f($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); + $valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect); } if ($f = charger_fonction($slug . '_charger', 'gamumail', true)) { - $valeurs = $f($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); + $valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect); } return $valeurs; } -function formulaires_gamumail_verifier_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{ - +function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{ $erreurs = array(); //champs obligatoire foreach (array ('pour', 'sujet', 'texte') as $obligatoire) { if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Ce champs est obligatoire'; } + // le slug est il OK ? + if (preg_match('/[^a-zA-Z0-9_\-]/', $slug)) { + $erreurs['message_erreur'] = _T("gamumail:erreur_format_slug"); + } + $res = sql_fetsel('slug', 'spip_gamumails', 'slug = "'.$slug.'"'); + if (!$res) { + $erreurs['message_erreur'] = _T("gamumail:pas_de_slug"); + } + + // vérif des destinataires + $Tid_erreur = $Tmails_erreur = []; + $pour = explode(',', _request('pour')); + foreach ($pour as $dest) { + if (is_numeric($dest)) { + if (!$mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) { + $Tid_erreur[] = $dest; + } + } + elseif (!email_valide($dest)) { + $Tmails_erreur[] = $dest; + } + } + $erreurs['pour'] = ''; + if (count($Tid_erreur)) { + $erreurs['pour'] .= _T("gamumail:id_destinataires_sans_mails", ['ids_erreur' => join(', ', $Tid_erreur)]).' '; + } + if (count($Tmails_erreur)) { + $erreurs['pour'] .= _T("gamumail:mails_destinataires_en_erreur", ['mails_erreur' => join(', ', $Tmails_erreur)]); + } + + // surcharges if ($f = charger_fonction('verifier', 'gamumail', true)) { - $erreurs = $f($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); + $erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect); } if ($f = charger_fonction($slug . '_verifier', 'gamumail', true)) { - $erreurs = $f($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); + $erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect); } return $erreurs; } -function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{ - +function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{ include_spip('inc/texte'); include_spip('classes/facteur'); @@ -112,14 +145,25 @@ function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $T $cc = explode(',', $cc); $cci = explode(',', $cci); + $Tmails = []; + foreach ($pour as $dest) { + if (is_numeric($dest)) { + if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) { + $Tmails[] = $mail; + } + } + elseif (email_valide($dest)) { + $Tmails[] = $dest; + } + } $pieces_jointes = []; if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) { - $options = $f($options, $auteur, $Tclient, $Tpdf); + $options = $f($options, $destinataires, $Tclient, $Tpdf); } if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) { - $options = $f($options, $auteur, $Tclient, $Tpdf); + $options = $f($options, $destinataires, $Tclient, $Tpdf); } // les documents joints @@ -198,17 +242,17 @@ function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $T ]; if ($f = charger_fonction('traiter', 'gamumail', true)) { - $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); + $corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect); } if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) { - $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); + $corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect); } $envoyer_mail = charger_fonction('envoyer_mail', 'inc/'); - $ok = $envoyer_mail($pour, $sujet, $corps); + $ok = $envoyer_mail($Tmails, $sujet, $corps); if (!$ok) { - spip_log("Erreur d'envoi du mail : ","roc_mail"); - spip_log($corps,"roc"); + spip_log("Erreur d'envoi du mail : ","gamumail"); + spip_log($corps,"gamumail"); $retour['message_erreur'] = _T("gamumail:erreur_envoi_mail"); } else { $retour['message_ok'] = _T('gamumail:mail_envoye'); @@ -227,9 +271,3 @@ function formulaires_gamumail_traiter_dist($slug, $auteur = 0, $Tclient = [], $T return $retour; } - -function gamumail_supprimer_si_vide($v){ - if (!empty($v)) { - return $v; - } -} diff --git a/gamumail/html_header.html b/gamumail/html_header.html index b8757ff..4a2c04a 100644 --- a/gamumail/html_header.html +++ b/gamumail/html_header.html @@ -7,6 +7,6 @@
- [(#LOGO_SITE_SPIP|image_reduire{200})] + []

diff --git a/gamumail_fonctions.php b/gamumail_fonctions.php index 2530586..5f513e4 100644 --- a/gamumail_fonctions.php +++ b/gamumail_fonctions.php @@ -17,6 +17,11 @@ function gamumail_TabClient($objet, $id_objet, $champ){ return compact('objet', 'id_objet', 'champ'); } +function gamumail_supprimer_si_vide($v){ + if (!empty($v)) { + return $v; + } +} /** * modèles pour surcharge des fonctions du CVT gamumail @@ -25,9 +30,9 @@ function gamumail_TabClient($objet, $id_objet, $champ){ **/ /** - * fonction appelée en fin de gamumail_charger_dist() - * - * $valeurs = array( + * fonction appelée en fin de gamumail_charger_dist() + * + * @return $valeurs = array( * "slug" => $slug, * 'sujet' => $gamuMail['sujet'], * 'texte' => $gamuMail['texte'], @@ -40,10 +45,8 @@ function gamumail_TabClient($objet, $id_objet, $champ){ * 'options' => $options * ); * - * @return array $valeurs - * **/ -function gamumail_charger_dist($valeurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) { +function gamumail_charger_dist($valeurs, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect='') { return $valeurs; } @@ -54,7 +57,7 @@ function gamumail_charger_dist($valeurs, $options, $slug, $auteur, $Tclient, $Tp * @return array $erreurs * **/ -function gamumail_verifier_dist($erreurs, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) { +function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect='') { return $erreurs; } @@ -63,7 +66,7 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $auteur, $Tclient, $T * fonctions appelée en fin de gamumail_traiter_dist() * * @param string $slug modele du mail a charger - * @param int|string $auteur id_auteur ou email du destinataire + * @param string $destinataires = adresses mails et id_auteurs séparées par , * @param array $Tclient [] ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] * @param array $Tpdf [] ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] * @param string $redirect @@ -78,7 +81,7 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $auteur, $Tclient, $T * ]; * **/ -function gamumail_traiter_dist($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect) { +function gamumail_traiter_dist($corps, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect) { $html = $corps['html']; $html = str_replace('@@truc_a_remplacer@@', 'le machin qui remplace', $html); diff --git a/inc/envoyer_gamumail.php b/inc/envoyer_gamumail.php index 0e17911..8a22a01 100644 --- a/inc/envoyer_gamumail.php +++ b/inc/envoyer_gamumail.php @@ -7,11 +7,13 @@ if (!defined('_ECRIRE_INC_VERSION')){ * fonction pour préparer et envoyer un mail basé sur un slug gamumail * * @param string $slug - * @param string $destinataires (éventuellement plusieurs adresses séparées par ,) + * @param string $destinataires = adresses mails et id_auteur séparées par , + * si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs * @param array $options (au cas où...) + * $options['debug' => true] pour afficher le $corps final sans envoyer le mail * **/ -function envoyer_gamumail($slug, $destinataires, $options = []) { +function inc_envoyer_gamumail($slug, $destinataires, $options = []) { include_spip('inc/texte'); include_spip('classes/facteur'); @@ -26,8 +28,8 @@ function envoyer_gamumail($slug, $destinataires, $options = []) { // contenu $res = sql_fetsel('*', 'spip_gamumails', 'slug = "'.$slug.'"'); if ($res) { - $sujet = $res('sujet'); - $html = propre($res('texte')); + $sujet = $res['sujet']; + $html = propre($res['texte']); $texte = facteur_mail_html2text($html); $id_docs = $res['id_docs']; } @@ -37,32 +39,43 @@ function envoyer_gamumail($slug, $destinataires, $options = []) { } // destinataires - $pour = explode(',', $destinataires); - $cc = explode(',', lire_config('gamumail/mail_cc')); - $cci = explode(',', lire_config('gamumail/mail_cci')); + $destinataires = explode(',', $destinataires); + $pour = array(); + foreach ($destinataires as $dest) { + if (is_numeric($dest)) { + if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) { + $pour[] = $mail; + } + } + elseif (email_valide($dest)) { + $pour[] = $dest; + } + } + + function test_vide($elem) { + return ($elem != NULL AND $elem != ''); + } + $cc = array_filter(explode(',', lire_config('gamumail/mail_cc')), 'test_vide'); + $cci = array_filter(explode(',', lire_config('gamumail/mail_cci')), 'test_vide'); + // si on a plusieurs destinataires, les passer en cci et mettre le compte expéditeur du site en to if (count($pour) > 1) { $cci = array_unique(array_merge($cci, $pour)); $pour = [lire_config('facteur/adresse_envoi_email',lire_config('email_webmaster'))]; } - // docs attachés - function entier($val) { - return is_integer($val); - } - $Tid_doc = array_filter(explode(',', $id_docs), 'entier'); - //$Tpdfs_ok = _request('Tpdfs_ok'); - + // documents joints $pieces_jointes = []; -/* - if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) { - $options = $f($options, $auteur, $Tclient, $Tpdf); + + // filtrage des id_docs attachés au slug (ici on ne veut que des id_docs valides) + $Tid_doc = []; + $id_docs = array_filter(explode(',', $id_docs), 'is_numeric'); + foreach ($id_docs as $doc) { + if ($res = sql_getfetsel('id_document', 'spip_documents', 'id_document='.$doc)) { + $Tid_doc[] = $doc; + } } - if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) { - $options = $f($options, $auteur, $Tclient, $Tpdf); - } -*/ - // les documents joints + // récup des paramètres des fichiers à attacher if (!empty($Tid_doc)) { foreach ($Tid_doc as $id_document) { $Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document)); @@ -70,7 +83,8 @@ function envoyer_gamumail($slug, $destinataires, $options = []) { $extension = $Tdocument['extension']; if ($Tdocument['titre']) { $nom_fichier = $Tdocument['titre'] .".".$extension; - } else { + } + else { $nom_fichier = basename($Tdocument['fichier']); } $type_mime = bigup_get_mime_type_extension($extension); @@ -84,6 +98,14 @@ function envoyer_gamumail($slug, $destinataires, $options = []) { } /* // les pdfs + $Tpdfs_ok = _request('Tpdfs_ok'); + if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) { + $options = $f($options, $auteur, $Tclient, $Tpdf); + } + if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) { + $options = $f($options, $auteur, $Tclient, $Tpdf); + } + $Tpdf_dell = []; if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) { if (array_key_exists('fichier', $Tpdf)) { @@ -136,7 +158,6 @@ function envoyer_gamumail($slug, $destinataires, $options = []) { 'cci' => $cci, 'pieces_jointes' => $pieces_jointes ]; - if ($f = charger_fonction('traiter', 'gamumail', true)) { $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } @@ -144,11 +165,20 @@ function envoyer_gamumail($slug, $destinataires, $options = []) { $corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect); } + // si debug on affiche sans envoyer le mail + if ($options['debug']) { + echo '$pour : '; + var_dump($pour); + echo '
$sujet: '.$sujet.'
$corps : '; + var_dump($corps); + die; + } + $envoyer_mail = charger_fonction('envoyer_mail', 'inc/'); $ok = $envoyer_mail($pour, $sujet, $corps); if (!$ok) { spip_log("Erreur d'envoi du mail : ","gamumail"); - spip_log($corps,"roc"); + spip_log($corps,"gamumail"); $retour['message_erreur'] = _T("gamumail:erreur_envoi_mail"); } else { $retour['message_ok'] = _T('gamumail:mail_envoye'); @@ -167,4 +197,4 @@ function envoyer_gamumail($slug, $destinataires, $options = []) { */ return $retour; -} \ No newline at end of file +} diff --git a/lang/gamumail_fr.php b/lang/gamumail_fr.php index 0b0fbd3..64f80bf 100644 --- a/lang/gamumail_fr.php +++ b/lang/gamumail_fr.php @@ -30,9 +30,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'info_aucun_gamumail' => 'Aucun gamumail', 'info_gamumails_auteur' => 'Les gamumails de cet auteur', 'info_nb_gamumails' => '@nb@ gamumails', + 'id_destinataires_sans_mails' => 'Les id_auteur @ids_erreur@ n\'ont pas d\'adresse mail', //MM "mail_envoye" => "Votre message a bien été envoyé", + 'mails_destinataires_en_erreur' => 'Les destinataires @mails_erreur@ ne sont pas des adresses mails valides', // P 'pas_de_slug' => 'Pas de slug avec cet identifiant', From 617df6ea97d8cf37db6d38d3e11f21f8868a6dd5 Mon Sep 17 00:00:00 2001 From: clem Date: Fri, 21 Aug 2020 11:33:49 +0200 Subject: [PATCH 11/48] =?UTF-8?q?le=20passage=20en=20cci=20en=20cas=20de?= =?UTF-8?q?=20destinataires=20multiple=20d=C3=A9pend=20de=20l'=20['cci'=3D?= =?UTF-8?q?>true].=20Plus=20de=20confort=20pour=20le=20param=C3=A8tre=20?= =?UTF-8?q?=20:=20on=20accepte=20un=20array=20ou=20une=20string=20avec=20,?= =?UTF-8?q?=20(et=20toujours=20id=5Fauteurs=20en=20mix=20avec=20adresses?= =?UTF-8?q?=20mail)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/gamumail.php | 7 +++++-- inc/envoyer_gamumail.php | 21 ++++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index 6ae9016..12932f5 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -8,17 +8,20 @@ include_spip('inc/filtres'); * formulaire générique pour envoyer des mails avec pieces attachés * * @param string $slug modele du mail a charger - * @param string $destinataires = adresses mails et id_auteurs séparées par , + * @param string $destinataires = adresses mails et id_auteurs séparées par , ou en array * si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs * @param array $Tclient []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] * @param array $Tpdf []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] * @param string $redirect * @param array $options * @return array $valeurs + * */ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ $Tmails = []; - $destinataires = explode(',', $destinataires); + if (!is_array($destinataires)) { + $destinataires = explode(',', $destinataires); + } foreach ($destinataires as $dest) { if (is_numeric($dest)) { if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) { diff --git a/inc/envoyer_gamumail.php b/inc/envoyer_gamumail.php index 8a22a01..2197aa5 100644 --- a/inc/envoyer_gamumail.php +++ b/inc/envoyer_gamumail.php @@ -7,10 +7,11 @@ if (!defined('_ECRIRE_INC_VERSION')){ * fonction pour préparer et envoyer un mail basé sur un slug gamumail * * @param string $slug - * @param string $destinataires = adresses mails et id_auteur séparées par , + * @param string|array $destinataires = adresses mails et id_auteur séparées par , ou en array * si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs - * @param array $options (au cas où...) + * @param array $options : * $options['debug' => true] pour afficher le $corps final sans envoyer le mail + * $options['cci' => true] pour passer les destinataires en cci si il y en a plus qu'un * **/ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { @@ -39,7 +40,9 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { } // destinataires - $destinataires = explode(',', $destinataires); + if (!is_array($destinataires)) { + $destinataires = explode(',', $destinataires); + } $pour = array(); foreach ($destinataires as $dest) { if (is_numeric($dest)) { @@ -52,14 +55,14 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { } } - function test_vide($elem) { + function non_vide($elem) { return ($elem != NULL AND $elem != ''); } - $cc = array_filter(explode(',', lire_config('gamumail/mail_cc')), 'test_vide'); - $cci = array_filter(explode(',', lire_config('gamumail/mail_cci')), 'test_vide'); + $cc = array_filter(explode(',', lire_config('gamumail/mail_cc')), 'non_vide'); + $cci = array_filter(explode(',', lire_config('gamumail/mail_cci')), 'non_vide'); - // si on a plusieurs destinataires, les passer en cci et mettre le compte expéditeur du site en to - if (count($pour) > 1) { + // si on a plusieurs destinataires et $options['cci' => true] les passer en cci et mettre le compte expéditeur du site en to + if (count($pour) > 1 AND isset($options['cci']) AND $options['cci']) { $cci = array_unique(array_merge($cci, $pour)); $pour = [lire_config('facteur/adresse_envoi_email',lire_config('email_webmaster'))]; } @@ -166,7 +169,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { } // si debug on affiche sans envoyer le mail - if ($options['debug']) { + if (isset($options['debug']) AND $options['debug']) { echo '$pour : '; var_dump($pour); echo '
$sujet: '.$sujet.'
$corps : '; From 6c2ab5c054c44f81e36e2daf38d454de7e79e666 Mon Sep 17 00:00:00 2001 From: clem Date: Fri, 21 Aug 2020 13:05:07 +0200 Subject: [PATCH 12/48] tant qu'on y est de faire la version grand luxe de GamuMail, ajout d'une saisie selecteur_slug --- lang/gamumail_fr.php | 1 + saisies/selecteur_slug.html | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 saisies/selecteur_slug.html diff --git a/lang/gamumail_fr.php b/lang/gamumail_fr.php index 64f80bf..a36702f 100644 --- a/lang/gamumail_fr.php +++ b/lang/gamumail_fr.php @@ -45,6 +45,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( // S 'supprimer_gamumail' => 'Supprimer cet gamumail', + 'selectionnez_modele' => 'Sélectionnez un modèle...', // T 'texte_ajouter_gamumail' => 'Ajouter un gamumail', diff --git a/saisies/selecteur_slug.html b/saisies/selecteur_slug.html new file mode 100644 index 0000000..c7c05f9 --- /dev/null +++ b/saisies/selecteur_slug.html @@ -0,0 +1,26 @@ +[(#REM) + une saisie pour choisir un slug parmi ceux ayant statut publie + paramètres : + #ENV{nom} = le name du select (par défaut = slug) + #ENV{slug} = le slug sélectionné + #ENV{label} + #ENV{explication} + + exemple d'appel : + [(#SAISIE{selecteur_slug, + slug=slug_truc, + nom=choix_slug, + label=Choisissez un slug, + explication=Le modèle de mail automatique pour... + })] + +] + + + <:gamumail:aucun_slug_disponible:> + \ No newline at end of file From d134193c682ba87b7590023255fc591cd9ec2c57 Mon Sep 17 00:00:00 2001 From: clem Date: Sat, 22 Aug 2020 18:44:34 +0200 Subject: [PATCH 13/48] ajout d'un squelette de test de slug: ?page=test_slug&slug=le_modele&dest=123 --- content/test_slug.html | 11 +++++++++++ gamumail_fonctions.php | 8 ++++++++ saisies/selecteur_slug.html | 1 + 3 files changed, 20 insertions(+) create mode 100644 content/test_slug.html diff --git a/content/test_slug.html b/content/test_slug.html new file mode 100644 index 0000000..0602a0a --- /dev/null +++ b/content/test_slug.html @@ -0,0 +1,11 @@ +[(#AUTORISER{webmestre}|sinon_interdire_acces)] +[(#REM) + squelette pour tester un slug + @paramètres : + #ENV{slug} = nom du slug + #ENV{dest} = string|array destinataire(s) + + @return : le résultat de la fonction envoyer_gamumail() en mode debug + +] +[(#ENV{slug}|tester_slug{#ENV{dest}})] \ No newline at end of file diff --git a/gamumail_fonctions.php b/gamumail_fonctions.php index 5f513e4..fdd27bb 100644 --- a/gamumail_fonctions.php +++ b/gamumail_fonctions.php @@ -23,6 +23,13 @@ function gamumail_supprimer_si_vide($v){ } } +function tester_slug($slug, $destinataires,$options=[]) { + $f = charger_fonction('envoyer_gamumail', 'inc'); + $options['debug'] = true; + return $f($slug, $destinataires, $options); +} + + /** * modèles pour surcharge des fonctions du CVT gamumail * chacune de ces fonctions a un équivalent spécifique pour chaque slug @@ -92,3 +99,4 @@ function gamumail_traiter_dist($corps, $options, $slug, $destinataires='', $Tcli return $corps; } + diff --git a/saisies/selecteur_slug.html b/saisies/selecteur_slug.html index c7c05f9..0312bfb 100644 --- a/saisies/selecteur_slug.html +++ b/saisies/selecteur_slug.html @@ -1,3 +1,4 @@ +#CACHE{0} [(#REM) une saisie pour choisir un slug parmi ceux ayant statut publie paramètres : From 8b7f9486c71210f3cb7e206f13a631ad20f6ac9c Mon Sep 17 00:00:00 2001 From: clem Date: Tue, 25 Aug 2020 19:18:33 +0200 Subject: [PATCH 14/48] =?UTF-8?q?Ajout=20d'un=20bloc=20pour=20lister=20les?= =?UTF-8?q?=20remplacements=20disponibles=20des=20@@=20des=20slugs=20(?= =?UTF-8?q?=C3=A0=20surcharger=20par=20site).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamumail/remplacements_slugs.html | 11 +++++++++++ inclure/gamumail_config.html | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 gamumail/remplacements_slugs.html diff --git a/gamumail/remplacements_slugs.html b/gamumail/remplacements_slugs.html new file mode 100644 index 0000000..b058c78 --- /dev/null +++ b/gamumail/remplacements_slugs.html @@ -0,0 +1,11 @@ +[(#REM) + la liste des remplacements joués dans tous les slugs GamuMail (à surcharger par site) + inclure pour la page de configuration des mails + +] +
+

Remplacements automatiques disponibles :

+
    +
  • @@exemple_chaine@@ : remplacement de la chaine
  • +
+
diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index e1e2512..0bf57c2 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -59,6 +59,9 @@ span > em { font-size: 85%; } + .remplacements_slugs { + margin-top: 4rem; + }
@@ -131,6 +134,8 @@ Nouveau modèle Double clic pour éditer les champs des modèles.
+ +
- diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index 498aa4a..6a3f920 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -110,9 +110,8 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient $Tmails_erreur[] = $dest; } } - $erreurs['pour'] = ''; if (count($Tid_erreur)) { - $erreurs['pour'] .= _T("gamumail:id_destinataires_sans_mails", ['ids_erreur' => join(', ', $Tid_erreur)]).' '; + $erreurs['pour'] = _T("gamumail:id_destinataires_sans_mails", ['ids_erreur' => join(', ', $Tid_erreur)]).' '; } if (count($Tmails_erreur)) { $erreurs['pour'] .= _T("gamumail:mails_destinataires_en_erreur", ['mails_erreur' => join(', ', $Tmails_erreur)]); @@ -236,19 +235,6 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = } $html = $html_header . $html . $html_footer; - $corps = [ - 'html' => $html, - 'texte' => $texte, - 'cc' => $cc, - 'cci' => $cci, - 'pieces_jointes' => $pieces_jointes - ]; - -/* - if ($f = charger_fonction('traiter', 'gamumail', true)) { - $corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect); - } -*/ // pipeline pour les traitement du contenu des slugs spécifiques de chaque plugin $args = $options; $args['slug'] = $slug; @@ -257,7 +243,21 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = 'args' => $args, 'data' => $html )); + $texte = facteur_mail_html2text($html); + $corps = [ + 'html' => $html, + 'texte' => $texte, + 'cc' => $cc, + 'cci' => $cci, + 'pieces_jointes' => $pieces_jointes + ]; + + /* + if ($f = charger_fonction('traiter', 'gamumail', true)) { + $corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect); + } +*/ // appel d'une éventuelle fonction de traitement du contenu spécifique du slug if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) { $corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect); @@ -265,11 +265,13 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = $envoyer_mail = charger_fonction('envoyer_mail', 'inc/'); $ok = $envoyer_mail($Tmails, $sujet, $corps); + if (!$ok) { spip_log("Erreur d'envoi du mail : ","gamumail"); spip_log($corps,"gamumail"); $retour['message_erreur'] = _T("gamumail:erreur_envoi_mail"); - } else { + } + else { $retour['message_ok'] = _T('gamumail:mail_envoye'); } @@ -280,7 +282,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = } } - if ($redirect) { + if ($redirect AND $redirect != '') { $retour['redirect'] = $redirect; } diff --git a/inc/envoyer_gamumail.php b/inc/envoyer_gamumail.php index 7da0478..7c81af6 100644 --- a/inc/envoyer_gamumail.php +++ b/inc/envoyer_gamumail.php @@ -31,7 +31,6 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { if ($res) { $sujet = $res['sujet']; $html = propre($res['texte']); - $texte = facteur_mail_html2text($html); $id_docs = $res['id_docs']; } else { @@ -162,6 +161,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { 'args' => $args, 'data' => $html )); + $texte = facteur_mail_html2text($html); $corps = [ 'html' => $html, @@ -217,6 +217,5 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { $retour['redirect'] = $redirect; } */ - return $retour; } diff --git a/inclure/envoyer_gamumail.html b/inclure/envoyer_gamumail.html index fa123cb..9220155 100644 --- a/inclure/envoyer_gamumail.html +++ b/inclure/envoyer_gamumail.html @@ -33,16 +33,20 @@
-

<:gamumail:contenu_mail:>

-
- [(#FORMULAIRE_GAMUMAIL{ - #ENV{slug}, - #ENV{destinataires}, - #ENV{client}, - #ENV{Tpdf}, - #ENV{redirect}, - #ARRAY{} - })] -
+
-
\ No newline at end of file +
+ \ No newline at end of file diff --git a/inclure/vue_slug.html b/inclure/vue_slug.html new file mode 100644 index 0000000..c6aa3c6 --- /dev/null +++ b/inclure/vue_slug.html @@ -0,0 +1,11 @@ +

<:gamumail:contenu_mail:>

+
+ [(#FORMULAIRE_GAMUMAIL{ + #ENV{slug}, + #ENV{dest}, + #ENV{client}, + #ENV{Tpdf}, + #ENV{redirect}, + #ARRAY{} + })] +
diff --git a/lang/gamumail_fr.php b/lang/gamumail_fr.php index 1d2efb7..f9a709d 100644 --- a/lang/gamumail_fr.php +++ b/lang/gamumail_fr.php @@ -11,6 +11,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( // A 'ajouter_lien_gamumail' => 'Ajouter ce gamumail', 'avertissement_remplacements' => 'NB: attention! tous les autres remplacements sont spécifiques de leur modèle et ne peuvent êtres utilisés dans un autre modèle', + 'autres_fichiers_attaches' => 'Autres Fichiers attachés', // C 'champ_slug_label' => 'Slug', @@ -25,6 +26,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( "erreur_envoi_mail" => "Erreur dans l'envoi de votre mail", 'erreur_format_slug' => 'Le slug est un identifiant qui ne peut contenir que des chiffres, lettres et _ ou -', + // F + 'pdf_envoyes' => 'Fichiers PDF envoyés', // I 'icone_creer_gamumail' => 'Créer un gamumail', From 04c6f0824a79debe2d33e45fb9b21c3b2718d6b7 Mon Sep 17 00:00:00 2001 From: clem Date: Sun, 30 Aug 2020 19:06:52 +0200 Subject: [PATCH 20/48] documentation --- README.md | 60 ++++++++++++++++++++++++++++++++--- inclure/envoyer_gamumail.html | 1 + 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2ef42dd..a87dd5d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # gamuMail -> P.O.C pour généraliser un formulaire d'envoi de message +> formulaire d'envoi de messages configurables ## Il gere nativement : * Pour * Cc en meta : **gamumail/mail_cc** @@ -13,9 +13,10 @@ ## Il gere des modèles de contenu pour : * Sujet * Texte +* ID documents joints (spip_documents) --- -* Chaque modèle à un identifiant textuel : **slug** qui doit etre unique. Il ne peut etre creer / modifié QUE par les webmestres +* Chaque modèle à un identifiant textuel : **slug** qui doit etre unique. Il ne peut etre créé / modifié QUE par les webmestres * Pour gerer ses modèles, il faut inclure dans une page : ```html @@ -48,8 +49,29 @@ ex de fichier : * gamumail/SLUG_soustexte.html -> sous le contenu du mail, avant les pièces jointes * gamumail/SLUG_fichier.html -> à la fin du formulaire +### aide à la rédaction du contenu: +- le fichier **gamumail/remplacement_slugs.html** (surchargeable donc) s'affiche en bas de la page de configuration des modèles **inclure/gamumail_config.html** +et du formulaire d'envoi **formulaires/gamumail.html** : il permet de lister les remplacements effectués pour **tous les modèles** +(= ceux fournis par le pipeline **remplacement_slugs**, cf ci-dessous) +- une page de test des slugs est fournie à l'URL **...?page=test_slug&slug=mail_libre&dest=27** + +### exemple de page d'envoi de mail en choisissant un slug parmi ceux existant : +```html +[(#AUTORISER{modifier,souscripteur,#ENV{id_auteur}}|sinon_interdire_acces)] + + +
+
+

Envoyer un mail à [(#PRENOM|ucfirst) ][(#NOM|ucfirst)]

+ + +
+
+ +``` + ### Dans le php -#### 1. Appel du formualire +#### 1. Appel du formulaire > Args du formulaire : > ```php @@ -78,6 +100,8 @@ Pour chaque étape, on peut modifier l'Array de sortie : * charger -> $valeurs * verifier -> $erreurs * traiter -> $corps (array du message envoyé à facteur) + +Voir **gamumail_fonctions.php** pour les arguments des fonctions de surcharge + exemples Pour cela, il faut creer une fonction du type (qui utilise les memes arg que les fonctions CVT + premier arg l'Array que l'on veut modifier): * pour charger : **gamumail/charger.php** pour tous les formulaires ou @@ -94,7 +118,6 @@ function gamumail_SLUG_verifier($erreurs, $options = []){ return $erreurs; } ``` -* pour traiter : **gamumail/traiter.php** pour tous les formulaires ou * pour traiter : **gamumail/SLUG_traiter.php** avec une fonction ex: ```php function gamumail_contrat_resa_traiter($corps, $options = []){ @@ -117,11 +140,38 @@ function gamumail_contrat_resa_traiter($corps, $options = []){ return $corps; } ``` +#### 3. Pipeline remplacements_slug pour le traitement du contenu des messages +Pour les remplacements des @@ et tout autre traitement du texte des mails on utilisera le pipeline **remplacements_slug** qui utilise les arguments suivants : +```php + * @param array $flux données du pipeline : + * $flux['data'] = $html + * $flux['args']['slug'] = $slug + * $flux['args']['destinataires'] = $destinataires + * $flux['args']['options'] = $options + * @return array $flux données du pipeline +``` -#### 3. Ajouter un header / footer dans notre content html +#### 4. Ajouter un header / footer dans le content html on peut définir un header / footer pour les messages : * gamumail/html_header.html => header pour tous les mails * gamumail/html_footer.html => footer pour tous les mails * gamumail/SLUG_html_header.html => pour les mails du modele SLUG * gamumail/SLUG_html_footer.html => pour les mails du modele SLUG + +## API d'envoi de mails utilisant les slugs +### fonction envoyer_gamumail() +- exemple d'appel : +```php +$fonction = charger_fonction('envoyer_gamumail','inc'); +$fonction(lire_config('souscriptions/slug_souscription_creation'), $Tdest, ['debug' => false, 'nb_parts' => intval(_request('nombre'))]); +``` +- arguments : +```php + * @param string $slug + * @param string|array $destinataires = adresses mails et id_auteur séparées par , ou en array + * si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs + * @param array $options : + * $options['debug' => true] pour afficher le $corps final sans envoyer le mail + * $options['cci' => true] pour passer tous les destinataires en cci si il y en a plus qu'un +``` diff --git a/inclure/envoyer_gamumail.html b/inclure/envoyer_gamumail.html index 9220155..697e9a4 100644 --- a/inclure/envoyer_gamumail.html +++ b/inclure/envoyer_gamumail.html @@ -35,6 +35,7 @@
+
+ diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index 4441fc0..03382de 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -100,7 +100,7 @@ [(#AUTORISER{supprimer,gamumail}|oui)
<:gamumail:slug:>: - [(#SLUG|sinon{<:gamumail:dbe_clic_editer:>})] + [(#SLUG|sinon{<:gamumail:dbe_clic_editer:>})]
]
diff --git a/vues/gamumail_nom_slug.html b/vues/gamumail_nom_slug.html new file mode 100644 index 0000000..670914e --- /dev/null +++ b/vues/gamumail_nom_slug.html @@ -0,0 +1,3 @@ + + #SLUG + \ No newline at end of file From 8e8cfc379a4860373baa432284b24c426d8de2be Mon Sep 17 00:00:00 2001 From: clem Date: Tue, 1 Dec 2020 23:11:14 +0100 Subject: [PATCH 34/48] =?UTF-8?q?le=20howto=20pour=20outrepasser=20les=20e?= =?UTF-8?q?rreurs=20de=20certificat=20auto-sign=C3=A9=20lors=20de=20devs?= =?UTF-8?q?=20en=20https=20local?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++++++ content/configuration_mails.html | 2 ++ inc/charger_pdf.php | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 content/configuration_mails.html diff --git a/README.md b/README.md index ed27fbe..a20b76c 100644 --- a/README.md +++ b/README.md @@ -192,3 +192,11 @@ $fonction(lire_config('souscriptions/slug_souscription_validation'), $Tdest, $op * 'contexte' => ['parametre_url_1' => 'valeur_1', 'parametre_url_2' => 'valeur_2', ...] * 'nom' => 'nom_fichier_attache' ] ``` + +## Outrepasser l'erreur de certificat auto-signé lors de devs en https local +=> dans `inc/cherger_pdf.php` décommenter les 2 lignes suivante: +``` + // pour une connexion https locale (certificat auto-signé) décommenter les 2 lignes suivantes + curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYPEER, false); +``` diff --git a/content/configuration_mails.html b/content/configuration_mails.html new file mode 100644 index 0000000..fb2fba9 --- /dev/null +++ b/content/configuration_mails.html @@ -0,0 +1,2 @@ +[(#AUTORISER{webmestre}|sinon_interdire_acces)] + diff --git a/inc/charger_pdf.php b/inc/charger_pdf.php index 64d1934..5f78bd4 100644 --- a/inc/charger_pdf.php +++ b/inc/charger_pdf.php @@ -18,6 +18,11 @@ function inc_charger_pdf_dist($fichier_pdf, $contexte = []){ } } $CurlConnect = curl_init(); + + // pour une connexion https locale (certificat auto-signé) décommenter les 2 lignes suivantes + //curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false); + //curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($CurlConnect, CURLOPT_URL, $url); curl_setopt($CurlConnect, CURLOPT_RETURNTRANSFER, 1 ); //curl_setopt($CurlConnect, CURLOPT_POSTFIELDS, $request); From 70ef56ad299bc70afdc63db51566c934a41e682f Mon Sep 17 00:00:00 2001 From: clem Date: Wed, 2 Dec 2020 01:52:30 +0100 Subject: [PATCH 35/48] =?UTF-8?q?utilisation=20de=20la=20constante=20=5FDE?= =?UTF-8?q?BUG=5FAUTORISER=20(tir=C3=A9e=20de=20dd)=20pour=20que=20le=20cu?= =?UTF-8?q?rl=20de=20la=20ges=C3=A9n=C3=A9ration=20des=20pdf=20ne=20bloque?= =?UTF-8?q?=20pas=20avec=20les=20certificats=20auto-sign=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++++++++-- inc/charger_pdf.php | 9 +++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a20b76c..3cff437 100644 --- a/README.md +++ b/README.md @@ -194,9 +194,15 @@ $fonction(lire_config('souscriptions/slug_souscription_validation'), $Tdest, $op ``` ## Outrepasser l'erreur de certificat auto-signé lors de devs en https local -=> dans `inc/cherger_pdf.php` décommenter les 2 lignes suivante: +=> dans le mes_options.php du site mettre : ``` - // pour une connexion https locale (certificat auto-signé) décommenter les 2 lignes suivantes +define('_DEBUG_AUTORISER', true); +``` +ce qui permet d'activer les options de curl pour ne pas vérifier le certificat dans *charger_pdf.php* : +``` +// pour une connexion https locale avec certificat auto-signé +if (defined('_DEBUG_AUTORISER')) { curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYPEER, false); +} ``` diff --git a/inc/charger_pdf.php b/inc/charger_pdf.php index 5f78bd4..a4bbe9a 100644 --- a/inc/charger_pdf.php +++ b/inc/charger_pdf.php @@ -19,10 +19,11 @@ function inc_charger_pdf_dist($fichier_pdf, $contexte = []){ } $CurlConnect = curl_init(); - // pour une connexion https locale (certificat auto-signé) décommenter les 2 lignes suivantes - //curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false); - //curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYPEER, false); - + // pour une connexion https locale avec certificat auto-signé + if (defined('_DEBUG_AUTORISER')) { + curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYPEER, false); + } curl_setopt($CurlConnect, CURLOPT_URL, $url); curl_setopt($CurlConnect, CURLOPT_RETURNTRANSFER, 1 ); //curl_setopt($CurlConnect, CURLOPT_POSTFIELDS, $request); From 4240e864522538e9b31bccfdedfdf759e6e677fb Mon Sep 17 00:00:00 2001 From: cy_altern Date: Thu, 14 Jan 2021 21:40:43 +0100 Subject: [PATCH 36/48] =?UTF-8?q?correction=20=C3=A0=20tester/valider=20:?= =?UTF-8?q?=20on=20peut=20passer=20les=20param=C3=A8tres=20de=20l'url=20du?= =?UTF-8?q?=20PDF=20en=20string=20syst=C3=A9matiquement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/charger_pdf.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/inc/charger_pdf.php b/inc/charger_pdf.php index a4bbe9a..6922007 100644 --- a/inc/charger_pdf.php +++ b/inc/charger_pdf.php @@ -4,19 +4,23 @@ if (!defined('_ECRIRE_INC_VERSION')){ } function inc_charger_pdf_dist($fichier_pdf, $contexte = []){ +var_dump($contexte); $login = lire_config('curl_login'); $password = lire_config('curl_mdp'); $url = $GLOBALS['meta']['adresse_site'].'/spip.php?page=spipdf&spipdf='.$fichier_pdf; if (is_array($contexte) and count($contexte)) { foreach ($contexte as $champ => $val) { - if (intval($val)) { +/* if (intval($val) === $val) { + // if (intval($val)) { $val = intval($val); } else { $val = "$val"; } +*/ $url .= "&$champ=$val"; } } + $CurlConnect = curl_init(); // pour une connexion https locale avec certificat auto-signé From c464fcae54ee8c0e1ad49482147375c432e8384b Mon Sep 17 00:00:00 2001 From: cy_altern Date: Thu, 14 Jan 2021 21:44:42 +0100 Subject: [PATCH 37/48] comme d'hab' ne pas laisser trainer de var_dump() --- inc/charger_pdf.php | 1 - 1 file changed, 1 deletion(-) diff --git a/inc/charger_pdf.php b/inc/charger_pdf.php index 6922007..5300723 100644 --- a/inc/charger_pdf.php +++ b/inc/charger_pdf.php @@ -4,7 +4,6 @@ if (!defined('_ECRIRE_INC_VERSION')){ } function inc_charger_pdf_dist($fichier_pdf, $contexte = []){ -var_dump($contexte); $login = lire_config('curl_login'); $password = lire_config('curl_mdp'); $url = $GLOBALS['meta']['adresse_site'].'/spip.php?page=spipdf&spipdf='.$fichier_pdf; From a978584a2ff93a2c0a651b216aac0bab1a4bf4f6 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Thu, 14 Jan 2021 22:29:08 +0100 Subject: [PATCH 38/48] =?UTF-8?q?grand=20luxe=20:=20le=20PDF=20personnalis?= =?UTF-8?q?=C3=A9=20est=20t=C3=A9l=C3=A9chargeable=20pour=20visualisation?= =?UTF-8?q?=20via=20un=20lien=20dans=20le=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/gamumail.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/formulaires/gamumail.html b/formulaires/gamumail.html index 0785003..2f1ad88 100644 --- a/formulaires/gamumail.html +++ b/formulaires/gamumail.html @@ -84,7 +84,12 @@
- + [(#SET{url_pdf,[(#URL_PAGE{spipdf}|parametre_url{spipdf,#VALEUR})]})] + + [(#SET{url_pdf,[(#GET{url_pdf}|parametre_url{#CLE,#VALEUR})]})] + + + [(#REM) |parametre_url{arg,#ENV{options/arg}})]
From 219c1ef56d91d732338a0797d37acb21ecf8ed60 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Thu, 14 Jan 2021 22:31:30 +0100 Subject: [PATCH 39/48] menage --- formulaires/gamumail.html | 1 - 1 file changed, 1 deletion(-) diff --git a/formulaires/gamumail.html b/formulaires/gamumail.html index 2f1ad88..c05f85f 100644 --- a/formulaires/gamumail.html +++ b/formulaires/gamumail.html @@ -89,7 +89,6 @@ [(#SET{url_pdf,[(#GET{url_pdf}|parametre_url{#CLE,#VALEUR})]})] - [(#REM) |parametre_url{arg,#ENV{options/arg}})]
From cf20da09501dfce322ea03d5bdda7d63e16d28f1 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Thu, 14 Jan 2021 22:33:50 +0100 Subject: [PATCH 40/48] up de z --- paquet.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paquet.xml b/paquet.xml index d2d622b..5d8f59e 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ Date: Sun, 7 Mar 2021 19:16:14 +0100 Subject: [PATCH 41/48] =?UTF-8?q?broutilles=20pour=20compatibilit=C3=A9=20?= =?UTF-8?q?Roc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/gamumail.html | 9 ++++++--- formulaires/gamumail.php | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/formulaires/gamumail.html b/formulaires/gamumail.html index 0785003..39f1b77 100644 --- a/formulaires/gamumail.html +++ b/formulaires/gamumail.html @@ -124,9 +124,12 @@ //onAjaxLoad(gamumail); function gamumail(){ - $(".tagEditor").tagEditor({ - delimiter: ',; ' - }); + var navigateur = navigator.platform.toUpperCase().slice(0, 3); + if (navigateur !== "MAC") { + $(".tagEditor").tagEditor({ + delimiter: ',; ' + }); + } } }); diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index 2576e9a..229d540 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -1,7 +1,6 @@ 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] - * @param array $Tpdf []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] + * @param array $Tclient = un ou plusieurs mails de destinataires sortis d'une table objet spécifique + * de la forme []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] + * @param array $Tpdf = un ou plusieurs fichiers PDF générés par spiPDF (le contexte permet la personnalisation du contenu) + * []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] * @param string $redirect - * @param array $options + * @param array $options = un gros fourre-tout sous forme d'un array + * utilisé en particulier par les inclure HTML de gamumail/#SLUG_soustexte et gamumail/#SLUG_fichiers * * @return array $valeurs * @@ -308,3 +310,10 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = return $retour; } + +// report depuis gamumail_roc (pas certain que ça serve encore à qq chose...) +function gamumail_supprimer_si_vide($v){ + if (!empty($v)) { + return $v; + } +} From 2abc097a57129127e0e555d1b0e03791ddc2542f Mon Sep 17 00:00:00 2001 From: cy_altern Date: Sun, 7 Mar 2021 19:20:47 +0100 Subject: [PATCH 42/48] pas de doublon de fonction... --- formulaires/gamumail.php | 7 ------- 1 file changed, 7 deletions(-) diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index 229d540..b6c5ffe 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -310,10 +310,3 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = return $retour; } - -// report depuis gamumail_roc (pas certain que ça serve encore à qq chose...) -function gamumail_supprimer_si_vide($v){ - if (!empty($v)) { - return $v; - } -} From c9864295687d0c7b0d2b839ab698d5e03faaa7d4 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Mon, 8 Mar 2021 18:59:52 +0100 Subject: [PATCH 43/48] =?UTF-8?q?autorisation=20de=20modifier=20le=20nom?= =?UTF-8?q?=20du=20slug=20=3D=20r=C3=A9serv=C3=A9=20aux=20admins=20@gamuza?= =?UTF-8?q?.fr.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/gamumail.css | 2 +- gamumail_autorisations.php | 12 +++++++++--- inclure/gamumail_config.html | 17 +++++++++++------ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/css/gamumail.css b/css/gamumail.css index eba2958..83b76dd 100644 --- a/css/gamumail.css +++ b/css/gamumail.css @@ -194,4 +194,4 @@ } .formulaire_gamumail .btn { font-size: 3rem; -} \ No newline at end of file +} diff --git a/gamumail_autorisations.php b/gamumail_autorisations.php index 568d554..dbce6fd 100644 --- a/gamumail_autorisations.php +++ b/gamumail_autorisations.php @@ -24,9 +24,6 @@ function gamumail_autoriser() { // ----------------- // Objet gamumails - - - /** * Autorisation de créer (gamumail) * @@ -82,3 +79,12 @@ function autoriser_gamumail_modifier_dist($faire, $type, $id, $qui, $opt) { function autoriser_gamumail_supprimer_dist($faire, $type, $id, $qui, $opt) { return $qui['statut'] == '0minirezo' and !$qui['restreint']; } + +/** + * Autorisation de modifier le nom d'un slug + * uniquement les webmestres avec un mail en @gamuza.fr + **/ +function autoriser_gamumail_modifier_nom_slug_dist($faire, $type, $id, $qui, $opt) { + return $qui['webmestre'] === "oui" + and strpos($qui['email'], 'gamuza.fr') !== false; +} \ No newline at end of file diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index 03382de..d5f5674 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -14,6 +14,9 @@ padding: 10px; border-radius: 4px; } + .configuration_mails .well .crayon { + background-color: inherit; + } .un-pdf { border: 1px solid black; margin-bottom: 1rem; @@ -97,12 +100,14 @@
- [(#AUTORISER{supprimer,gamumail}|oui) -
- <:gamumail:slug:>: - [(#SLUG|sinon{<:gamumail:dbe_clic_editer:>})] -
- ] +
+ <:gamumail:slug:>: + [(#AUTORISER{modifier_nom_slug,gamumail}|?{ + [(#SLUG|sinon{<:gamumail:dbe_clic_editer:>})] + , + [(#SLUG)] + })] +
<:gamumail:objet:>: [(#SUJET|sinon{<:gamumail:dbe_clic_editer:>})] From 300eb97642055c77418a0699967f8b74b68feda1 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Mon, 8 Mar 2021 20:59:12 +0100 Subject: [PATCH 44/48] css et chaine de langue --- inclure/gamumail_config.html | 6 +++--- lang/gamumail_fr.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/inclure/gamumail_config.html b/inclure/gamumail_config.html index d5f5674..0824289 100644 --- a/inclure/gamumail_config.html +++ b/inclure/gamumail_config.html @@ -14,9 +14,6 @@ padding: 10px; border-radius: 4px; } - .configuration_mails .well .crayon { - background-color: inherit; - } .un-pdf { border: 1px solid black; margin-bottom: 1rem; @@ -30,6 +27,9 @@ background-color: #fff; padding: .5rem; } + .well h4.crayon { + background-color: #cecece; + } .wp600 { width: 600px; } diff --git a/lang/gamumail_fr.php b/lang/gamumail_fr.php index 19760ab..96aa2fa 100644 --- a/lang/gamumail_fr.php +++ b/lang/gamumail_fr.php @@ -34,7 +34,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'email_en_cc' => 'Emails en copie "cc" des différents messages', 'email_en_cci' => 'Emails en copie cachée "cci" des différents messages', 'editer_titre' => 'Editer le titre', - 'explication_mail_auto_uniquement' => 'permet de ne pas afficher les mails utilisés uniquement en envoi automatique', + 'explication_mail_auto_uniquement' => 'permet de ne pas afficher les modèles utilisés uniquement en envoi automatique', // F 'pdf_envoyes' => 'Fichiers PDF envoyés', From b220ddc30a9bfed83ca4ccd8539af809dc0dda51 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Tue, 9 Mar 2021 01:04:30 +0100 Subject: [PATCH 45/48] =?UTF-8?q?ajout=20des=20documents=20attach=C3=A9s?= =?UTF-8?q?=20r=C3=A9cup=C3=A9r=C3=A9s=20via=20un=20=C3=A9ventuel=20inclur?= =?UTF-8?q?e=20gamumail/#SLUG=5Ffichiers.html=20.=20Maj=20de=20la=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++++----- formulaires/gamumail.html | 2 ++ formulaires/gamumail.php | 75 +++++++++++++++++++++++++++++---------- 3 files changed, 68 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 3cff437..8cd3f24 100644 --- a/README.md +++ b/README.md @@ -78,15 +78,16 @@ et du formulaire d'envoi **formulaires/gamumail.html** : il permet de lister les * formulaire générique pour envoyer des mails avec pieces attachés * * @param string $slug modele du mail a charger - * @param int|string $auteur id_auteur ou email du destinataire - * @param array $Tclient []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] - * ou - * ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] - * @param array $Tpdf []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] - * ou - * ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] + * @param string $destinataires = adresses mails et id_auteurs séparées par , ou en array + * si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs + * @param array $Tclient = un ou plusieurs mails de destinataires sortis d'une table objet spécifique + * de la forme []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] + * @param array $Tpdf = un ou plusieurs fichiers PDF générés par spiPDF (le contexte permet la personnalisation du contenu) + * []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] * @param string $redirect - * @param array $options + * @param array $options = un gros fourre-tout sous forme d'un array + * utilisé en particulier par les inclure HTML de gamumail/#SLUG_soustexte et gamumail/#SLUG_fichiers + * * @return array $valeurs */ function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ diff --git a/formulaires/gamumail.html b/formulaires/gamumail.html index 66ce069..9685e5f 100644 --- a/formulaires/gamumail.html +++ b/formulaires/gamumail.html @@ -111,6 +111,8 @@ #SET{fichier,#SLUG|concat{_fichiers}} [(#CHEMIN{gamumail/#GET{fichier}.html}|oui) + #SET{erreurs,#ENV**{erreurs}|table_valeur{Tid_doc}} + [(#GET{erreurs})] ] diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index b6c5ffe..bcbeae9 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -71,9 +71,11 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = 'TFichierpdfs' => $TFichierPdf, 'Tpdfs_ok' => [], 'docs_spip' => $gamuMail['id_docs'], + 'Tid_fichiers' => [], 'options' => $options ); + // surcharges charger if ($f = charger_fonction('charger', 'gamumail', true)) { $valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect); } @@ -121,24 +123,39 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient } // les id_document attachés sont-ils OK ? - $Tid_docs = []; + $docs_spip = []; if (_request('docs_spip') != '') { - $Tid_docs = explode(',', _request('docs_spip')); + $docs_spip = explode(',', _request('docs_spip')); } - if (count($Tid_docs)) { - $Tid_docs_erreurs = []; - foreach($Tid_docs as $id_doc) { + if (count($docs_spip)) { + $docs_spip_erreurs = []; + foreach($docs_spip as $id_doc) { if (intval($id_doc) != $id_doc OR !sql_getfetsel('id_document', 'spip_documents', 'id_document='.$id_doc)) { - $Tid_docs_erreurs[] = $id_doc; + $docs_spip_erreurs[] = $id_doc; } } - if (count($Tid_docs_erreurs)) { - $erreurs['docs_spip'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $Tid_docs_erreurs)]); + if (count($docs_spip_erreurs)) { + $erreurs['docs_spip'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $docs_spip_erreurs)]); } } - // surcharges + // les fichiers envoyés par un éventuel inclure gamumail/#SLUG_fichiers.html sont ils OK ? + $Tid_doc = _request('Tid_doc'); + if (count($Tid_doc)) { + $Tid_doc_erreurs = []; + foreach($Tid_doc as $id_doc) { + if (intval($id_doc) != $id_doc + OR !sql_getfetsel('id_document', 'spip_documents', 'id_document='.$id_doc)) { + $Tid_doc_erreurs[] = $id_doc; + } + } + if (count($Tid_doc_erreurs)) { + $erreurs['Tid_doc'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $Tid_doc_erreurs)]); + } + } + + // surcharges verifier if ($f = charger_fonction('verifier', 'gamumail', true)) { $erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect); } @@ -155,14 +172,15 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = $retour = array(); - $pour = _request('pour'); - $cc = _request('cc'); - $cci = _request('cci'); - $sujet = _request('sujet'); - $html = propre(_request('texte')); - $docs_spip = _request('docs_spip'); - $Tpdfs_ok = _request('Tpdfs_ok'); - $texte = facteur_mail_html2text($html); + $pour = _request('pour'); + $cc = _request('cc'); + $cci = _request('cci'); + $sujet = _request('sujet'); + $html = propre(_request('texte')); + $docs_spip = _request('docs_spip'); + $Tpdfs_ok = _request('Tpdfs_ok'); + $Tid_doc = _request('Tid_doc'); + $texte = facteur_mail_html2text($html); $pour = explode(',', $pour); $cc = explode(',', $cc); @@ -191,7 +209,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = $options = $f($options, $destinataires, $Tclient, $Tpdf); } - // les documents joints + // les documents par id_document if (!empty($docs_spip)) { foreach ($docs_spip as $id_document) { $Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document)); @@ -212,6 +230,27 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = } } + // les documents par Tid_doc envoyés depuis inclure gamumail/#SLUG_fichiers.html + if (!empty($Tid_doc)) { + foreach ($Tid_doc as $id_doc) { + $Tdocs = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_doc)); + $destination = _DIR_IMG.$Tdocs['fichier']; + $extension = $Tdocs['extension']; + if ($Tdocs['titre']) { + $nom_fichier = $Tdocs['titre'] .".".$extension; + } else { + $nom_fichier = basename($Tdocs['fichier']); + } + $type_mime = bigup_get_mime_type_extension($extension); + $pieces_jointes[] = [ + 'chemin' => $destination, + 'nom' => $nom_fichier, + 'encodage' => 'base64', + 'mime' => $type_mime + ]; + } + } + // les pdfs $Tpdf_dell = []; if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) { From 1440d1ed1e8fd0132e8a49d2a46d2ea1253429e1 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Tue, 9 Mar 2021 01:24:43 +0100 Subject: [PATCH 46/48] =?UTF-8?q?d=C3=A9bogage=20en=20cours=20pour=20l'att?= =?UTF-8?q?achement=20des=20id=5Fdocument?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formulaires/gamumail.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index bcbeae9..4b85c6f 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -186,8 +186,6 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = $cc = explode(',', $cc); $cci = explode(',', $cci); - $docs_spip = ($docs_spip != '' ? explode(',', $docs_spip) : []); - $destinataires = []; foreach ($pour as $dest) { if (is_numeric($dest)) { @@ -210,6 +208,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = } // les documents par id_document + $docs_spip = ($docs_spip != '' ? explode(',', $docs_spip) : []); if (!empty($docs_spip)) { foreach ($docs_spip as $id_document) { $Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document)); @@ -280,6 +279,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = ]; } } +var_dump($pieces_jointes);die; $html_header = ''; if (find_in_path('gamumail/'.$slug .'_html_header.html')) { From 17b1fec421920ce1ebdf777bf04eba8553c61837 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Thu, 1 Apr 2021 00:46:59 +0200 Subject: [PATCH 47/48] correction de count() pas sur des arrays + un var_dump de debog qui trainait --- formulaires/gamumail.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index 4b85c6f..a9b67d2 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -127,7 +127,7 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient if (_request('docs_spip') != '') { $docs_spip = explode(',', _request('docs_spip')); } - if (count($docs_spip)) { + if (is_array($docs_spip) and count($docs_spip)) { $docs_spip_erreurs = []; foreach($docs_spip as $id_doc) { if (intval($id_doc) != $id_doc @@ -141,8 +141,9 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient } // les fichiers envoyés par un éventuel inclure gamumail/#SLUG_fichiers.html sont ils OK ? + $Tid_doc = []; $Tid_doc = _request('Tid_doc'); - if (count($Tid_doc)) { + if (is_array($Tid_doc) and count($Tid_doc)) { $Tid_doc_erreurs = []; foreach($Tid_doc as $id_doc) { if (intval($id_doc) != $id_doc @@ -279,7 +280,6 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient = ]; } } -var_dump($pieces_jointes);die; $html_header = ''; if (find_in_path('gamumail/'.$slug .'_html_header.html')) { From 80865db89221d6ac549d7e2a0a2cb92fad3cd114 Mon Sep 17 00:00:00 2001 From: tofulm Date: Thu, 8 Apr 2021 15:03:06 +0200 Subject: [PATCH 48/48] pas de cron --- gamumail_pipelines.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gamumail_pipelines.php b/gamumail_pipelines.php index fc6c854..d83f26f 100644 --- a/gamumail_pipelines.php +++ b/gamumail_pipelines.php @@ -15,17 +15,17 @@ if (!defined('_ECRIRE_INC_VERSION')) { /** * pipeline pour faire les remplacements des @@ dans le contenu du slug envoyé dans $flux - * + * * @param array $flux données du pipeline : * $flux['data'] = $html * $flux['args']['slug'] = $slug * $flux['args']['destinataires'] = $destinataires * $flux['args']['options'] = $options * @return array $flux données du pipeline - * + * **/ function gamumail_remplacements_slug($flux) { - + return $flux; } @@ -40,10 +40,11 @@ function gamumail_remplacements_slug($flux) { * @param array $flux Données du pipeline * @return array Données du pipeline */ +/* function gamumail_optimiser_base_disparus($flux) { sql_delete('spip_gamumails', "statut='poubelle' AND maj < " . $flux['args']['date']); return $flux; } - + */