Browse Source

une action pour generer le recu au format PDF ou HTML et le stocker dans IMG/attestations/

pull/21/head
Cerdic 9 years ago
parent
commit
1fc3d3ed41
  1. 75
      action/generer_recu_souscription.php
  2. 2
      attestation.html
  3. 1
      attestation_pdf.html
  4. 2
      attestations/titre.html
  5. 2
      attestations/top.html
  6. 11
      souscription_fonctions.php

75
action/generer_recu_souscription.php

@ -0,0 +1,75 @@
<?php
/**
* Export des souscriptions en CSV
*
* @plugin Souscription
* @copyright 2013
* @author Olivier Tétard
* @licence GNU/GPL
* @package SPIP\Souscription\Action
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip("public/parametrer"); // fonctions
function action_generer_recu_souscription_dist($id_souscription = null, $annee=null){
if (is_null($id_souscription)){
$id_souscription = _request('id_souscription');
$annee = _request('annee');
$hash = _request('hash');
$lowsec = souscription_hash_lowsec($id_souscription, $annee);
if ($hash!==$lowsec){
die('Erreur : URL pas autorisee');
}
}
else {
$lowsec = souscription_hash_lowsec($id_souscription, $annee);
}
// PDF ou HTML ? si le plugin SPIPDF est la on genere un recu en PDF
$format = "html";
if (test_plugin_actif("spipdf")){
$format = "pdf";
}
$numero = souscription_numero_recu($id_souscription,$annee);
$dir = sous_repertoire(_DIR_IMG,"attestations");
// securite : dossier inaccessible en http
if (!file_exists($f=$dir.".htaccess")){
ecrire_fichier($f,"deny from all\n");
}
$filename = $numero.".$format";
$file = $dir.$filename;
if (!file_exists($file)){
$fond = ($format=="pdf"?"attestation_pdf":"attestation");
$content = recuperer_fond($fond,array("id_souscription"=>$id_souscription,"annee"=>$annee,"hash"=>$lowsec));
ecrire_fichier($file,$content);
}
$mime = "text/html";
if ($format=="pdf")
$mime = "application/pdf";
header("Content-type: $mime");
if ($format=="pdf"){
$filename = preg_replace(",\W+,","",$GLOBALS['meta']['nom_site'])."-Recu-".$filename;
header("Content-Disposition: attachment; filename=$filename");
//header("Content-Transfer-Encoding: binary");
}
// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
if ($cl = filesize($file))
header("Content-Length: ". $cl);
readfile($file);
}

2
attestation.html

@ -7,7 +7,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" />
<meta name="robots" content="noindex, nofollow" />
<meta name="author" content="<:meta_author:>" />
[<link rel="stylesheet" href="(#CHEMIN{attestations/attestation.css})" type="text/css" media="all" />]
[<link rel="stylesheet" href="(#CHEMIN{attestations/attestation.css}|url_absolue)" type="text/css" media="all" />]
</head>
<body>
<BOUCLE_souscription(SOUSCRIPTIONS){id_souscription}{statut=ok}>[(#ENV{hash}|=={#ID_SOUSCRIPTION|souscription_hash_lowsec{#ENV{annee}}}|oui)

1
attestation_pdf.html

@ -10,3 +10,4 @@
</page>
]</BOUCLE_souscription>
#FILTRE{spipdf_html2pdf}

2
attestations/titre.html

@ -2,7 +2,7 @@
<h2>Reçu fiscal
<small class="mention"><br />art 87 loi n° 81-1160 du 30/12/81</small>
</h2>
<h3 class="numero">Numéro : R-#ENV{annee}-#ID_SOUSCRIPTION
<h3 class="numero">Numéro : [(#ID_SOUSCRIPTION|souscription_numero_recu{#ENV{annee}})]
<small class="annee"><br />Année #ENV{annee}</small>
</h3>
</div>

2
attestations/top.html

@ -1,4 +1,4 @@
<div class='header'>
<h1>[(#LOGO_SITE_SPIP|image_reduire{150,75}|inserer_attribut{style,'float:right'})]
<h1>[(#LOGO_SITE_SPIP|image_reduire{150,75}|liens_absolus|inserer_attribut{style,'float:right'})]
#NOM_SITE_SPIP</h1>
</div>

11
souscription_fonctions.php

@ -145,12 +145,21 @@ function souscription_transactions($id_souscription,$annee){
return $trans;
}
/**
* Calculer un hash lowsec pour securiser les urls qui permettent de voir les recus
* @param $id_souscription
* @param $annee
* @return string
*/
function souscription_hash_lowsec($id_souscription,$annee){
$souscription = sql_fetsel('id_souscription,montant,courriel,date_souscription,nom,prenom,adresse,code_postal,ville','spip_souscriptions','id_souscription='.intval($id_souscription));
$souscription = serialize($souscription);
$hash = md5("$souscription-hashlowsec-$annee");
$hash = substr($hash,0,10);
return $hash;
}
function souscription_numero_recu($id_souscription,$annee){
return "R-$annee-$id_souscription";
}
Loading…
Cancel
Save