Changeset 53029 in spip-zone
- Timestamp:
- Oct 8, 2011, 6:32:36 PM (9 years ago)
- Location:
- _plugins_/fusion_pdf
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/fusion_pdf/action/fusion_pdf.php
r49825 r53029 1 1 <?php 2 if (!defined('_ECRIRE_INC_VERSION')) return; 2 3 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 fusion17 * @param unknown_type $arg18 * @return unknown_type19 */20 4 function action_fusion_pdf_dist($arg=null) { 21 5 if (is_null($arg)){ … … 23 7 $arg = $securiser_action(); 24 8 } 25 9 26 10 // 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); 31 13 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'); 33 15 34 // todo ? ANDautoriser('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); 37 19 } 38 39 20 40 21 // Invalider les caches 41 22 include_spip('inc/invalideur'); 42 suivre_invalideur("id='id_ article/$id_article'");23 suivre_invalideur("id='id_$objet/$id_objet'"); 43 24 44 25 } 45 26 46 27 47 function fusion_pdf_post($ objet, $id_article, $id_rubrique, $pages, $pretitre,$raccourcir){28 function fusion_pdf_post($path_parent, $interval, $prefix,$titre_sale,$objet,$id_objet){ 48 29 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'); 50 34 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'");55 35 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; 70 39 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); 84 42 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 galre! 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'"); 92 44 93 45 //preparer les champs 94 $champs['date'] = $date_ article;95 $champs['fichier'] = $ fichier_base;46 $champs['date'] = $date_objet; 47 $champs['fichier'] = $outputpdf; 96 48 $champs['taille'] = filesize($outputpdf); 97 49 $champs['largeur'] = 0; … … 106 58 if($id_document){ 107 59 108 //puis sauvegarder le document dans l' article60 //puis sauvegarder le document dans l'objet demande 109 61 spip_log("insertion doc= $id_document",'fusionpdf'); 110 62 $document_lien = sql_insertq( … … 112 64 array( 113 65 'id_document'=>$id_document, 114 'id_objet'=>$id_ article,115 'objet'=> 'article',66 'id_objet'=>$id_objet, 67 'objet'=>$objet, 116 68 'vu'=>'non' 117 69 ) 118 70 ); 119 71 } 120 121 72 122 }123 124 125 return $titre_sortie ." et ". $pdf_depart;126 73 } 127 74 128 75 129 76 //verifier la ligne de modif dans fpdf pour le output 130 function fusionner($ inputpdf,$outputpdf,$pages) {77 function fusionner($path_parent,$outputpdf,$interval) { 131 78 // pour fusionner divers pdfs entre eux 132 //le inputpdfpourrait etre un tableau (cheminpdf1=>pages,cheminpdf2=>pages)79 //le path_parent pourrait etre un tableau (cheminpdf1=>pages,cheminpdf2=>pages) 133 80 if(include_once(find_in_path('lib/PDFMerger/PDFMerger.php'))){ 134 81 135 82 $pdf = new PDFMerger; 136 $pdf->addPDF($ inputpdf,$pages)83 $pdf->addPDF($path_parent,$interval) 137 84 ->merge('file', $outputpdf); 138 } else spip_log("librairie introuvable input= $ inputpdfoutput= $outputpdf",'fusionpdf');85 } else spip_log("librairie introuvable input= $path_parent output= $outputpdf",'fusionpdf'); 139 86 140 87 -
_plugins_/fusion_pdf/inc/fusionpdf_fonctions.php
r49967 r53029 4 4 * voir http://pdfmerger.codeplex.com/ 5 5 * 6 * 1-5 recup toutes les pages de 1 56 * 1-5 recup toutes les pages de 1 à 5 7 7 * 1,3,9 recup les pages 1,3 et 9 * 8 8 * all recup toutes les pages … … 14 14 \*******************************************************/ 15 15 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'article18 // pas besoin de le refabriquer si il existe dj19 // sinon le bouton "telecharger" le genere20 // seuls les abonnes a l'article voit ce fichier tlcharger21 // tandis que les abonnes mensuel/annuel ont accs au grospdf de la revue22 16 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 19 function titrature($titre,$prefix,$raccourcir=35){ 20 include_spip('inc/texte'); 26 21 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-medecins40 //utilise par action fusion_pdf41 //[(#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;46 22 $titre=couper($titre,$raccourcir); 47 23 $titre=translitteration($titre); … … 49 25 $titre = trim(preg_replace(',\.([^.]+)$,', '', $titre)); 50 26 $titre= str_replace(' ','-',strtolower($titre)); 51 $titre=$pretitre."$numero_revue"."_".$titre; 27 $prefix=$prefix?$prefix.'_':''; 28 $titre=$prefix.$titre; 52 29 53 30 return $titre; -
_plugins_/fusion_pdf/plugin.xml
r52563 r53029 2 2 <nom>Fusion pdf</nom> 3 3 <auteur>Anne-lise Martenot (elastick.net)</auteur> 4 <version>0. 1.1</version>4 <version>0.2.1</version> 5 5 <etat>test</etat> 6 6 <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 2 4 <div class="liste documents documents_joints"> 3 5 <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 ] 6 20 7 21 [(#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})] 12 24 13 25 </li></ul> 14 26 </div> 27 28 </BOUCLE_fusionpdf>
Note: See TracChangeset
for help on using the changeset viewer.