ajout des pièces attachées en fichiers PDF générés par SPIPDF avec passage de contexte pour contenu dynamique. Par rapport à la version de Roc, ajoute la possibilité d'avoir plusieurs fichiers dynamiques avec chacun son fichier de base et/ou son contexte. Tout est documenté dans le README

This commit is contained in:
cy_altern 2021-05-29 18:53:31 +02:00
parent c72d52867f
commit 9243f5c27c
4 changed files with 86 additions and 22 deletions

View file

@ -96,7 +96,65 @@ $GLOBALS['remplacements_gamumail']['@@num_facture@@'] = 'numéro de la facture';
function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){
} }
``` ```
> l'Argument $Tclient est utilisé pour récupérer des emails dans un ou X autres Objets SPIP #### argument Tclient
l'Argument $Tclient est utilisé pour récupérer des emails dans un ou X autres Objets SPIP
#### argument Tpdf : attacher des PDF avec contenu dynamique
- exemple d'appel pour 1 fichier PDF avec son contexte :
```html
[(#FORMULAIRE_GAMUMAIL{
#ENV{slug},
#ENV{email},
'',
#ARRAY{
fichier,pdf_guide,
nom,Fiche_guide,
contexte,#ARRAY{
id_article,#ENV{id_article},
type_guide,#ENV{type_guide,guide}
}
},
#ENV{redirect},
#ARRAY{
id_auteur,#ENV{id_auteur}
}
})]
```
le fichier PDF sera généré par SPIPDF avec l'URL suivante : `...spip.php?page=spipdf&spipdf=pdf_guide&id_article=1838&type_guide=guide`
- exemple d'appel pour 2 fichiers PDF générés par le même squelette (pdf_guide.html) mais avec chacun leur contexte :
```html
[(#FORMULAIRE_GAMUMAIL{
#ENV{slug},
#ENV{email},
'',
#ARRAY{
0,#ARRAY{
fichier,pdf_guide,
nom,Fiche_guide,
contexte,#ARRAY{
id_article,#ENV{id_article},
type_guide,guide,
}
},
1,#ARRAY{
fichier,pdf_guide,
nom,Fiche_guide_renfort,
contexte,#ARRAY{
id_article,#ENV{id_article},
type_guide,guide_renfort,
}
}
},
#ENV{redirect},
#ARRAY{
id_auteur,#ENV{id_auteur}
}
})]
```
/!\ en cas de plusieurs PDF :
- il faut une *clé unique* pour chaque #ARRAY (0, 1, 2... est une bonne solution)
- dans l'#ARRAY contexte il faut que le dernier élément soit suivi d'une virgule ou d'une accolade fermante
#### 2. modification de chaque étape: charger / vérifier / traiter #### 2. modification de chaque étape: charger / vérifier / traiter
Pour chaque étape, on peut modifier l'Array de sortie : Pour chaque étape, on peut modifier l'Array de sortie :

View file

@ -83,12 +83,12 @@
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<BOUCLE_pdf(DATA){source tableau, #ENV{TFichierpdfs}}> <BOUCLE_pdf(DATA){source tableau, #ENV{TFichierpdfs}}>
<div class="choix"> <div class="choix">
<input type="checkbox" class="checkbox" name="#GET{name}[]" value="#VALEUR" id="#GET{name}_#COMPTEUR_BOUCLE" checked="checked" > <input type="checkbox" class="checkbox" name="#GET{name}[]" value="[(#VALEUR|table_valeur{fichier})]_#CLE" id="#GET{name}_#COMPTEUR_BOUCLE" checked="checked" >
[(#SET{url_pdf,[(#URL_PAGE{spipdf}|parametre_url{spipdf,#VALEUR})]})] [(#SET{url_pdf,[(#URL_PAGE{spipdf}|parametre_url{spipdf,[(#VALEUR|table_valeur{fichier})]})]})]
<BOUCLE_options(DATA){source tableau, #ENV{options}}> <BOUCLE_options(DATA){source tableau, #VALEUR|table_valeur{contexte}}>
[(#SET{url_pdf,[(#GET{url_pdf}|parametre_url{#CLE,#VALEUR})]})] [(#SET{url_pdf,[(#GET{url_pdf}|parametre_url{#CLE,#VALEUR})]})]
</BOUCLE_options> </BOUCLE_options>
<label for="#GET{name}_#COMPTEUR_BOUCLE">#VALEUR : <a href="#GET{url_pdf}">voir le PDF</a></label> <label for="#GET{name}_#COMPTEUR_BOUCLE">[(#VALEUR|table_valeur{nom})] : <a href="#GET{url_pdf}">voir le PDF</a></label>
</div> </div>
</BOUCLE_pdf> </BOUCLE_pdf>
</div> </div>

View file

@ -21,6 +21,7 @@ include_spip('inc/filtres');
* *
*/ */
function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){
//var_dump($Tpdf) ;
$Tmails = []; $Tmails = [];
if (!is_array($destinataires)) { if (!is_array($destinataires)) {
$destinataires = explode(',', $destinataires); $destinataires = explode(',', $destinataires);
@ -55,8 +56,10 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
if (array_key_exists('fichier', $Tpdf)) { if (array_key_exists('fichier', $Tpdf)) {
$Tpdf = [$Tpdf]; $Tpdf = [$Tpdf];
} }
foreach ($Tpdf as $pdf) { foreach ($Tpdf as $id => $pdf) {
$TFichierPdf[] = $pdf['fichier']; //$TFichierPdf[] = $pdf['fichier'];
$TFichierPdf[$id] = $pdf;
//$options[$id] = $pdf;
} }
} }
@ -74,6 +77,7 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
'Tid_fichiers' => [], 'Tid_fichiers' => [],
'options' => $options 'options' => $options
); );
//var_dump($valeurs);
// surcharges charger // surcharges charger
if ($f = charger_fonction('charger', 'gamumail', true)) { if ($f = charger_fonction('charger', 'gamumail', true)) {
@ -200,7 +204,6 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
} }
$pieces_jointes = []; $pieces_jointes = [];
if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) { if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
$options = $f($options, $destinataires, $Tclient, $Tpdf); $options = $f($options, $destinataires, $Tclient, $Tpdf);
} }
@ -250,27 +253,30 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
]; ];
} }
} }
// les pdfs générés en fonction du contexte
// les pdfs $Tpdf_del = [];
$Tpdf_dell = [];
if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) { if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) {
if (array_key_exists('fichier', $Tpdf)) { if (array_key_exists('fichier', $Tpdf)) {
$Tpdf = [$Tpdf]; $Tpdf = [$Tpdf];
} }
//var_dump($Tpdf);
//var_dump($Tpdfs_ok);
$recup_pdf = charger_fonction('charger_pdf','inc'); $recup_pdf = charger_fonction('charger_pdf','inc');
foreach ($Tpdfs_ok as $pdf) { foreach ($Tpdfs_ok as $pdf) {
foreach ($Tpdf as $p) { //var_dump($pdf);
if ($p['fichier'] === $pdf) { foreach ($Tpdf as $cle => $p) {
$c = $p['contexte']; if ($p['fichier'].'_'.$cle === $pdf) {
$nom = $p['nom']; $fichier = $p['fichier'];
$c = isset($p['contexte']) ? $p['contexte'] : [];
$nom = isset($p['nom']) ? $p['nom'] : $fichier;
} }
} }
$pdf = $recup_pdf($fichier, $c);
$pdf = $recup_pdf($pdf, $c); //var_dump($pdf);
$nom_fichier = $nom.'.pdf'; $nom_fichier = $nom.'.pdf';
$destination = _DIR_TMP.basename($nom_fichier); $destination = _DIR_TMP.basename($nom_fichier);
$Tpdf_dell[] = $destination; $Tpdf_del[] = $destination;
file_put_contents($destination,$pdf); file_put_contents($destination,$pdf);
$pieces_jointes[] = [ $pieces_jointes[] = [
'chemin' => $destination, 'chemin' => $destination,
@ -280,7 +286,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
]; ];
} }
} }
//var_dump($pieces_jointes);die;
$html_header = ''; $html_header = '';
if (find_in_path('gamumail/'.$slug .'_html_header.html')) { if (find_in_path('gamumail/'.$slug .'_html_header.html')) {
$html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options); $html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options);
@ -337,8 +343,8 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
} }
// on supprime les pdfs temporaires // on supprime les pdfs temporaires
if (count($Tpdf_dell)) { if (count($Tpdf_del)) {
foreach ($Tpdf_dell as $pdf) { foreach ($Tpdf_del as $pdf) {
unlink($pdf); unlink($pdf);
} }
} }

View file

@ -4,6 +4,7 @@ if (!defined('_ECRIRE_INC_VERSION')){
} }
function inc_charger_pdf_dist($fichier_pdf, $contexte = []){ function inc_charger_pdf_dist($fichier_pdf, $contexte = []){
$login = lire_config('curl_login'); $login = lire_config('curl_login');
$password = lire_config('curl_mdp'); $password = lire_config('curl_mdp');
$url = $GLOBALS['meta']['adresse_site'].'/spip.php?page=spipdf&spipdf='.$fichier_pdf; $url = $GLOBALS['meta']['adresse_site'].'/spip.php?page=spipdf&spipdf='.$fichier_pdf;
@ -21,7 +22,6 @@ function inc_charger_pdf_dist($fichier_pdf, $contexte = []){
} }
$CurlConnect = curl_init(); $CurlConnect = curl_init();
// pour une connexion https locale avec certificat auto-signé // pour une connexion https locale avec certificat auto-signé
if (defined('_DEBUG_AUTORISER')) { if (defined('_DEBUG_AUTORISER')) {
curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false);