source: spip-zone/_plugins_/contacts_et_organisations/contacts_pipelines.php @ 49979

Last change on this file since 49979 was 49979, checked in by marcimat@…, 10 years ago

Utiliser la liaison spip_organisations_liens pour y mettre les liaisons etre auteur et organisation.

  • Property svn:executable set to *
File size: 8.9 KB
Line 
1<?php
2/**
3 * Plugin Contacts & Organisations pour Spip 2.0
4 * Licence GPL (c) 2009 - 2010 - Ateliers CYM
5 */
6 
7
8/**
9 *
10 * JQuery pour afficher fil d'ariane
11 * du contact ou de l'organisation
12 * sur la vue de l'auteur
13 * le pipeline affiche_hierarchie ne marche pas
14 */
15function contacts_header_prive($flux)
16{
17        $flux .= '<script type="text/javascript">';
18        $flux .= '$(document).ready(function(){';
19        $flux .= 'if ($("#ariane").length>0) {';
20        $flux .= '      $("#page").prepend($("#ariane").html());';
21        $flux .= '}});';
22        $flux .= '</script>';
23
24    return $flux;
25}
26
27/**
28 *
29 * Insertion dans la vue des auteurs
30 * des informations relatives aux contacts et organisations
31 *
32 */
33function contacts_afficher_contenu_objet($flux)
34{
35        if ($flux["args"]["type"] == "auteur") {
36       
37                $id = $flux["args"]["id_objet"];
38                $id_contact = sql_getfetsel('id_contact', 'spip_contacts_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
39                $id_organisation = sql_getfetsel('id_organisation', 'spip_organisations_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
40
41                if ($id_contact || $id_organisation)
42                {
43                        $infos = '';
44                        $bouton_edit = '';
45                        $self = generer_url_ecrire('auteur_infos', 'id_auteur='.$id);
46
47                        if ($id_contact)
48                        {
49                                // informations du contact
50                                $infos  = recuperer_fond('prive/contenu/contact', array('id_contact' => $id_contact));
51                               
52                                // bouton "Modifier le contact"
53                                if ( autoriser('modifier', 'contact', $id_contact) )
54                                {
55                                        $texte = _T('contacts:contact_editer');
56                                        $lien = parametre_url(generer_url_ecrire('contact_edit', 'id_contact='.$id_contact), 'redirect' , $self);
57                                        $fond = find_in_path('images/contact-24.png');                         
58                                        $bouton_edit = icone_inline($texte, $lien, $fond, '', 'right') . '<br class="nettoyeur" />' ;
59                                }
60                        }
61                       
62                        else if ($id_organisation)
63                        {
64                                // informations de l'organisation
65                                $infos = recuperer_fond('prive/contenu/organisation', array('id_organisation' => $id_organisation));
66                               
67                                // bouton "Modifier l'organisation"
68                                if ( autoriser('modifier', 'organisation', $id_organisation) )
69                                {
70                                        $texte = _T('contacts:organisation_editer');
71                                        $lien = parametre_url(generer_url_ecrire('organisation_edit', 'id_organisation='.$id_organisation), 'redirect' , $self);
72                                        $fond = find_in_path('images/organisation-24.png');                             
73                                        $bouton_edit = icone_inline($texte, $lien, $fond, '', 'right') . '<br class="nettoyeur" />' ;
74                                }
75                        }
76
77                        $flux['data'] = $bouton_edit . $infos . $flux['data'] ;
78
79                } // fin fiche contact ou organisation
80        }
81
82        return $flux;
83}
84
85
86function contacts_boite_infos($flux){
87        /*
88        if ($flux['args']['type'] == 'contact'){
89
90                $id_auteur = sql_getfetsel('id_objet',
91                'spip_contacts_liens',
92                'objet=\'auteur\' AND id_contact=' . intval($flux['args']['id_contact']));
93
94                if ( $id_auteur > 0 )
95                {
96                        $auteur = sql_fetsel("*", "spip_auteurs", "id_auteur=$id_auteur");
97                       
98                        $flux['data']                   .= '<div>toto</div>';                   
99                }
100        }
101       
102        $flux['data']                   =  $flux['data'] ;
103        */
104        return $flux;
105}
106
107/**
108 * Affichage du formulaire de choix Contact/Organisation
109 * dans la colonne de vue d'un auteur
110 * et
111 * Affichage du formulaire de recherche et de sélection d'Organisations
112 * dans la colonne de vue d'une rubrique
113**/
114function contacts_affiche_gauche($flux){
115
116        if ($flux['args']['exec'] == 'auteur_infos'){
117
118                $id = $flux["args"]["id_auteur"];
119                $id_contact = sql_getfetsel('id_contact', 'spip_contacts_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
120                $id_organisation = sql_getfetsel('id_organisation', 'spip_organisations_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
121
122                if ($id_contact || $id_organisation)
123                {
124                        $self = generer_url_ecrire('auteur_infos', 'id_auteur='.$id);
125
126                        // boîte selection de contacts ou d'organisations liés
127                        $flux['data'] .= recuperer_fond('prive/boite/selecteur_contacts_organisations',
128                                                 array('id_auteur'=>$id), array('ajax'=>true));
129                       
130                        if ($id_contact)
131                        {
132                                // fil d'ariane du contact
133                                $contact = sql_fetsel('nom, prenom', 'spip_contacts', 'id_contact='.$id_contact);
134                                $flux['data'] .= recuperer_fond('prive/boite/ariane_contact', array(
135                                                'nom'                           => $contact['nom'],
136                                                'prenom'                        => $contact['prenom']
137                                        ));
138                        } // fin 'si contact'
139       
140                        else if ($id_organisation)
141                        {
142                                // bouton "Créer un contact"
143                                if ( autoriser('creer', 'contact') )
144                                {
145                                        $texte = _T('contacts:contact_creer');
146                                        $lien = generer_url_ecrire('contact_edit', 'new=oui&id_organisation='.$id_organisation.'&redirect='.$self);
147                                        $fond = find_in_path('images/contact-24.png');                         
148                                        $flux['data'] .= icone($texte, $lien, $fond, '', 'right') ;
149                                }
150       
151                                // fil d'ariane de l'organisation
152                                $organisation = sql_fetsel('nom, id_parent', 'spip_organisations', 'id_organisation='.$id_organisation);
153                                $flux['data'] .= recuperer_fond('prive/boite/ariane_organisation', array(
154                                                'nom'                           => $organisation['nom'],
155                                                'id_parent'                     => $organisation['id_parent']
156                                        ));
157                        }// fin 'si organisation'
158                }
159        }
160
161        if ($flux['args']['exec'] == 'naviguer' && $flux['args']['id_rubrique']){
162                $flux['data'] .= recuperer_fond('prive/boite/selecteur_organisations_de_rubrique', array(
163                        'id_rubrique'=>$flux['args']['id_rubrique']
164                ));
165        }
166
167        return $flux;
168}
169
170
171/**
172 *
173 * Insertion dans la vue des auteurs
174 * des informations relatives aux contacts et organisations
175 * et
176 * Insertion dans la vue des rubriques
177 * des informations relatives aux organisations
178 */
179function contacts_affiche_milieu($flux){
180        if ($flux['args']['exec'] == 'auteur_infos')
181        {
182                $id = $flux["args"]["id_auteur"];
183                $id_contact = sql_getfetsel('id_contact', 'spip_contacts_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
184                $id_organisation = sql_getfetsel('id_organisation', 'spip_organisations_liens', array('objet=' . sql_quote('auteur'), 'id_objet=' . intval($id)));
185
186                if ( $id_contact || $id_organisation )
187                {
188                        $ajout = '';
189                        $porfolio_documents = '';
190                        $self = generer_url_ecrire('auteur_infos', 'id_auteur='.$id);
191                       
192                        if ($id_contact)
193                        {
194                                // liste des organisations auxquelles est lié le contact
195                                $ajout  = recuperer_fond('prive/liste/linked_organisations', 
196                                                                array(
197                                                                        'id_contact'    => $id_contact,
198                                                                        'titre'                 => _T('contacts:info_organisations_appartenance')
199                                                                ),
200                                                                array('ajax'            => true));
201                                       
202                        }
203       
204       
205                        else if ($id_organisation)
206                        {
207                                // liste des contacts liés à l'organisation
208                                $ajout  = recuperer_fond('prive/liste/linked_contacts', 
209                                                                array(
210                                                                        'id_organisation'       => $id_organisation,
211                                                                        'titre'                 => _T('contacts:info_contacts_organisation')
212                                                                ),
213                                                                array('ajax'            => true));
214                               
215                                // bouton "Créer une organisation fille"
216                                if ( autoriser('creer', 'organisation') )
217                                {
218                                        $texte = _T('contacts:organisation_creer_fille');
219                                        $lien = generer_url_ecrire('organisation_edit', 'new=oui&id_parent='.$id_organisation.'&redirect='.$self);
220                                        $fond = find_in_path('images/organisation-24.png');                             
221                                        $ajout = icone_inline($texte, $lien, $fond, '', 'right') . '<br class="nettoyeur">'. $ajout ;
222                                }
223       
224                        }
225
226                        // portfolio documents
227                        $porfolio_documents = recuperer_fond('prive/contenu/portfolio_document', 
228                                                        array(),
229                                                        array('ajax'            => true));
230                                                       
231                        $flux['data'] = $ajout . $flux['data'] . $porfolio_documents  ;         
232                }// fin page contact ou organisation
233        } 
234               
235        if ($flux['args']['exec'] == 'naviguer' && $flux['args']['id_rubrique'])
236        {
237                $flux['data'] .= recuperer_fond('prive/liste/organisations_liees_rubrique', array(
238                        'id_rubrique' => $flux['args']['id_rubrique'],
239                        'titre' => _T('contacts:info_organisations_appartenance')
240                ), array('ajax'=>true));
241        } // fin page rubrique
242
243        return $flux;
244}
245
246
247/**
248 * Prendre en compte les tables dans la recherche d'éléments.
249 *
250 * @param
251 * @return
252**/
253function contacts_rechercher_liste_des_champs($tables){
254       
255        // ajouter la recherche sur contact
256        $tables['contact']['id_contact'] = 12;
257        $tables['contact']['nom'] = 4;
258        $tables['contact']['prenom'] = 2;
259       
260        // ajouter la recherche sur organisations
261        $tables['organisation']['id_organisation'] = 12;
262        $tables['organisation']['nom'] = 4;
263
264        return $tables;
265}
266
267
268/**
269 * Autoriser les champs extras sur les objets
270 * Contacts et Organisations
271**/
272function contacts_objets_extensibles($objets){
273                return array_merge($objets, array(
274                        'contact' => _T('contacts:contacts'),
275                        'organisation' => _T('contacts:organisations'),
276                ));
277}
278
279/**
280 * Ajoute une feuille de style pour la v-card
281 * Peut être surchargé ensuite
282**/
283function contacts_insert_head($flux){
284
285        $flux .= '<!-- insertion de la css contacts--><link rel="stylesheet" type="text/css" href="'.find_in_path('contacts.css').'" media="all" />';
286
287        return $flux;
288}
289
290
291?>
Note: See TracBrowser for help on using the repository browser.