source: spip-zone/_plugins_/doc2img/trunk/doc2img_pipelines.php @ 70078

Last change on this file since 70078 was 70078, checked in by kent1@…, 7 years ago

Un peu de doc et un mini bug sur les champs_editables réparé

File size: 6.0 KB
Line 
1<?php
2/**
3 * Plugin Doc2img
4 * Fichier contenant les appels aux pipelines de SPIP
5 *
6 * @package SPIP\Doc2img\Pipelines
7 */
8
9if (!defined('_ECRIRE_INC_VERSION')) return;
10
11/**
12 * Insertion dans le pipeline post_edition (SPIP)
13 * Ajoute automatiquement dans la file d'attente de conversion les fichiers à transformer
14 *
15 * @param array $flux
16 *              Le contexte du pipeline
17 * @return array $flux
18 *              Le contexte du pipeline modifié
19 */
20function doc2img_post_edition($flux) {
21    $id_document = $flux['args']['id_objet'];
22
23    if (in_array($flux['args']['operation'], array('ajouter_document','document_copier_local'))
24            && (sql_countsel("spip_documents as L1 LEFT JOIN spip_documents_liens as L2 ON L1.id_document=L2.id_document","L2.id_objet=".intval($flux['args']['id_objet']).' AND L2.objet="document" AND L1.mode="doc2img"') == 0)
25            && (lire_config('doc2img/conversion_auto') == "on")){
26                $infos_doc = sql_fetsel('extension,mode,fichier,mode,distant','spip_documents','id_document='.intval($id_document));
27                $types_autorises = explode(',',lire_config("doc2img/format_document",null,true));
28                                if($infos_doc['extension'] == 'tif'){
29                                        $infos_doc['extension'] = 'tiff';
30                                }
31                if(($infos_doc['mode'] != 'vignette')
32                        && ($infos_doc['distant'] == 'non')
33                        && in_array($infos_doc['extension'],$types_autorises)){
34                                        include_spip('action/facd_ajouter_conversion');
35                                                facd_ajouter_conversion_file($id_document,'doc2img_convertir',null,null,'doc2img');
36                                                $conversion_directe = charger_fonction('facd_convertir_direct','inc');
37                                                $conversion_directe();
38                }
39    }
40        if($flux['args']['operation'] == 'supprimer_document'){
41                $v = sql_select("*","spip_documents as L1 LEFT JOIN spip_documents_liens as L2 ON L1.id_document=L2.id_document","L2.id_objet=".intval($flux['args']['id_objet']).' AND L2.objet="document" AND L1.mode="doc2img"');
42                include_spip('action/dissocier_document');
43                while($conversion = sql_fetch($v)){
44                        supprimer_lien_document($conversion['id_document'], 'document', $flux['args']['id_objet'],true);
45                }
46        }
47        return $flux;
48}
49
50/**
51 * Insertion dans le pipeline formulaire_charger (SPIP)
52 * Vérifie au chargement du formulaire de configuration que l'on a bien accès à la class Imagick
53 *
54 * @param array $flux
55 *              Le contexte du pipeline
56 * @return array $flux
57 *              Le contexte du pipeline modifié : editable à false et un message d'erreur si pas de class Imagick
58 */
59function doc2img_formulaire_charger($flux) {
60        if($flux['args']['form'] == 'configurer_doc2img'){
61                if (!class_exists('Imagick')) {
62                        $flux['editable'] = false;
63                        $flux['message_erreur'] = _T('doc2img:erreur_class_imagick');   
64                }
65        }
66        return $flux;
67}
68
69/**
70 * Insertion dans le pipeline formulaire_verifier (SPIP)
71 * Vérifie la configuration du formulaire de configuration
72 *
73 * @param array $flux
74 *              Le contexte du pipeline
75 * @return array $flux
76 *              Le contexte du pipeline auquel on a ajouté nos erreurs
77 */
78function doc2img_formulaire_verifier($flux) {
79        if($flux['args']['form'] == 'configurer_doc2img'){
80                include_spip('inc/config');
81                if(!is_array($formats = lire_config('doc2img_imagick_extensions'))){
82                        include_spip('inc/metas');
83                        $imagick = new Imagick();
84                        $formats = $imagick->queryFormats();
85                        ecrire_meta('doc2img_imagick_extensions',serialize($formats));
86                }
87                if(_request('format_document')){
88                        $formats_choisis = explode(',',trim(_request('format_document')));
89                        $diff = array_diff(array_map('trim',array_map('strtolower',$formats_choisis)),array_map('trim',array_map('strtolower',$formats)));
90                        $formats = array_map('trim',array_map('strtolower',explode(',',trim(_request('format_document')))));
91                        set_request('format_document',implode(',',$formats));
92                }
93                if(count($diff) > 1){
94                        $flux['format_document'] = _T('doc2img:erreur_formats_documents',array('types'=>implode(',',$diff)));
95                }else if(count($diff) == 1){
96                        $flux['format_document'] = _T('doc2img:erreur_format_document',array('type'=>implode(',',$diff)));
97                }
98        }
99        return $flux;
100}
101
102/**
103 * Insertion dans le pipeline recuperer_fond (SPIP)
104 * On affiche en dessous des documents les pages converties
105 *
106 * @param array $flux
107 *              Le contexte du pipeline
108 * @return array $flux
109 *              Le contexte du pipeline auquel on a ajoute le html dans data
110 */
111function doc2img_recuperer_fond($flux){
112        if ($flux['args']['fond']=='modeles/document_desc'){
113                $flux['data']['texte'] .= recuperer_fond('prive/inclure/document_desc_liste_doc2img',$flux['args']['contexte']);
114        }
115        return $flux;
116}
117
118/**
119 * Insertion dans le pipeline medias_documents_visibles (Plugin medias)
120 *
121 * On ajoute le fait que les documents ayant comme mode doc2img soient visibles et non pas
122 * supprimés des boucles documents
123 *
124 * @param array $flux
125 *              Le contexte du pipeline, tableau des types de documents visibles possibles
126 * @return array $flux
127 *              Le contexte du pipeline modifié, tableau auquel on a ajouté doc2img
128 */
129function doc2img_medias_documents_visibles($flux){
130        $flux[] = 'doc2img';
131        return $flux;
132}
133
134/**
135 * Insertion dans le pipeline document_desc_actions (Plugin Médias)
136 * Ajouter le bouton de conversion de document dans le bloc de document
137 *
138 * @param array $flux
139 *              Le contexte du pipeline
140 * @return array $flux
141 *              Le contexte du pipeline modifié avec le bouton de conversion
142 */
143function doc2img_document_desc_actions($flux) {
144        $id_document = $flux['args']['id_document'];
145        $infos = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document));
146        $types_autorises = explode(',',lire_config("doc2img/format_document",null,true));
147        if($infos['extension'] == 'tif'){
148                $infos['extension'] = 'tiff';
149        }
150        if(($infos['mode'] != 'vignette')
151                && ($infos['distant'] == 'non')
152                && in_array($infos['extension'],$types_autorises)){
153                        $fond='prive/doc2img_media_boutons';
154                if ($flux['args']['position'] == 'galerie') {
155                        $flux['data'] .= recuperer_fond($fond,array('mode'=>'galerie','id_document'=>$id_document));
156                } else {
157                        $flux['data'] .= recuperer_fond($fond,array('id_document'=>$id_document));
158                }
159        }
160        return $flux;
161}
162?>
Note: See TracBrowser for help on using the repository browser.