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

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

Report des nouveaux objets introduits par r70154 (messages, mots-clés et groupes de mots clés) et retrait de code inulile (spécifique SPIP 3 mais il y a des branches distinctes maintenant)

File size: 3.5 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, url_voir)
13**/
14function liste_objets_coordonnees($quoi = '') {
15
16        $liste = lister_tables_objets_sql(); // tableau de donnees de TOUTES les tables...
17        unset($liste['spip_adresses'], $liste['spip_emails'], $liste['spip_numeros'], $liste['spip_pays'], $liste['spip_documents'], $liste['spip_messages']); // ...donc on retire ceux du plugin coordonnees ! ...ainsi que ceux de : pays requis (revoir sa declaration pour ne pas avoir a faire ceci), documents (comme pays n'a pas de page de vue) et messages (ca fait etrange, tout comme les mots-cles et groupes de mots-cles...)
18        foreach ($liste as $tab=>$inf) {
19                if (!$liste[$tab]['principale'] OR !$liste[$tab]['editable']) {
20                        // on ne prendra pas en compte les objets non editables...
21                        // (ceci vire donc spip_forum spip_petitions spip_signatures spip_syndic_articles spip_depots spip_plugins spip_paquets etc.)
22                        unset($liste[$tab]);
23                } else {
24                        $type = $liste[$tab]['type'];
25                        $liste[$type] = $liste[$tab]; // le plugin-ci utilise comme cle le type d'objet alors que le tableau renvoye a comme cle le nom de table, donc on recree l'entree...
26                        unset($liste[$tab]); // ...et on supprime l'ancienne entree histoire de ne pas allourdir le tableau en memoire
27                        $liste[$type]['titre'] = _T($liste[$type]['texte_objet']); // on rajoute le titre traduit pour etre affiche par la configuration (je ne sais pas utiliser directement "texte_objet")
28                }
29        }
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 objet
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        // liste des exec de visualisation pour les objets declares
65        $liste = liste_objets_coordonnees('url_voir');
66
67        if (isset($type) and isset($liste[$type])){
68                // c'est un exec que l'on peut afficher
69                // verifions qu'il est coche dans la conf
70                $conf = unserialize($GLOBALS['meta']['coordonnees']);
71                if (is_array($conf['objets']) AND in_array($type, $conf['objets'])) {
72                        // on doit l'afficher
73                        // seulement si on a un identifiant
74                        if (!isset($_id)) {
75                                $_id = id_table_objet($type);
76                        }
77
78                        if (isset($flux['args'][$_id]) and $id = $flux['args'][$_id]) {
79                                include_spip('inc/presentation');
80                                $contexte = array(
81                                        'objet' => $type,
82                                        'id_objet' => $id,
83                                        'id_adresse' => _request('id_adresse'),
84                                        'id_numero' => _request('id_numero'),
85                                        'id_email' => _request('id_email')
86
87                                );
88                                $flux['data'] .= recuperer_fond('prive/boite/coordonnees', $contexte, array('ajax'=>true));
89                        }
90                }
91        }
92
93        return $flux;
94
95}
96
97
98/**
99 * Ajout de l'objet 'adresse'
100 * à la liste des objets pouvant recevoir des champs extras
101**/
102function coordonnees_objets_extensibles($objets){
103        return array_merge($objets, array(
104                'adresse' => _T('coordonnees:adresses'),
105                'numero' => _T('coordonnees:numeros'),
106                'email' => _T('coordonnees:emails'),
107        ));
108}
109
110?>
Note: See TracBrowser for help on using the repository browser.