Changeset 108965 in spip-zone


Ignore:
Timestamp:
Feb 15, 2018, 10:59:34 AM (21 months ago)
Author:
maieul@…
Message:

encodage

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/article_pdf/article_pdf.html

    r108964 r108965  
    22<?php
    33
     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
    48        // Mode release => $debug=0
    5         // Mode debug => $debug=1
    6        
    7         <B_principale>
    8         <BOUCLE_principale(ARTICLES){id_article}>
    9        
    10         $conf_url_site = '[(#URL_ARTICLE|url_absolue|texte_script)]' ;
     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)]' ;
    1115        $conf_nom_site = '[(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)]' ;
    12        
     16
    1317        // Recuperation et definition des differents elements
    14        
     18
    1519        $site='[(#NOM_SITE_SPIP|pdf_first_clean|supprimer_tags|texte_script)]';
    16         $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>';
     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>';
    1721        $DateParution='[(#DATE_REDAC|affdate|pdf_first_clean|texte_script)]';
    1822        $DateMiseEnLigne='[(#DATE|nom_jour|texte_script)] [(#DATE|affdate|pdf_first_clean|texte_script)]';
    19        
    20         /*$auteur='<BOUCLE_auteurs(AUTEURS){id_article}{", "}>[(#NOM|pdf_first_clean|texte_script)]</BOUCLE_auteurs>';*/
    21         $motsclef='<BOUCLE_keywords(MOTS){id_article}{", "}>[(#TITRE|pdf_first_clean|supprimer_tags|texte_script)]</BOUCLE_keywords>';
    22         $yahoo='-<BOUCLE_yahoo(HIERARCHIE){id_article}> [(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)] - </BOUCLE_yahoo>';
     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>';
    2327
    2428        $logo_site='[(#LOGO_SITE_SPIP|extraire_attribut{src}|texte_script)]';
    25         $logo_site = preg_replace(',[?][0-9]+$,','',$logo_site);
    26         // attention à l'ordre des filtres SPIP
    27         $logo_fichier='[(#LOGO_ARTICLE_RUBRIQUE|texte_script|extraire_attribut{src})]'; //fonctionne correctement
    28         $logo_fichier = preg_replace(',[?][0-9]+$,','',$logo_fichier);
     29        // attention à l'ordre des filtres SPIP
     30        [$logo_fichier='(#LOGO_RUBRIQUE|extraire_attribut{src}|texte_script|supprimer_param_logo)';]
     31
    2932//  [$logo_lien="(#URL_ARTICLE)";]
    30                
     33
    3134        [$surtitre='(#SURTITRE|pdf_first_clean|supprimer_tags|texte_script)';]
    3235        [$titre='(#TITRE|supprimer_numero|pdf_first_clean|supprimer_tags|texte_script)';]
     
    3437        [$chapo='(#CHAPO|pdf_first_clean|texte_script)';]
    3538        [$descriptif='(#DESCRIPTIF|pdf_first_clean|texte_script)';]
    36         [$texte= '(#TEXTE|image_reduire{400,400}|abs_url|pdf_first_clean|texte_script)';]
     39        [$texte= '(#TEXTE|pdf_first_clean|texte_script)';]
    3740        [$ps='(#PS|pdf_first_clean|texte_script)';]
    3841        [$notes='(#NOTES|pdf_first_clean|texte_script)';]
    39        
     42
    4043        $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)]';
    4144
    42         $id_article = "#ID_ARTICLE";
    43        
    44         $files_pdf = '[(#TITRE|pdf_nommer_ancien{article, #ID_ARTICLE})]';     
    45         $file_out = _DIR_STOCK_PDF . $files_pdf ;
    46        
    47         $files_pdf_new = '[(#TITRE|pdf_nommer{article, #ID_ARTICLE})]';
    48         $file_out_new = _DIR_STOCK_PDF . $files_pdf_new ;
    49        
    50         //creer un pdf avec un nouveau nom que si un ancien n'existe pas
    51         if (!file_exists($file_out)) {
    52                 $file_out = $file_out_new ;
    53                 $files_pdf = $files_pdf_new;
     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                }
    5463        }
    55        
    56         if (file_exists($file_out))
     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))
    57100        {
    58101                clearstatcache;
     
    64107                }
    65108        }
    66        
     109
    67110        </BOUCLE_principale>
    68         </B_principale>
    69111        header("Location: index.php");
    70         exit; 
     112        exit;
    71113        <//B_principale>
    72        
    73         if ($debug == 1 && file_exists($file_out)) 
     114
     115        if ($debug == 1 && file_exists($file_out))
    74116        {
    75117                unlink($file_out);
    76118        }
     119
     120        if (!file_exists($file_out))
     121        {
     122
    77123       
    78         if (!file_exists($file_out))
    79         {
    80        
     124               
    81125                define('FPDF_FONTPATH',_DIR_FPDF_LIB.'font');
    82126                include_spip(_DIR_FPDF_LIB.'fpdf');
    83127                include_spip('pdf/lib_pdf_global');
    84128                include_spip('pdf/lib_pdf_spip');
    85        
     129               
    86130                //--------------------------------
    87                 // Debut génération du PDF
     131                // Debut génération du PDF
    88132                //--------------------------------
    89133                $pdf->debug=$debug;
    90134                $pdf=new PDF_SPIP();
    91                
     135
    92136                $pdf->SetCompression(false);
    93                 $pdf->SetDisplayMode(fullpage, single );       
    94                
     137                $pdf->SetDisplayMode(fullpage, single );
     138
    95139                // haut, gauche,  bas, droite
    96140                $pdf->SetAllMargins(12,15,12,10);
    97        
     141
    98142                $pdf->SetTitle($titre);
    99143                $pdf->SetCreator($site);
     
    101145                $pdf->SetSubject($rubrique);
    102146                $pdf->SetKeywords($motsclef);
    103        
     147
    104148                $pdf->Build($file_out);
    105                
    106                 $lier_pdf = pipeline('build_pdf',array(
    107                         'args'=>array(
    108                                 'objet'         => 'article',
    109                                 'id_objet'      => $id_article,
    110                                 'file_name' => $files_pdf
    111                         ),
    112                         'data'=> $file_out,
    113         ));
    114                
    115         }
    116        
    117         $id_document = $lier_pdf[data][$file_out];
    118         if($id_document > 0){
    119                 $file_out = '#URL_DOCUMENT{$id_document}';
     149
    120150        }
    121151
    122152                // Vous voulez afficher un pdf
    123153                header("Content-type: application/pdf");
    124         //Si on est en mutualisé avec masquages des vraies urls d'images
    125         if (stripos($GLOBALS['spip_pipeline']['affichage_final'],'mutualisation_url_img_courtes')){
    126                 $file_out = str_replace(_DIR_IMG,_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES,$file_out);
    127         }
    128154        if ($debug==1)
    129155        {
     
    134160        else
    135161        {
    136                 // Il sera nommé $files_pdf
     162                // Il sera nommé $files_pdf
    137163                // ATTENTION : pour "filename", mettre un nom de fichier court (<nom>.<extension>)
    138                 // sinon IE 6 SP2 ne reconnaîtra pas le type de fichier
    139                 // Semble poser problème sous IE6 SP1
     164                // sinon IE 6 SP2 ne reconnaîtra pas le type de fichier
     165                // Semble poser problème sous IE6 SP1
    140166                // Ah,  Microsoft, je vous jure !
    141167                header('Content-Disposition: attachment; filename=' . $files_pdf);
     
    145171        }
    146172
    147         exit;
     173        exit;
     174?>
Note: See TracChangeset for help on using the changeset viewer.