From ec5dcd9fe8a5396e08148522ef67e65144fe9717 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Sun, 25 Apr 2021 21:44:48 +0200 Subject: [PATCH] =?UTF-8?q?am=C3=A9lioration=20du=20syst=C3=A8me=20de=20re?= =?UTF-8?q?mplacements=20@@truc=5Fa=5Fremplacer@@=20pour=20permettre=20?= =?UTF-8?q?=C3=A0=20Gamumail=20de=20fournir=20des=20remplacement=20g=C3=A9?= =?UTF-8?q?n=C3=A9riques=20(via=20inc/gamumail=5Fremplacements.php).=20Pas?= =?UTF-8?q?sage=20de=20la=20doc=20int=C3=A9gr=C3=A9e=20des=20remplacements?= =?UTF-8?q?=20via=20['remplacements=5Fgamumail']=20pour=20permettre=20?= =?UTF-8?q?=C3=A0=20chaque=20plugin=20de=20fournir=20la=20doc=20de=20ses?= =?UTF-8?q?=20remplacements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++--- gamumail/remplacements_slugs.html | 4 ++- gamumail_fonctions.php | 20 +++++++++++++-- gamumail_options.php | 1 + inc/envoyer_gamumail.php | 8 +++++- inc/gamumail_remplacements.php | 42 +++++++++++++++++++++++++++++++ lang/gamumail_fr.php | 7 ++++++ 7 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 inc/gamumail_remplacements.php diff --git a/README.md b/README.md index f16f005..6a2b090 100644 --- a/README.md +++ b/README.md @@ -46,9 +46,15 @@ ex de fichier : * 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) +- le fichier **gamumail/remplacement_slugs.html** 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** qui sont : + - les génériques fournis par Gamumail par la fonction `inc_gamumail_remplacements_dist()` du fichier `inc/gamumail_remplacements.php` + - ceux fournis par les plugins via le pipeline **remplacement_slugs** (cf ci-dessous) +- pour documenter les remplacements (pied de la page gamumail_config.html), chaque plugin doit renseigner ses remplacements dans l'array global `$GLOBALS['remplacements_gamumail']` +Exemple dans un fichier `prefixe_fonctions.php` : +```php +$GLOBALS['remplacements_gamumail']['@@num_facture@@'] = 'numéro de la facture'; +``` - 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 : diff --git a/gamumail/remplacements_slugs.html b/gamumail/remplacements_slugs.html index b680756..73d9c4c 100644 --- a/gamumail/remplacements_slugs.html +++ b/gamumail/remplacements_slugs.html @@ -6,7 +6,9 @@

<:gamumail:remplacements_disponibles:>

<:gamumail:avertissement_remplacements:>
diff --git a/gamumail_fonctions.php b/gamumail_fonctions.php index d4861fd..b552b73 100644 --- a/gamumail_fonctions.php +++ b/gamumail_fonctions.php @@ -90,7 +90,6 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $T function gamumail_traiter_dist($corps, $options, $slug, $destinataires='') { $html = $corps['html']; - $html = gamumail_remplacer_modele($html, '@@truc_a_remplacer@@', 'le machin qui remplace'); include_spip('classes/facteur'); $texte = facteur_mail_html2text($html); $corps['html'] = $html; @@ -99,7 +98,6 @@ function gamumail_traiter_dist($corps, $options, $slug, $destinataires='') { return $corps; } - function gamumail_remplacer_modele($modele, $val, $texte){ if ($texte and $modele and $val) { return str_replace('@@'.$modele.'@@', $val, $texte); @@ -107,3 +105,21 @@ function gamumail_remplacer_modele($modele, $val, $texte){ return $texte; } +/** + * pour la doc fournie par inclure/remplacements_slugs.html + * $GLOBALS['remplacements_gamumail'] est l'array global des remplacements dans les slugs (sera complété avec les remplacements des plugins) + * de la forme : ['@@truc_a_remplacer_1@@' => 'le machin qui remplace 1', '@@truc_a_remplacer_2@@' => _T('gamumail:chaine_de_langue_2')...]; + * + **/ +$GLOBALS['remplacements_gamumail'] = [ + '@@nom@@' => _T('gamumail:nom'), + '@@url_site@@' => _T('gamumail:url_site'), + '@@url_raz_passe@@' => _T('gamumail:url_raz_passe'), +]; + +/** + * le filtre pour retourner l'array des remplacements + **/ +function afficher_remplacements() { + return $GLOBALS['remplacements_gamumail']; +} diff --git a/gamumail_options.php b/gamumail_options.php index ae9d9e9..910ee92 100644 --- a/gamumail_options.php +++ b/gamumail_options.php @@ -20,3 +20,4 @@ function crayons_determine_input_mode_type_gamumail($type, $champ, $sqltype) { return in_array($champ, $Ttextarea) ? 'texte' : 'ligne'; } + diff --git a/inc/envoyer_gamumail.php b/inc/envoyer_gamumail.php index f1c3c0d..68ddb55 100644 --- a/inc/envoyer_gamumail.php +++ b/inc/envoyer_gamumail.php @@ -171,7 +171,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { } $html = $html_header . $html . $html_footer; - // pipeline pour les traitement du contenu des slugs spécifiques de chaque plugins + // pipeline pour les remplacements du contenu des slugs spécifiques de chaque plugins $args = $options; $args['slug'] = $slug; $args['destinataires'] = $pour; @@ -179,6 +179,11 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { 'args' => $args, 'data' => $html )); + + // traitement des remplacements génériques fournis par Gamumail + $remplacement_generiques = charger_fonction('gamumail_remplacements', 'inc'); + $html = $remplacement_generiques($args, $html); + $texte = facteur_mail_html2text($html); $corps = [ @@ -209,6 +214,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) { echo '
$corps : '; var_dump($corps); $ok = true; + exit; } else { $envoyer_mail = charger_fonction('envoyer_mail', 'inc/'); diff --git a/inc/gamumail_remplacements.php b/inc/gamumail_remplacements.php new file mode 100644 index 0000000..84eb566 --- /dev/null +++ b/inc/gamumail_remplacements.php @@ -0,0 +1,42 @@ + $slug, 'destinataires' => $pour, [$options]] + * @param string $data = $html + * + * @return $html + * + **/ +function inc_gamumail_remplacements_dist($args, $html) { + + /** + * @@nom@@ => Prenom Nom | Nom (gère la présence/absence du champ prenom dans spip_auteurs) + **/ + $nom = sql_getfetsel('nom', 'spip_auteurs', 'email='.sql_quote($args['destinataires'][0])); + $trouver_table = charger_fonction('trouver_table', 'base'); + $desc = $trouver_table('spip_auteurs'); + if (array_key_exists('prenom', $desc['field']) + and $prenom = sql_getfetsel('prenom', 'spip_auteurs', 'email='.sql_quote($args['destinataires'][0]))) { + $nom = $prenom.' '.$nom; + } + $html = gamumail_remplacer_modele('nom', ucwords($nom), $html); + + /** + * @@url_site@@ => URL du site + **/ + $url_site = lire_config('adresse_site'); + $html = gamumail_remplacer_modele('url_site', $url_site, $html); + + /** + * @@url_raz_passe@@ => URL de la page de récupération de mot de passe + **/ + $html = gamumail_remplacer_modele('url_raz_passe', $url_site.'?page=spip_pass', $html); + + + return $html; +} diff --git a/lang/gamumail_fr.php b/lang/gamumail_fr.php index 96aa2fa..8097876 100644 --- a/lang/gamumail_fr.php +++ b/lang/gamumail_fr.php @@ -62,6 +62,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'modele_masquer' => 'Masquer le modèle', 'modele_afficher' => 'Afficher le modèle', + // N + 'nom' => 'Prénom Nom du destinataire (ou Nom si pas de champ "prenom")', + // O 'objet' => 'Objet', @@ -93,6 +96,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'titre_logo_gamumail' => 'Logo de ce gamumail', 'titre_objets_lies_gamumail' => 'Liés à ce gamumail', + // U + 'url_site' => 'URL du site', + 'url_raz_passe' => 'URL de la page de récupération de mot de passe', + // V 'visibilite_public' => 'Disponible dans la liste des modèles', );