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

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

Associaspip Pouvoir exporter en PDF les adresses, numeros de telephones et emails des membres + exporter en PDF uniquement la liste des membres affichés.

File size: 6.3 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/* Cette fonction prend en argument un tableau d'id_auteurs et renvoie un tableau
56id_auteur => array(adresses). Les adresses sont constituees d'une chaine, les caracteres de retour a la ligne et espace peuvent etre passe en parametre */
57/* TODO: l'affichage du pays devrait etre optionnel */
58function association_recuperer_adresses($id_auteurs, $newline="<br/>", $espace="&nbsp;")
59{
60        /* prepare la structure du tableau renvoye */
61        $adresses_auteurs = array();
62        foreach ($id_auteurs as $id_auteur) {
63                $adresses_auteurs[$id_auteur] = array();
64        }
65       
66        if (plugin_actif('COORDONNEES')) {
67                $id_auteurs_list = sql_in('al.id_objet', $id_auteurs);
68                $query = sql_select('al.id_objet as id_auteur, 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',$id_auteurs_list.' AND al.objet=\'auteur\'');
69                while ($data = sql_fetch($query)) {
70                        $voie = ($data['voie'])?$data['voie'].$newline:'';
71                        $complement = ($data['complement'])?$data['complement'].$newline:'';
72                        $boite_postale = ($data['boite_postale'])?$data['boite_postale'].$newline:'';
73                        $code_postal = ($data['code_postal'])?$data['code_postal'].$espace:'';
74                        $ville = ($data['ville'])?$data['ville'].$newline:'';
75                        $pays = ($data['pays'])?$data['pays']:'';
76
77                        $adresses_auteurs[$data['id_auteur']][] = $voie.$complement.$boite_postale.$code_postal.$ville.$pays;
78                }
79        }
80        return $adresses_auteurs;
81}
82
83/* prend en argument un tableau d'id_auteurs et retourne un tableau id_auteur => code html listant toutes les adresses de l'auteur */
84function association_recuperer_adresses_string($id_auteur)
85{
86        $adresses_auteurs = association_recuperer_adresses($id_auteur);
87
88        $adresses_string = array();
89
90        /* on le transforme en tableau de strings html */
91        foreach ($adresses_auteurs as $id_auteur => $adresses) {
92                $adresses_strings[$id_auteur] = '';
93                if (count($adresses)) {
94                        $adresses_strings[$id_auteur] = implode("<br/><br/>",$adresses);
95                }
96        }
97
98        return $adresses_strings;
99}
100
101/* Cette fonction prend en argument un tableau d'id_auteurs et renvoie un tableau
102id_auteur => array(emails)  */
103function association_recuperer_emails($id_auteurs)
104{
105        /* prepare la structure du tableau renvoye */
106        $emails_auteurs = array();
107        foreach ($id_auteurs as $id_auteur) {
108                $emails_auteurs[$id_auteur] = array();
109        }
110
111        /* on commence par recuperer les emails de la table spip_auteurs */
112        $id_auteurs_list = sql_in('id_auteur', $id_auteurs);
113        $auteurs_info = sql_select('id_auteur, email', 'spip_auteurs', $id_auteurs_list." AND email <> ''");
114       
115        while ($auteur_info = sql_fetch($auteurs_info)) {
116                $emails_auteurs[$auteur_info['id_auteur']][] = $auteur_info['email'];
117        }
118
119        /* si le plugin coordonnees est actif, on recupere les emails contenus dans coordonnees */
120        if (plugin_actif('COORDONNEES')) {
121                $id_auteurs_list = sql_in('el.id_objet', $id_auteurs);
122                $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\'');
123                while ($data = sql_fetch($query)) {
124                                $emails_auteurs[$data['id_auteur']][] = $data['email'];
125                }
126        }
127
128        return $emails_auteurs;
129}
130
131/* prend en argument un tableau d'id_auteurs et retourne un tableau id_auteur => code html listant tous les emails de l'auteur */
132function association_recuperer_emails_string($id_auteurs)
133{
134        /* on recupere tous les mails dans un tableau de tableau */
135        $emails_auteurs = association_recuperer_emails($id_auteurs);
136
137        $emails_strings = array();
138
139        /* on le transforme en tableau de strings html */       
140        foreach ($emails_auteurs as $id_auteur => $emails) {
141                $emails_strings[$id_auteur] = '';
142                if (count($emails)) {
143                        foreach ($emails as $email) {
144                                $emails_strings[$id_auteur] .= "<a href='mailto:$email' title='"
145                                        . _L('Ecrire &agrave;') . ' ' . $email . "'>"
146                                        . $email
147                                        . '</a><br/>';
148                        }
149                }
150        }
151
152        return $emails_strings;
153}
154
155function print_tel($n, $separateur="&nbsp;")
156{
157        $n = preg_replace('/\D/', '', $n);
158        if (!intval($n)) return '';
159        return preg_replace('/(\d\d)/', '\1'.$separateur, $n);
160}
161?>
Note: See TracBrowser for help on using the repository browser.