source: spip-zone/_plugins_/fusion_pdf/action/fusion_pdf.php @ 53029

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

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 size: 3.2 KB
Line 
1<?php
2if (!defined('_ECRIRE_INC_VERSION')) return;
3
4function action_fusion_pdf_dist($arg=null) {   
5        if (is_null($arg)){
6                $securiser_action = charger_fonction('securiser_action', 'inc');
7                $arg = $securiser_action();
8        }
9       
10        // On recupere les infos de l'argument
11        @list($path_parent,$interval,$prefix,$titre_sale,$objet,$id_objet) = explode('//', $arg);
12        $id_objet = intval($id_objet);
13       
14        spip_log("fusion pour pdf $path_parent, $interval,$prefix,$titre_sale,$objet,$id_objet",'fusionpdf');
15
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);
19        }
20       
21        // Invalider les caches
22        include_spip('inc/invalideur');
23        suivre_invalideur("id='id_$objet/$id_objet'"); 
24
25}
26
27
28function fusion_pdf_post($path_parent, $interval, $prefix,$titre_sale,$objet,$id_objet){
29       
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');       
34
35       
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;
39       
40        //on extrait les pages et on fusionne
41        fusionner($path_parent,$outputpdf,$interval);
42       
43        $date_objet=sql_getfetsel('date',"spip_".$objet."s","id_$objet='$id_objet'");
44               
45        //preparer les champs
46                        $champs['date'] = $date_objet;
47                        $champs['fichier'] = $outputpdf;
48                        $champs['taille'] =  filesize($outputpdf);
49                        $champs['largeur'] = 0;
50                        $champs['hauteur'] = 0;
51                        $champs['mode'] = 'document';
52                        $champs['extension'] = 'pdf';
53                        $champs['statut'] = 'publie';
54                       
55        //les inserer avec pipeline adequat     
56        $id_document = insert_document($champs);
57
58        if($id_document){
59       
60        //puis sauvegarder le document dans l'objet demande
61        spip_log("insertion doc= $id_document",'fusionpdf');
62                $document_lien = sql_insertq(
63                        'spip_documents_liens',
64                        array(
65                                'id_document'=>$id_document,
66                                'id_objet'=>$id_objet,
67                                'objet'=>$objet,
68                                'vu'=>'non'
69                        )
70                );
71        }
72
73}
74
75
76//verifier la ligne de modif dans fpdf pour le output
77function fusionner($path_parent,$outputpdf,$interval) {
78        // pour fusionner divers pdfs entre eux
79        //le path_parent pourrait etre un tableau (cheminpdf1=>pages,cheminpdf2=>pages)
80        if(include_once(find_in_path('lib/PDFMerger/PDFMerger.php'))){
81       
82        $pdf = new PDFMerger;
83        $pdf->addPDF($path_parent,$interval)
84                ->merge('file', $outputpdf);                   
85        } else  spip_log("librairie introuvable input= $path_parent output= $outputpdf",'fusionpdf');
86
87       
88}
89
90
91/**
92 * Cree un nouveau document et retourne son ID
93 *
94 * @param array $champs Un tableau avec les champs par defaut lors de l'insertion
95 * @return int id_document
96 */
97function insert_document($champs=array()) {
98        $id_document = false;
99        if (!$champs) return;
100
101                // Envoyer aux plugins avant insertion
102                $champs = pipeline('pre_insertion',
103                        array(
104                                'args' => array(
105                                        'table' => 'spip_documents',
106                                ),
107                                'data' => $champs
108                        )
109                );
110                // Inserer l'objet
111                $id_document = sql_insertq('spip_documents', $champs);
112               
113                // Envoyer aux plugins apres insertion
114                pipeline('post_insertion',
115                        array(
116                                'args' => array(
117                                        'table' => 'spip_documents',
118                                ),
119                                'data' => $champs
120                        )
121                );
122
123        return $id_document;
124}
125
126
127?>
Note: See TracBrowser for help on using the repository browser.