source: spip-zone/_plugins_/contacts_et_organisations/branches/v1/contacts_pipelines.php @ 52034

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

On assure la compatibilite (c'est note en commentaire compatibilite) avec d'autres plugins,
en mettant systématiquement à jour les tables de liens et les tables sur le champ id_auteur

nettoyage pour afficher les accents

passage du plugin en 1.13

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