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:
parent
c72d52867f
commit
9243f5c27c
4 changed files with 86 additions and 22 deletions
60
README.md
60
README.md
|
@ -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 :
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue