Changeset 53029 in spip-zone


Ignore:
Timestamp:
Oct 8, 2011, 6:32:36 PM (8 years ago)
Author:
toutati@…
Message:

fusion_pdf est rendu generique

Pour donner à manger à fusion_pdf:

  • le chemin complet du pdf de départ
  • l'interval de type "1-5" ou "1,3,9" ou "all"
  • le prefix
  • suivi d'un titre comme #TITRE pour le nom de fichier pdf généré
  • l'objet auquel le document pdf généré sera lié
  • l'id_objet auquel le document pdf généré sera lié

enjoy

Location:
_plugins_/fusion_pdf
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fusion_pdf/action/fusion_pdf.php

    r49825 r53029  
    11<?php
     2if (!defined('_ECRIRE_INC_VERSION')) return;
    23
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
    4 /*
    5 
    6 [(#BOUTON_ACTION{<:fusionpdf:generez_le_pdf:>,
    7 #URL_ACTION_AUTEUR{fusion_pdf,
    8 document/#ID_ARTICLE/#ID_RUBRIQUE/3-6/PDFusion/35,
    9 #SELF|parametre_url{pdf,done}},
    10 ajax})]
    11 
    12 */
    13 
    14 //pompage de editer_produit (merci Rastapopoulos)
    15 /**
    16  * Action de fusion
    17  * @param unknown_type $arg
    18  * @return unknown_type
    19  */
    204function action_fusion_pdf_dist($arg=null) {   
    215        if (is_null($arg)){
     
    237                $arg = $securiser_action();
    248        }
    25                
     9        
    2610        // On recupere les infos de l'argument
    27         @list($objet, $id_article, $id_rubrique, $pages, $pretitre, $raccourcir) = explode('/', $arg);
    28         $id_article = intval($id_article);
    29         $id_rubrique = intval($id_rubrique);
    30         $raccourcir = intval($raccourcir);
     11        @list($path_parent,$interval,$prefix,$titre_sale,$objet,$id_objet) = explode('//', $arg);
     12        $id_objet = intval($id_objet);
    3113       
    32         spip_log("fusion pour pdf article $id_article a partir du document de rubrique $id_rubrique",'fusionpdf');
     14        spip_log("fusion pour pdf $path_parent, $interval,$prefix,$titre_sale,$objet,$id_objet",'fusionpdf');
    3315
    34         // todo?  AND autoriser('fusion_pdf', 'article',$arg[1]))
    35         if ($objet == 'document' and $id_article and $id_rubrique) {
    36                 $fusion=fusion_pdf_post($objet, $id_article, $id_rubrique, $pages, $pretitre, $raccourcir);
     16        // todo autoriser('fusion_pdf', 'article',$arg[1]))
     17        if ($path_parent && $interval!=' ') {
     18                $fusion=fusion_pdf_post($path_parent, $interval,$prefix, $titre_sale,$objet,$id_objet);
    3719        }
    38        
    3920       
    4021        // Invalider les caches
    4122        include_spip('inc/invalideur');
    42         suivre_invalideur("id='id_article/$id_article'");       
     23        suivre_invalideur("id='id_$objet/$id_objet'"); 
    4324
    4425}
    4526
    4627
    47 function fusion_pdf_post($objet, $id_article, $id_rubrique, $pages, $pretitre,$raccourcir){
     28function fusion_pdf_post($path_parent, $interval, $prefix,$titre_sale,$objet,$id_objet){
    4829       
    49         include_spip('inc/filtres');
     30        $fichier_propre=titrature($titre_sale,$prefix).'.pdf';
     31        $outputpdf=_DIR_IMG.'/pdf/'.$fichier_propre;
     32       
     33        spip_log("fusionpost2 generer $outputpdf a partir de $path_parent",'fusionpdf');       
    5034
    51         //le titre de la rubrique est de style "012. titre"
    52         $titre_rubrique=sql_getfetsel('titre','spip_rubriques',"id_rubrique='$id_rubrique'");
    53         $numero_rubrique=recuperer_numero($titre_rubrique);
    54         $titre_article=sql_getfetsel('titre','spip_articles',"id_article='$id_article'");
    5535       
    56         //retourne un titre pour le fichier pdf court et comprehensible
    57         include_spip('inc/fusionpdf_fonctions');
    58         $titre_sortie=titrature($titre_article,$numero_rubrique,$pretitre,$raccourcir);
    59                
    60         //on recupere le chemin du pdf de la rubrique
    61         //la condition ici est index et num (cf like)
    62         //todo mettre une condition generique sur le titre (Numero ? ou mot clef? ou facon de l'ecrire
    63         $type='rubrique';
    64         $pdf_rub = sql_select("D.id_document,D.fichier", "spip_documents AS D LEFT JOIN spip_documents_liens AS T ON T.id_document=D.id_document",
    65         "T.id_objet=" . intval($id_rubrique) . " AND T.objet=" . sql_quote($type)
    66         ." AND D.mode='document' AND D.extension ='pdf'"
    67         ." AND D.fichier LIKE '%$numero_rubrique%'"
    68         ." AND D.fichier LIKE '%index%'"
    69         );
     36        //verifier que ce n'est pas encore dans la base
     37        if ($doc = sql_fetsel('id_document', 'spip_documents', 'fichier='.$outputpdf." AND id_$objet=".$id_objet))
     38        return false;
    7039       
    71         $doc_depart = sql_fetch($pdf_rub);
    72                 spip_log("fusionpost2".$doc_depart['fichier']." fera titre = $titre_sortie fin",'fusionpdf');
    73 
    74                 if (!$doc_depart) return false;
    75 
    76         $pdf_depart = $doc_depart['fichier'];
    77         $fichier_base="pdf/".$titre_sortie.".pdf";
    78                 $inputpdf=_DIR_IMG.$pdf_depart;
    79                 $outputpdf=_DIR_IMG.$fichier_base;
    80                
    81                 //verifier que ce n'est pas encore dans la base
    82                 if ($doc = sql_fetsel('id_document', 'spip_documents', 'fichier='.$fichier_base.' AND id_article='.$id_article))
    83                 return false;
     40        //on extrait les pages et on fusionne
     41        fusionner($path_parent,$outputpdf,$interval);
    8442       
    85         //todo > reprendre les numeros des pages de N-N (5-7)
    86         // soit champ supp pour article
    87         // soit taper dans cvs, mais en cas d'erreur, attention confusion et grosse galre!
    88         fusionner($inputpdf,$outputpdf,$pages);
    89        
    90         if(file_exists($outputpdf)){
    91                 $date_article=sql_getfetsel('date','spip_articles',"id_article='$id_article'");
     43        $date_objet=sql_getfetsel('date',"spip_".$objet."s","id_$objet='$id_objet'");
    9244               
    9345        //preparer les champs
    94                         $champs['date'] = $date_article;
    95                         $champs['fichier'] = $fichier_base;
     46                        $champs['date'] = $date_objet;
     47                        $champs['fichier'] = $outputpdf;
    9648                        $champs['taille'] =  filesize($outputpdf);
    9749                        $champs['largeur'] = 0;
     
    10658        if($id_document){
    10759       
    108         //puis sauvegarder le document dans l'article
     60        //puis sauvegarder le document dans l'objet demande
    10961        spip_log("insertion doc= $id_document",'fusionpdf');
    11062                $document_lien = sql_insertq(
     
    11264                        array(
    11365                                'id_document'=>$id_document,
    114                                 'id_objet'=>$id_article,
    115                                 'objet'=>'article',
     66                                'id_objet'=>$id_objet,
     67                                'objet'=>$objet,
    11668                                'vu'=>'non'
    11769                        )
    11870                );
    11971        }
    120        
    12172
    122         }
    123 
    124        
    125                 return $titre_sortie ." et ". $pdf_depart;
    12673}
    12774
    12875
    12976//verifier la ligne de modif dans fpdf pour le output
    130 function fusionner($inputpdf,$outputpdf,$pages) {
     77function fusionner($path_parent,$outputpdf,$interval) {
    13178        // pour fusionner divers pdfs entre eux
    132         //le inputpdf pourrait etre un tableau (cheminpdf1=>pages,cheminpdf2=>pages)
     79        //le path_parent pourrait etre un tableau (cheminpdf1=>pages,cheminpdf2=>pages)
    13380        if(include_once(find_in_path('lib/PDFMerger/PDFMerger.php'))){
    13481       
    13582        $pdf = new PDFMerger;
    136         $pdf->addPDF($inputpdf,$pages)
     83        $pdf->addPDF($path_parent,$interval)
    13784                ->merge('file', $outputpdf);                   
    138         } else  spip_log("librairie introuvable input= $inputpdf output= $outputpdf",'fusionpdf');
     85        } else  spip_log("librairie introuvable input= $path_parent output= $outputpdf",'fusionpdf');
    13986
    14087       
  • _plugins_/fusion_pdf/inc/fusionpdf_fonctions.php

    r49967 r53029  
    44 *  voir http://pdfmerger.codeplex.com/                         
    55 *                                                                         
    6  *      1-5    recup toutes les pages de 1 ˆ 5
     6 *      1-5    recup toutes les pages de 1 à 5
    77 *      1,3,9  recup les pages 1,3 et 9                                                                         *
    88 *      all    recup toutes les pages
     
    1414\*******************************************************/
    1515
    16 // [(#ID_ARTICLE|pdfmerger{grospdfdedepart.pdf,[1,2,3],nomdesortie.pdf})]
    17 // qui sauve le fichier genere dans la base tant que document joint ˆ l'article
    18 // pas besoin de le refabriquer si il existe dŽjˆ
    19 // sinon le bouton "telecharger" le genere
    20 // seuls les abonnes a l'article voit ce fichier ˆ tŽlŽcharger
    21 // tandis que les abonnes mensuel/annuel ont accs au grospdf de la revue
    2216
    23 /*function pdfmerger($id,$outputpdf,$args='') {
    24 
    25         if(include_once(find_in_path('lib/PDFMerger/PDFMerger.php'))){
     17//utilise par action fusion_pdf
     18//genere le titre propre du pdf
     19function titrature($titre,$prefix,$raccourcir=35){
     20include_spip('inc/texte');
    2621       
    27         $pdf = new PDFMerger;
    28        
    29         $pdf->addPDF('samplepdfs/52_index.pdf', '1-2')
    30                 ->addPDF('samplepdfs/two.pdf', '1-2')
    31                 ->addPDF('samplepdfs/three.pdf', 'all')
    32                 ->merge('file', $outputpdf);                   
    33         }
    34          
    35        
    36         return " Le fichier <a href='".$outputpdf."'>PDF</a> a ete genere!";
    37 }*/
    38 
    39 //Pratiques-No1_vichy-et-l-ordre-des-medecins
    40 //utilise par action fusion_pdf
    41 //[(#TITRE|titrature{[(#TITRE_PARENT|recuperer_numero)]})]
    42 function titrature($titre,$numero_revue='',$pretitre="Pratiques",$raccourcir=35){
    43 include_spip('inc/texte');
    44 
    45         $numero_revue=$numero_revue?"-No$numero_revue":$numero_revue;
    4622        $titre=couper($titre,$raccourcir);
    4723        $titre=translitteration($titre);
     
    4925        $titre = trim(preg_replace(',\.([^.]+)$,', '', $titre));
    5026        $titre= str_replace(' ','-',strtolower($titre));
    51         $titre=$pretitre."$numero_revue"."_".$titre;
     27        $prefix=$prefix?$prefix.'_':'';
     28        $titre=$prefix.$titre;
    5229       
    5330return $titre; 
  • _plugins_/fusion_pdf/plugin.xml

    r52563 r53029  
    22        <nom>Fusion pdf</nom>
    33        <auteur>Anne-lise Martenot (elastick.net)</auteur>
    4         <version>0.1.1</version>
     4        <version>0.2.1</version>
    55        <etat>test</etat>
    66        <icon>img/fusionpdf_120.png</icon>
  • _plugins_/fusion_pdf/squelettes/inclure/action_fusionpdf.html

    r49825 r53029  
    1 [(#REM) a inclure en condition vide de la <//boucle> documents]
     1[(#REM) a inclure par exemple en condition vide de la <//boucle> documents]
     2<BOUCLE_fusionpdf(ARTICLES){id_article}>
     3
    24<div class="liste documents documents_joints">
    35        <ul class="liste-items"><li class="item">
    4         <img width="52" height="52" class="spip_logos" alt="" src="#CHEMIN{prive/vignettes/pdf.png}">
    5 <strong><:fusionpdf:le_pdf_nexiste_pas:></strong>
     6       
     7<BOUCLE_documents(DOCUMENTS){id_rubrique}{extension=pdf}{0,1}>
     8#SET{path_parent,#FICHIER}
     9</BOUCLE_documents>
     10
     11[(#REM)
     12        Pour donner à manger à fusion_pdf:
     13        - le chemin complet du pdf de départ
     14        - l'interval de type "1-5" ou "1,3,9" ou "all"
     15        - le prefix du nom de fichier pdf généré
     16        - suivi d'un titre comme #TITRE
     17        - l'objet auquel le document pdf généré sera lié
     18        - l'id_objet auquel le document pdf généré sera lié
     19]
    620
    721[(#BOUTON_ACTION{<:fusionpdf:generez_le_pdf:>,
    8 #URL_ACTION_AUTEUR{fusion_pdf,
    9 document/#ID_ARTICLE/#ID_RUBRIQUE/3-7/PDFusion/35,
    10 #SELF|parametre_url{pdf,done}},
    11 ajax})]                         
     22[(#URL_ACTION_AUTEUR{fusion_pdf,#GET{path_parent}//5-7//FusionPDF//#TITRE//article//#ID_ARTICLE,#SELF
     23})],ajax})]     
    1224
    1325</li></ul>
    1426</div>
     27
     28</BOUCLE_fusionpdf>
Note: See TracChangeset for help on using the changeset viewer.