source: spip-zone/_plugins_/doc2img/trunk/doc2img_pipeline.php @ 62042

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

Premier gros commit...

Les doc2img passent en documents de SPIP, plus de table dédiée mais un mode de document différent

File size: 4.8 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 affiche_gauche
12 *
13 * @param $flux flux html de la partie gauche
14 * @return $flux le flux html completé
15 */
16function doc2img_affiche_gauche($flux) {
17        switch ($flux['args']['exec']) {
18                case "articles" :
19                        $id_article = $flux['args']['id_article'];
20                        $flux['data'] .= debut_cadre('r');
21                        $flux['data'] .= recuperer_fond("prive/doc2img",array('id_article'=>$id_article));
22                        $flux['data'] .= fin_cadre('r');
23                        break;
24        }
25        return $flux;
26}
27
28/**
29 * Insertion dans le pipeline post-edition
30 * Converti automatiquement les fichiers autorisés si possible
31 *
32 * @param $flux Le contexte du pipeline
33 * @return $flux Le contexte du pipeline modifié
34 */
35function doc2img_post_edition($flux) {
36    $id_document = $flux['args']['id_objet'];
37
38    if (in_array($flux['args']['operation'], array('ajouter_document','document_copier_local'))
39            && (sql_countsel('spip_doc2img','id_document='.intval($id_document)) == 0)
40            && (lire_config('doc2img/conversion_auto') == "on")){
41                $infos_doc = sql_fetsel('extension,mode,fichier,mode,distant','spip_documents','id_document='.intval($id_document));
42                $types_autorises = explode(',',lire_config("doc2img/format_document",null,true));
43                                if($infos_doc['extension'] == 'tif'){
44                                        $infos_doc['extension'] = 'tiff';
45                                }
46                if(($infos_doc['mode'] != 'vignette')
47                        && ($infos_doc['distant'] == 'non')
48                        && in_array($infos_doc['extension'],$types_autorises)){
49                                        $convertir = charger_fonction('doc2img_convertir','inc');
50                                        $convertir($id_document);
51                }
52    }
53        if($flux['args']['operation'] == 'supprimer_document'){
54                $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"');
55                include_spip('action/dissocier_document');
56                while($conversion = sql_fetch($v)){
57                        supprimer_lien_document($conversion['id_document'], 'document', $flux['args']['id_objet'],true);
58                }
59        }
60        return $flux;
61}
62
63/**
64 * Insertion dans le pipeline document_desc_actions (Plugin Mediathèque)
65 * Ajouter le bouton de conversion de document dans le bloc de document
66 *
67 * @param array $flux
68 * @return array $flux
69 */
70function doc2img_document_desc_actions($flux) {
71        $id_document = $flux['args']['id_document'];
72        $infos = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document));
73        $types_autorises = explode(',',lire_config("doc2img/format_document",null,true));
74        if($infos['extension'] == 'tif'){
75                $infos['extension'] = 'tiff';
76        }
77        if(($infos['mode'] != 'vignette')
78                && ($infos['distant'] == 'non')
79                && in_array($infos['extension'],$types_autorises)){
80                        $fond='prive/doc2img_media_boutons';
81                if ($flux['args']['position'] == 'galerie') {
82                        $flux['data'] .= recuperer_fond($fond,array('mode'=>'galerie','id_document'=>$id_document));
83                } else {
84                        $flux['data'] .= recuperer_fond($fond,array('id_document'=>$id_document));
85                }
86        }
87        return $flux;
88}
89
90/**
91 * Insertion dans le pipeline formulaire_charger (SPIP)
92 * Vérifie au chargement du formulaire de configuration que l'on a bien accès à la class Imagick
93 *
94 * @param array $flux
95 * @return array $flux
96 */
97function doc2img_formulaire_charger($flux) {
98        if($flux['args']['form'] == 'configurer_doc2img'){
99                if (!class_exists('Imagick')) {
100                        $flux['editable'] = false;
101                        $flux['message_erreur'] = _T('doc2img:erreur_class_imagick');   
102                }
103        }
104        return $flux;
105}
106
107/**
108 * Insertion dans le pipeline formulaire_verifier (SPIP)
109 * Vérifie la configuration du formulaire de configuration
110 *
111 * @param array $flux
112 * @return array $flux
113 */
114function doc2img_formulaire_verifier($flux) {
115        if($flux['args']['form'] == 'configurer_doc2img'){
116                include_spip('inc/config');
117                if(!is_array($formats = lire_config('doc2img_imagick_extensions'))){
118                        include_spip('inc/metas');
119                        $imagick = new Imagick();
120                        $formats = $imagick->queryFormats();
121                        ecrire_meta('doc2img_imagick_extensions',serialize($formats));
122                }
123                if(_request('format_document')){
124                        $formats_choisis = explode(',',trim(_request('format_document')));
125                        $diff = array_diff(array_map('trim',array_map('strtolower',$formats_choisis)),array_map('trim',array_map('strtolower',$formats)));
126                        $formats = array_map('trim',array_map('strtolower',explode(',',trim(_request('format_document')))));
127                        set_request('format_document',implode(',',$formats));
128                }
129                if(count($diff) > 1){
130                        $flux['format_document'] = _T('doc2img:erreur_formats_documents',array('types'=>implode(',',$diff)));
131                }else if(count($diff) == 1){
132                        $flux['format_document'] = _T('doc2img:erreur_format_document',array('type'=>implode(',',$diff)));
133                }
134        }
135        return $flux;
136}
137?>
Note: See TracBrowser for help on using the repository browser.