source: spip-zone/_plugins_/article_pdf/article_pdf.html @ 104863

Last change on this file since 104863 was 104863, checked in by toutati@…, 3 years ago

réorganisation des fonctions, but
pas de trou de sécu
y voir clair
passer en restreint facilement
rester compatible avec les anciens usages

File size: 4.8 KB
Line 
1#CACHE{0}
2<?php
3
4        //au choix, selon le cas (voir les avantages et les inconvéniants de chaque selon le site):
5//      $path_pdf = sous_repertoire(_DIR_CACHE, "article_PDF"); // stockage dans le cache SPIP
6        $path_pdf = sous_repertoire(_DIR_IMG, "article_PDF"); //stockage sous le dossier IMG
7       
8        // Mode release => $debug=0
9        // Mode debug => $debug=1
10       
11        <B_principale>
12        <BOUCLE_principale(ARTICLES){id_article}>
13       
14        $conf_url_site = '[(#URL_ARTICLE|url_absolue|texte_script)]' ;
15        $conf_nom_site = '[(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)]' ;
16       
17        // Recuperation et definition des differents elements
18       
19        $site='[(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)]';
20        $rubrique='<B_rubrique_mere><BOUCLE_rubrique_mere(RUBRIQUES){id_rubrique}>[(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)]</BOUCLE_rubrique_mere></B_rubrique_mere>[(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)]<//B_rubrique_mere>';
21        $DateParution='[(#DATE_REDAC|affdate|pdf_first_clean|texte_script)]';
22        $DateMiseEnLigne='[(#DATE|nom_jour|texte_script)] [(#DATE|affdate|pdf_first_clean|texte_script)]';
23       
24        /*$auteur='<BOUCLE_auteurs(AUTEURS){id_article}{", "}>[(#NOM|pdf_first_clean|texte_script)]</BOUCLE_auteurs>';*/
25        $motsclef='<BOUCLE_keywords(MOTS){id_article}{", "}>[(#TITRE|pdf_first_clean|supprimer_tags|texte_script)]</BOUCLE_keywords>';
26        $yahoo='-<BOUCLE_yahoo(HIERARCHIE){id_article}> [(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)] - </BOUCLE_yahoo>';
27
28        $logo_site='[(#LOGO_SITE_SPIP|extraire_attribut{src}|texte_script)]';
29        $logo_site = preg_replace(',[?][0-9]+$,','',$logo_site);
30        // attention à l'ordre des filtres SPIP
31//      [$logo_fichier='(#LOGO_ARTICLE_RUBRIQUE|extraire_attribut{src}|texte_script)';] ne fonctionne pas
32        $logo_fichier='[(#LOGO_ARTICLE_RUBRIQUE|texte_script|extraire_attribut{src})]'; //fonctionne correctement
33        $logo_fichier = preg_replace(',[?][0-9]+$,','',$logo_fichier);
34//  [$logo_lien="(#URL_ARTICLE)";]
35               
36        [$surtitre='(#SURTITRE|pdf_first_clean|supprimer_tags|texte_script)';]
37        [$titre='(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)';]
38        [$soustitre='(#SOUSTITRE|pdf_first_clean|supprimer_tags|texte_script)';]
39        [$chapo='(#CHAPO|pdf_first_clean|texte_script)';]
40        [$descriptif='(#DESCRIPTIF|pdf_first_clean|texte_script)';]
41        [$texte= '(#TEXTE*|pdf_first_clean_prepropre|pdf_first_clean|texte_script)';]
42        [$ps='(#PS|pdf_first_clean|texte_script)';]
43        [$notes='(#NOTES|pdf_first_clean|texte_script)';]
44       
45        $copyright = '[(#VAL{articlepdf:copyright}|_T|pdf_first_clean|texte_script)][(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)][(#VAL{articlepdf:tous_droits_reserves}|_T|pdf_first_clean|texte_script)]';
46
47        $id_article = "#ID_ARTICLE";
48       
49        $files_pdf = '[(#TITRE|pdf_nommer_ancien{article, #ID_ARTICLE})]';
50       
51        $file_out = $path_pdf . $files_pdf ;
52       
53        if (file_exists($file_out))
54        {
55                clearstatcache;
56                $damo = date(YmdHi , strtotime("#DATE_MODIF")) ;
57                $dage = date(YmdHi , filemtime($file_out)) ;
58                if ($damo > $dage)
59                {
60                        unlink($file_out);
61                }
62        }
63       
64        </BOUCLE_principale>
65        </B_principale>
66        header("Location: index.php");
67        exit;
68        <//B_principale>
69       
70        if ($debug == 1 && file_exists($file_out))
71        {
72                unlink($file_out);
73        }
74       
75        if (!file_exists($file_out))
76        {
77       
78                define('FPDF_FONTPATH',_DIR_FPDF_LIB.'font');
79                include_spip(_DIR_FPDF_LIB.'fpdf');
80                include_spip('pdf/lib_pdf_global');
81                include_spip('pdf/lib_pdf_spip');
82       
83                //--------------------------------
84                // Debut génération du PDF
85                //--------------------------------
86                $pdf->debug=$debug;
87                $pdf=new PDF_SPIP();
88               
89                $pdf->SetCompression(false);
90                $pdf->SetDisplayMode(fullpage, single );       
91               
92                // haut, gauche,  bas, droite
93                $pdf->SetAllMargins(12,15,12,10);
94       
95                $pdf->SetTitle($titre);
96                $pdf->SetCreator($site);
97                $pdf->SetCopyright($copyright);
98                $pdf->SetSubject($rubrique);
99                $pdf->SetKeywords($motsclef);
100       
101                $pdf->Build($file_out);
102               
103        }
104
105                // Vous voulez afficher un pdf
106                header("Content-type: application/pdf");
107        //Si on est en mutualisé avec masquages des vraies urls d'images
108        if (stripos($GLOBALS['spip_pipeline']['affichage_final'],'mutualisation_url_img_courtes')){
109                $file_out = str_replace(_DIR_IMG,_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES,$file_out);
110        }
111        if ($debug==1)
112        {
113                // Affiche le PDF directement dans l'onglet de Firefox
114                // Ne fonctionne pas sous IE 6 SP2 : le pdf n'est pas reconnu (pris pour un fichier texte)
115                header("location: ". url_de_base() . $file_out);
116        }
117        else
118        {
119                // Il sera nommé $files_pdf
120                // ATTENTION : pour "filename", mettre un nom de fichier court (<nom>.<extension>)
121                // sinon IE 6 SP2 ne reconnaîtra pas le type de fichier
122                // Semble poser problème sous IE6 SP1
123                // Ah,  Microsoft, je vous jure !
124                header('Content-Disposition: attachment; filename=' . $files_pdf);
125
126                // Le source du PDF original.pdf
127                readfile($file_out);
128        }
129
130        exit;
Note: See TracBrowser for help on using the repository browser.