passage dans l'array des PDFs générés à attacher au mail

This commit is contained in:
clem 2020-09-12 23:09:49 +02:00
parent 147bc80a76
commit cb96f9f1b1
8 changed files with 100 additions and 60 deletions

View file

@ -59,7 +59,6 @@
.tag-editor ::-ms-clear {
display: none;
}
/* tag style */
.tag-editor .tag-editor-tag {
/*padding-left: 5px; color: #46799b; background: #e0eaf1; white-space: nowrap;*/
@ -72,7 +71,6 @@
cursor: pointer;
border-radius: 4px 0 0 4px;
}
/* delete icon */
/*.tag-editor .tag-editor-delete { background: #e0eaf1; cursor: pointer; border-radius: 0 2px 2px 0; padding-left: 3px; padding-right: 4px; }*/
.tag-editor .tag-editor-delete {
@ -101,7 +99,6 @@
visibility: hidden;
cursor: text;
}
.tag-editor .tag-editor-tag.active {
background: none !important;
}
@ -163,31 +160,38 @@
.editer_pour label {
width: 50px;
}
.editer_cc {
display: flex;
}
.editer_cc label {
width: 50px;
}
.editer_cci {
display: flex;
}
.editer_cci label {
width: 50px;
}
.reponse_formulaire {
padding: 1rem;
margin-bottom: 2rem;
font-weight: bold;
}
.reponse_formulaire_erreur {
.reponse_formulaire_erreur, .editer .erreur_message {
background-color: #f7d1d1;
border: solid 2px #f00;
display: block;
}
.reponse_formulaire_ok {
background-color: #c4ecd6;
border: solid 2px #080;
}
.remplacements_slugs {
margin-top: 3rem;
}
.formulaire_gamumail .boutons {
margin-top: 3rem;
}
.formulaire_gamumail .btn {
font-size: 3rem;
}

View file

@ -1,6 +1,6 @@
#CACHE{0}
<link rel="stylesheet" href="[(#CHEMIN{css/gamumail.css}|timestamp)]" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="[(#CHEMIN{css/gamumail.css}|timestamp)]" type="text/css" media="screen" charset="utf-8" />
<div class="formulaire_spip formulaire_#FORM">
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
@ -91,21 +91,16 @@
</div>
</B_pdf>
#SET{id_gamumail,0}
#SET{name,Tid_doc}
<BOUCLE_slug(GAMUMAILS){slug}{tout}> #SET{id_gamumail,#ID_GAMUMAIL} </BOUCLE_slug>
<B_doc>
<h2><:gamumail:autres_fichiers_attaches:></h2>
#SET{name,docs_spip}
<h2><:gamumail:documents_attaches:></h2>
<div class="editer_groupe">
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{obli,"obligatoire"}
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<BOUCLE_doc(DOCUMENTS){id_gamumail=#GET{id_gamumail}}>
<div class="choix">
<input type="checkbox" class="checkbox" name="#GET{name}[]" value="#ID_DOCUMENT" id="#GET{name}_#ID_DOCUMENT" checked="checked" >
<label for="#GET{name}_#ID_DOCUMENT">[(#TITRE|sinon{#FICHIER|basename})]</label>
</div>
</BOUCLE_doc>
<div class="editer editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur]">
<div class="choix">
[<span class="erreur_message">(#GET{erreurs})</span>]
<label for="#GET{name}"><:gamumail:id_docs_attaches:></label>
<input type="text" class="text" name="#GET{name}" value="[(#ENV{#GET{name}})]" id="#GET{name}" >
</div>
</div>
</div>
</B_doc>

View file

@ -57,7 +57,7 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
}
}
$gamuMail = sql_fetsel('sujet, texte', 'spip_gamumails', 'slug='.sql_quote($slug));
$gamuMail = sql_fetsel('sujet, texte, id_docs', 'spip_gamumails', 'slug='.sql_quote($slug));
$valeurs = array(
"slug" => $slug,
'sujet' => $gamuMail['sujet'],
@ -67,7 +67,7 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
'cci' => lire_config('gamumail/mail_cci'),
'TFichierpdfs' => $TFichierPdf,
'Tpdfs_ok' => [],
'Tid_doc' => [],
'docs_spip' => $gamuMail['id_docs'],
'options' => $options
);
@ -117,6 +117,24 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient
$erreurs['pour'] .= _T("gamumail:mails_destinataires_en_erreur", ['mails_erreur' => join(', ', $Tmails_erreur)]);
}
// les id_document attachés sont-ils OK ?
$Tid_docs = [];
if (_request('docs_spip') != '') {
$Tid_docs = explode(',', _request('docs_spip'));
}
if (count($Tid_docs)) {
$Tid_docs_erreurs = [];
foreach($Tid_docs 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;
}
}
if (count($Tid_docs_erreurs)) {
$erreurs['docs_spip'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $Tid_docs_erreurs)]);
}
}
// surcharges
if ($f = charger_fonction('verifier', 'gamumail', true)) {
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
@ -139,7 +157,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$cci = _request('cci');
$sujet = _request('sujet');
$html = propre(_request('texte'));
$Tid_doc = _request('Tid_doc');
$docs_spip = _request('docs_spip');
$Tpdfs_ok = _request('Tpdfs_ok');
$texte = facteur_mail_html2text($html);
@ -147,6 +165,8 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$cc = explode(',', $cc);
$cci = explode(',', $cci);
$docs_spip = ($docs_spip != '' ? explode(',', $docs_spip) : []);
$Tmails = [];
foreach ($pour as $dest) {
if (is_numeric($dest)) {
@ -169,8 +189,8 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
}
// les documents joints
if (!empty($Tid_doc)) {
foreach ($Tid_doc as $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));
$destination = _DIR_IMG.$Tdocument['fichier'];
$extension = $Tdocument['extension'];
@ -260,7 +280,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
*/
// 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);
$corps = $f($corps, $options, $slug, $Tmails);
}
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');

View file

@ -72,11 +72,9 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $T
/**
* fonctions appelée en fin de gamumail_traiter_dist()
*
* @param array $corps[] => cf return
* @param string $slug modele du mail a charger
* @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
* @param array $options
*
* @return array $corps
@ -84,11 +82,12 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $T
* 'html' => $html,
* 'texte' => $texte,
* 'cc' => $cc,
* 'cci' => $cci
* 'cci' => $cci,
* 'pieces_jointes' => $pieces_jointes
* ];
*
**/
function gamumail_traiter_dist($corps, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect) {
function gamumail_traiter_dist($corps, $options, $slug, $destinataires='') {
$html = $corps['html'];
$html = str_replace('@@truc_a_remplacer@@', 'le machin qui remplace', $html);

View file

@ -3,7 +3,6 @@ if (!defined('_ECRIRE_INC_VERSION')){
return;
}
function inc_charger_pdf_dist($fichier_pdf, $contexte = []){
$login = lire_config('curl_login');
$password = lire_config('curl_mdp');

View file

@ -12,6 +12,13 @@ if (!defined('_ECRIRE_INC_VERSION')){
* @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
* $options['pdfs' => [...]] array des fichiers PDF générés à attacher dont les éléments peuvent être :
* - soit un nom de squelette PDF
* - soit un array avec 3 éléments (seul le 1er est obligatoire):
* [ 'fichier' => 'squelette_PDF',
* 'contexte' => ['parametre_url_1' => 'valeur_1', 'parametre_url_2' => 'valeur_2', ...]
* 'nom' => 'nom_fichier_attache' ]
* $options['args' => ['param_1' => 'valeur_1, 'param_2' => 'valeur_2', ...]]
*
**/
function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
@ -38,7 +45,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
return $retour;
}
// destinataires
// destinataires (id_auteur ou mails) => $pour[] est un array avec les adresses mails valides
if (!is_array($destinataires)) {
$destinataires = explode(',', $destinataires);
}
@ -77,7 +84,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$Tid_doc[] = $doc;
}
}
// récup des paramètres des fichiers à attacher
// récup des paramètres des docs à attacher
if (!empty($Tid_doc)) {
foreach ($Tid_doc as $id_document) {
$Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document));
@ -98,32 +105,43 @@ function inc_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)) {
$Tpdf = [$Tpdf];
// les pdfs
if (isset($options['pdfs'])) {
$Tpdfs = $options['pdfs'];
if (!is_array($Tpdfs)) {
$Tpdfs = explode(',', $Tpdfs);
}
$Tpdfs = array_filter($Tpdfs, function($p) {
return $p != '';
});
// approximation pour passage dans les fonctions traiter_av_pdf() :
// si plusieurs destinataires dans $pour[], on utilise le premier comme 2ème arg ($auteur)
if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
$options = $f($options, $pour[0], [], $Tpdfs);
}
if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) {
$options = $f($options, $pour[0], [], $Tpdfs);
}
$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'];
$Tpdf_dell = [];
if (!empty($Tpdfs) and is_array($Tpdfs)) {
foreach ($Tpdfs as $pdf) {
if (!is_array($pdf)) {
$sq_pdf = $pdf;
$context = [];
$nom = $pdf;
}
elseif (array_key_exists('fichier', $pdf)) {
$sq_pdf = $pdf['fichier'];
$context = array_key_exists('context', $pdf) ? $pdf['context'] : [];
$nom = array_key_exists('nom', $pdf) ? $pdf['nom'] : $pdf;
}
else break;
}
$pdf = $recup_pdf($pdf, $c);
$recup_pdf = charger_fonction('charger_pdf','inc');
$pdf = $recup_pdf($sq_pdf, $context);
$nom_fichier = $nom.'.pdf';
$destination = _DIR_TMP.basename($nom_fichier);
$Tpdf_dell[] = $destination;
@ -136,7 +154,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
];
}
}
*/
$html_header = '';
if (find_in_path('gamumail/'.$slug .'_html_header.html')) {
$html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options);
@ -156,7 +174,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
// pipeline pour les traitement du contenu des slugs spécifiques de chaque plugins
$args = $options;
$args['slug'] = $slug;
$args['destinataires'] = $destinataires;
$args['destinataires'] = $pour;
$html = pipeline('remplacements_slug', array(
'args' => $args,
'data' => $html
@ -177,7 +195,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
*/
// 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, $destinataires, $Tclient, $Tpdf, $redirect);
$corps = $f($corps, $options, $slug, $pour);
}
// si debug on affiche sans envoyer le mail

View file

@ -25,9 +25,9 @@
<div class="bloc_choix_slug">
<h3><:gamumail:choix_slug:></h3>
<select id="choix_slug" name="choix_slug">
<option value=""><:gamumail:choisissez_un_modele:></option>
<option value=""[ (#ENV{slug}|non) selected]><:gamumail:choisissez_un_modele:></option>
<BOUCLE_slugs(GAMUMAILS){statut=publie}{par titre}>
<option value="#SLUG"[ (#SLUG|=={#ENV{slug}}|oui) selected="selected"]>#TITRE</option>
<option value="#SLUG"[ (#SLUG|=={#ENV{slug}}|oui) selected]>#TITRE</option>
</BOUCLE_slugs>
</select>
</div>

View file

@ -21,6 +21,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'choix_slug' => 'Choix du modèle',
'contenu_mail' => 'Contenu du mail',
// D
'documents_attaches' => 'Documents attachés',
//EE
'envoyer' => 'Envoyer',
"erreur_envoi_mail" => "Erreur dans l'envoi de votre mail",
@ -37,6 +40,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'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',
'id_docs_attaches' => 'ID documents séparés par une virgule',
'id_docs_en_erreur' => 'Documents en erreur : @id_docs_erreurs@',
//MM
"mail_envoye" => "Votre message a bien été envoyé",