source: spip-zone/_plugins_/article_pdf/rubrique_pdf.html @ 79865

Last change on this file since 79865 was 79865, checked in by severo@…, 6 years ago

On remplace les chaines de langue en dur par des traductions.

En faisant attention de bien les faire passer dans les fonctions
dédiées pour bien gérer l'encodage.

File size: 6.2 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 (ne fonctionne pas sous Internet Explorer)=> ??? si, ça fonctionne !
10        $debug=1;
11
12        <BOUCLE_principale(RUBRIQUES){id_rubrique}>
13
14        $conf_url_site = '[(#URL_RUBRIQUE|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='<BOUCLE_rubrique_mere(RUBRIQUES){id_enfant}>[(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)]</BOUCLE_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_rubrique}{", "}>[(#NOM|pdf_first_clean|texte_script)]</BOUCLE_auteurs>';*/
25        $motsclef=/*'<BOUCLE_keywords(MOTS){id_rubrique}{", "}>[(#TITRE|pdf_first_clean|supprimer_tags|texte_script)]</BOUCLE_keywords>'*/'';
26        $yahoo='-<BOUCLE_yahoo(HIERARCHIE){id_rubrique}> [(#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        // attention à l'ordre des filtres SPIP
30        [$logo_fichier='(#LOGO_RUBRIQUE|extraire_attribut{src}|texte_script|supprimer_param_logo)';]
31
32//  [$logo_lien="(#URL_ARTICLE)";]
33
34        [$surtitre='(#SURTITRE|pdf_first_clean|supprimer_tags|texte_script)';]
35        [$titre='(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)';]
36        [$soustitre='(#SOUSTITRE|pdf_first_clean|supprimer_tags|texte_script)';]
37        [$chapo='(#CHAPO|pdf_first_clean|texte_script)';]
38        [$descriptif='(#DESCRIPTIF|pdf_first_clean|texte_script)';]
39        [$texte= '(#TEXTE|pdf_first_clean|texte_script)';]
40        [$ps='(#PS|pdf_first_clean|texte_script)';]
41        [$notes='(#NOTES|pdf_first_clean|texte_script)';]
42
43        $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)]';
44
45        $id_rubrique = "#ID_RUBRIQUE";
46
47        $titre_rubrique = translitteration(corriger_caracteres('[(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)]'));
48        // Reprise du code de urls/propres.php (pourquoi c'est pas une fonction de l'API de SPIP ?)
49
50        // on va convertir tous les caracteres de ponctuation et espaces
51        // a l'exception de l'underscore (_), car on veut le conserver dans l'url
52        $titre_rubrique = str_replace('_', chr(7), $titre_rubrique);
53        $titre_rubrique = @preg_replace(',[[:punct:][:space:]]+,u', ' ', $titre_rubrique);
54        $titre_rubrique = str_replace(chr(7), '_', $titre_rubrique);
55
56        // S'il reste trop de caracteres non latins, les gerer comme wikipedia
57        // avec rawurlencode :
58        if (preg_match_all(",[^a-zA-Z0-9 _]+,", $titre_rubrique, $r, PREG_SET_ORDER)) {
59                foreach ($r as $regs) {
60                        $titre_rubrique = substr_replace($titre_rubrique, rawurlencode($regs[0]),
61                                strpos($titre_rubrique, $regs[0]), strlen($regs[0]));
62                }
63        }
64
65        // S'il reste trop peu, on retombe sur rubrique12
66        if (strlen($titre_rubrique) == 0 ) {
67                $titre_rubrique = "rubrique";
68        }
69
70        // Sinon couper les mots et les relier par des tirets
71        else {
72                $mots = preg_split(",[^a-zA-Z0-9_%]+,", $titre_rubrique);
73                $titre_rubrique = '';
74                foreach ($mots as $mot) {
75                        if (!strlen($mot)) continue;
76                        $titre_rubrique2 = $titre_rubrique.'-'.$mot;
77
78                        // Si on depasse _URLS_PROPRES_MAX caracteres, s'arreter
79                        // ne pas compter 3 caracteres pour %E9 mais un seul
80                        $long = preg_replace(',%.,', '', $titre_rubrique2);
81                        if (strlen($long) > _URLS_PROPRES_MAX) {
82                                break;
83                        }
84
85                        $titre_rubrique = $titre_rubrique2;
86                }
87                $titre_rubrique = substr($titre_rubrique, 1);
88
89                // On enregistre en utf-8 dans la base
90                $titre_rubrique = rawurldecode($titre_rubrique);
91
92                if (strlen($titre_rubrique) == 0)
93                        $titre_rubrique = "rubrique";
94        }
95
96        $files_pdf = $titre_rubrique."_".$id_rubrique.".pdf";
97        $file_out = $path_pdf . $files_pdf ;
98
99        if (file_exists($file_out))
100        {
101                clearstatcache;
102                $damo = date(YmdHi , strtotime("#DATE_MODIF")) ;
103                $dage = date(YmdHi , filemtime($file_out)) ;
104                if ($damo > $dage)
105                {
106                        unlink($file_out);
107                }
108        }
109
110        </BOUCLE_principale>
111        header("Location: index.php");
112        exit;
113        <//B_principale>
114
115        if ($debug == 1 && file_exists($file_out))
116        {
117                unlink($file_out);
118        }
119
120        if (!file_exists($file_out))
121        {
122
123       
124               
125                define('FPDF_FONTPATH',_DIR_FPDF_LIB.'font');
126                include_spip(_DIR_FPDF_LIB.'fpdf');
127                include_spip('pdf/lib_pdf_global');
128                include_spip('pdf/lib_pdf_spip');
129               
130                //--------------------------------
131                // Debut génération du PDF
132                //--------------------------------
133                $pdf->debug=$debug;
134                $pdf=new PDF_SPIP();
135
136                $pdf->SetCompression(false);
137                $pdf->SetDisplayMode(fullpage, single );
138
139                // haut, gauche,  bas, droite
140                $pdf->SetAllMargins(12,15,12,10);
141
142                $pdf->SetTitle($titre);
143                $pdf->SetCreator($site);
144                $pdf->SetCopyright($copyright);
145                $pdf->SetSubject($rubrique);
146                $pdf->SetKeywords($motsclef);
147
148                $pdf->Build($file_out);
149
150        }
151
152                // Vous voulez afficher un pdf
153                header("Content-type: application/pdf");
154        if ($debug==1)
155        {
156                // Affiche le PDF directement dans l'onglet de Firefox
157                // Ne fonctionne pas sous IE 6 SP2 : le pdf n'est pas reconnu (pris pour un fichier texte)
158                header("location: ". url_de_base() . $file_out);
159        }
160        else
161        {
162                // Il sera nommé $files_pdf
163                // ATTENTION : pour "filename", mettre un nom de fichier court (<nom>.<extension>)
164                // sinon IE 6 SP2 ne reconnaîtra pas le type de fichier
165                // Semble poser problème sous IE6 SP1
166                // Ah,  Microsoft, je vous jure !
167                header('Content-Disposition: attachment; filename=' . $files_pdf);
168
169                // Le source du PDF original.pdf
170                readfile($file_out);
171        }
172
173        exit;
174?>
Note: See TracBrowser for help on using the repository browser.