source: spip-zone/_plugins_/Association/Associaspip/inc/association_coordonnees.php @ 48001

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

Associaspip Interface avec le plugin Coordonnées pour gérer les adresses, mails (autre que celui de la table spip_auteurs) et télephones.
Au moment de l'upgrade, la fonction de MaJ demande a l'administrateur ce qu'il veut faire de ses données(éliminer ou transferer vers les tables de coordonnées). Il est tout de meme recommandé de faire une sauvegarde de la base avant d'effectuer cette mise a jour.

File size: 5.6 KB
Line 
1<?php
2/***************************************************************************
3 *  Associaspip, extension de SPIP pour gestion d'associations             *
4 *                                                                         *
5 *  Copyright (c) 2007 Bernard Blazin & Francois de Montlivault (V1)       *
6 *  Copyright (c) 2010-2011 Emmanuel Saint-James & Jeannot Lapin (V2)       *
7 *                                                                         *
8 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
9 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
10\***************************************************************************/
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14/* Cette fonction prend en argument un tableau d'id_auteurs et renvoie un tableau
15id_auteur => array(numeros) */
16function association_recuperer_telephones($id_auteurs)
17{
18        /* prepare la structure du tableau renvoye */
19        $telephones_auteurs = array();
20        foreach ($id_auteurs as $id_auteur) {
21                $telephones_auteurs[$id_auteur] = array();
22        }
23
24        if (plugin_actif('COORDONNEES')) {
25                $id_auteurs_list = sql_in('nl.id_objet', $id_auteurs);
26                $query = sql_select('nl.id_objet as id_auteur, n.numero as numero','spip_numeros as n INNER JOIN spip_numeros_liens AS nl ON nl.id_numero=n.id_numero', $id_auteurs_list.' AND nl.objet=\'auteur\'');
27                while ($data = sql_fetch($query))
28                        $telephones_auteurs[$data['id_auteur']][] = $data['numero'];
29        }
30
31        return $telephones_auteurs;
32}
33
34/* prend en argument un tableau d'id_auteurs et retourne un tableau id_auteur => code html listant tous les numeros de l'auteur */
35function association_recuperer_telephones_string($id_auteurs)
36{
37        /* on recupere tous les numeros dans un tableau de tableau */
38        $telephones_auteurs = association_recuperer_telephones($id_auteurs);
39
40        $telephones_strings = array();
41
42        /* on le transforme en tableau de strings html */
43        foreach ($telephones_auteurs as $id_auteur => $telephones) {
44                $telephones_strings[$id_auteur] = '';
45                if (count($telephones)) {
46                        foreach ($telephones as $telephone) {
47                                $telephones_strings[$id_auteur] .=  print_tel($telephone).'<br/>';
48                        }
49                }
50        }
51
52        return $telephones_strings;
53}
54
55/* prend en argument un id_auteur et retourne un tableau d'adresses */
56/* TODO: l'affichage du pays devrait etre optionnel */
57function association_recuperer_adresses($id_auteur)
58{
59                $tab_result=array();
60                if (plugin_actif('COORDONNEES')) {
61                        $query = sql_select('a.titre as titre, a.voie as voie, a.complement as complement, a.boite_postale as boite_postale, a.code_postal as code_postal, a.ville as ville, a.pays as pays', 'spip_adresses as a INNER JOIN spip_adresses_liens AS al ON al.id_adresse=a.id_adresse','al.id_objet='.$id_auteur.' and al.objet=\'auteur\'');
62                        while ($data = sql_fetch($query)) {
63                                $voie = ($data['voie'])?$data['voie'].'<br/>':'';
64                                $complement = ($data['complement'])?$data['complement'].'<br/>':'';
65                                $boite_postale = ($data['boite_postale'])?$data['boite_postale'].'<br/>':'';
66                                $code_postal = ($data['code_postal'])?$data['code_postal'].'&nbsp;':'';
67                                $ville = ($data['ville'])?$data['ville'].'<br/>':'';
68                                $pays = ($data['pays'])?$data['pays'].'<br/>':'';
69       
70                                $tab_result[] = $voie.$complement.$boite_postale.$code_postal.$ville.$pays;
71                        }
72                }
73                return $tab_result;
74}
75
76/* prend en argument 1 id auteur et renvoie un string html listant toutes ses adresses */
77function association_recuperer_adresses_string($id_auteur)
78{
79        $adresses = association_recuperer_adresses($id_auteur);
80        $adresses_string = '';
81        if (count($adresses)) {
82                foreach ($adresses as $adresse) {
83                        $adresses_string .= $adresse.'<br/>';
84                }
85        }
86        return $adresses_string;
87}
88
89/* Cette fonction prend en argument un tableau d'id_auteurs et renvoie un tableau
90id_auteur => array(emails)  */
91function association_recuperer_emails($id_auteurs)
92{
93        /* prepare la structure du tableau renvoye */
94        $emails_auteurs = array();
95        foreach ($id_auteurs as $id_auteur) {
96                $emails_auteurs[$id_auteur] = array();
97        }
98
99        /* on commence par recuperer les emails de la table spip_auteurs */
100        $id_auteurs_list = sql_in('id_auteur', $id_auteurs);
101        $auteurs_info = sql_select('id_auteur, email', 'spip_auteurs', $id_auteurs_list);
102       
103        while ($auteur_info = sql_fetch($auteurs_info)) {
104                $emails_auteurs[$auteur_info['id_auteur']][] = $auteur_info['email'];
105        }
106
107        /* si le plugin coordonnees est actif, on recupere les emails contenus dans coordonnees */
108        if (plugin_actif('COORDONNEES')) {
109                $id_auteurs_list = sql_in('el.id_objet', $id_auteurs);
110                $query = sql_select('el.id_objet as id_auteur, e.email as email','spip_emails as e INNER JOIN spip_emails_liens AS el ON el.id_email=e.id_email', $id_auteurs_list.' AND el.objet=\'auteur\'');
111                while ($data = sql_fetch($query)) {
112                                $emails_auteurs[$data['id_auteur']][] = $data['email'];
113                }
114        }
115
116        return $emails_auteurs;
117}
118
119/* prend en argument un tableau d'id_auteurs et retourne un tableau id_auteur => code html listant tous les emails de l'auteur */
120function association_recuperer_emails_string($id_auteurs)
121{
122        /* on recupere tous les mails dans un tableau de tableau */
123        $emails_auteurs = association_recuperer_emails($id_auteurs);
124
125        $emails_strings = array();
126
127        /* on le transforme en tableau de strings html */       
128        foreach ($emails_auteurs as $id_auteur => $emails) {
129                $emails_strings[$id_auteur] = '';
130                if (count($emails)) {
131                        foreach ($emails as $email) {
132                                $emails_strings[$id_auteur] .= "<a href='mailto:$email' title='"
133                                        . _L('Ecrire &agrave;') . ' ' . $email . "'>"
134                                        . $email
135                                        . '</a><br/>';
136                        }
137                }
138        }
139
140        return $emails_strings;
141}
142
143function print_tel($n)
144{
145        $n = preg_replace('/\D/', '', $n);
146        if (!intval($n)) return '';
147        return preg_replace('/(\d\d)/', '\1&nbsp;', $n);
148}
149?>
Note: See TracBrowser for help on using the repository browser.