Ignore:
Timestamp:
Oct 8, 2011, 6:32:36 PM (9 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

File:
1 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       
Note: See TracChangeset for help on using the changeset viewer.