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

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

Associaspip Correction d'un bug dans la récupération des emails d'un auteur qui n'en a pas.

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." AND email <> ''");
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.