source: spip-zone/_plugins_/coordonnees/trunk/coordonnees_pipelines.php @ 70109

Last change on this file since 70109 was 70109, checked in by gildas.cotomale@…, 8 years ago

permettre aux plugins de rajouter leurs objets éditoriaux comme demandé sur le forum http://contrib.spip.net/Plugin-Coordonnees#forum464447

File size: 3.2 KB
Line 
1<?php
2
3/**
4 * Plugin Coordonnees
5 * Licence GPL (c) 2010 Matthieu Marcillaud
6**/
7
8/**
9 * Informations sur les objets où peut s'appliquer les coordonnees
10 *
11 * @param String $quoi info que l'on veut recuperer (sinon tout le tableau)
12 * @return Array Liste d'objet et quelques définitions (titre, exec)
13**/
14function liste_objets_coordonnees($quoi = '') {
15        $liste = array(
16                'auteur'       => array('titre'=>_T('ecrire:info_auteurs'),      'exec'=>'auteur_infos'),
17                'article'      => array('titre'=>_T('ecrire:info_articles_2'),     'exec'=>'articles'),
18                'rubrique'     => array('titre'=>_T('ecrire:info_rubriques'),    'exec'=>'naviguer'),
19                'breve'        => array('titre'=>_T('breves:breves'),    'exec'=>'breves_edit'),
20                'site'         => array('titre'=>_T('sites:titre_page_sites_tous'),    'exec'=>'sites'),
21        );
22#       if ( test_plugin_actif('AGENDA') ) // Agenda 2
23#               $liste['evenement'] = array('titre'=>_T('agenda:evenements'),    'exec'=>'evenements_edit'); // ca marche, mais comme les evenements sont obligatoirement lies a un article et qu'ils ont des repetitions, il vaut mieux lier le contact directement a l'article
24        if ( test_plugin_actif('CONTACTS') ) { // Contacts & Organisations
25                $liste['contact'] = array('titre'=>_T('contacts:bouton_contacts'),     'exec'=>'contact');
26                $liste['organisation'] = array('titre'=>_T('contacts:bouton_organisations'),'exec'=>'organisation');
27        }
28
29        $liste = pipeline('objets_coordonnables', $liste);
30
31        if (!$quoi) {
32                return $liste;
33        }
34
35        $listeq = array();
36        foreach ($liste as $c=>$v) {
37                $listeq[$c] = $v[$quoi];
38        }
39        return $listeq;
40}
41
42
43
44/**
45 * Ajout des informations de coordonnées (adresses, mails, numéros)
46 * sur la page de visualisation d'un auteur
47**/
48function coordonnees_affiche_milieu($flux) {
49
50        $exec = isset($flux['args']['exec']) ? $flux['args']['exec'] : _request('exec');
51
52
53                $objet_exec = trouver_objet_exec($exec);
54
55                // pas en édition
56                if ($objet_exec['edition']) {
57                        return $flux;
58                }
59
60                // recuperation de l'id
61                $_id = $objet_exec['id_table_objet'];
62                // type d'objet
63                $type = $objet_exec['type'];
64
65
66
67        $liste = liste_objets_coordonnees('exec');
68        $ok = false;
69
70        if (isset($type) and isset($liste[$type])){
71                // c'est un exec que l'on peut afficher
72                // verifions qu'il est coche dans la conf
73                $conf = unserialize($GLOBALS['meta']['coordonnees']);
74                if (is_array($conf['objets']) AND in_array($type, $conf['objets'])) {
75                        // on doit l'afficher
76                        // seulement si on a un identifiant
77                        if (!isset($_id)) {
78                                $_id = id_table_objet($type);
79                        }
80
81                        if (isset($flux['args'][$_id]) and $id = $flux['args'][$_id]) {
82                                include_spip('inc/presentation');
83                                $contexte = array(
84                                        'objet' => $type,
85                                        'id_objet' => $id,
86                                        'id_adresse' => _request('id_adresse'),
87                                        'id_numero' => _request('id_numero'),
88                                        'id_email' => _request('id_email')
89
90                                );
91                                $flux['data'] .= recuperer_fond('prive/boite/coordonnees', $contexte, array('ajax'=>true));
92                        }
93                }
94        }
95
96        return $flux;
97
98}
99
100
101/**
102 * Ajout de l'objet 'adresse'
103 * à la liste des objets pouvant recevoir des champs extras
104**/
105function coordonnees_objets_extensibles($objets){
106        return array_merge($objets, array(
107                'adresse' => _T('coordonnees:adresses'),
108                'numero' => _T('coordonnees:numeros'),
109                'email' => _T('coordonnees:emails'),
110        ));
111}
112
113?>
Note: See TracBrowser for help on using the repository browser.