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

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

FACD est obligatoire maintenant

Amélioration de la fonction de transfert depuis les anciennes versions

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