source: spip-zone/_plugins_/Association/Associaspip/exec/adherents.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: 11.6 KB
Line 
1<?php
2/***************************************************************************\
3 *  Associaspip, extension de SPIP pour gestion d'associations             *
4 *                                                                         *
5 *  Copyright (c) 2007 Bernard Blazin & François 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
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14       
15
16include_spip('inc/navigation_modules');
17       
18function exec_adherents() {
19               
20        include_spip('inc/autoriser');
21        if (!autoriser('associer', 'adherents')) {
22                include_spip('inc/minipres');
23                echo minipres();
24        } else {
25                $url_association = generer_url_ecrire('association');
26                $url_adherents = generer_url_ecrire('adherents');
27                $url_edit_relances=generer_url_ecrire('edit_relances');
28               
29                //debut_page(_T('asso:titre_gestion_pour_association'), "", "");
30                $commencer_page = charger_fonction('commencer_page', 'inc');
31                echo $commencer_page(_T('asso:association')) ;
32                association_onglets(_T('asso:titre_onglet_membres'));
33               
34                echo debut_gauche("",true);
35               
36                /* recuperation des variables */
37                $critere = request_statut_interne(); // peut appeler set_request
38                $statut_interne = _request('statut_interne');
39                $lettre= _request('lettre');
40
41                echo debut_boite_info(true);
42
43                echo association_icone(_T('asso:menu2_titre_relances_cotisations'),  $url_edit_relances, 'ico_panier.png');
44                echo '<p>'._T('asso:adherent_liste_legende').'</p>'; 
45               
46                // TOTAUX       
47               
48                echo '<div><strong>'._T('asso:adherent_liste_nombre').'</strong></div>';
49                $nombre= $nombre_total=0;
50                $membres = $GLOBALS['association_liste_des_statuts'];
51                array_shift($membres); // ancien membre
52                foreach ($membres as $statut) {
53                        $nombre=sql_countsel('spip_asso_membres', "statut_interne='$statut'");
54                        echo '<div style="float:right;text_align:right">'.$nombre.'</div>';
55                        echo '<div>'._T('asso:adherent_liste_nombre_'.$statut).'</div>';
56                        $nombre_total += $nombre;
57                }               
58                echo '<div style="float:right;text_align:right">'.$nombre_total.'</div>';
59                echo '<div>'._T('asso:adherent_liste_nombre_total').'</div>';
60               
61                echo association_date_du_jour();               
62
63                echo fin_boite_info(true);     
64
65                /* on appelle ici la fonction qui calcule le code du formulaire/tableau de membres pour pouvoir recuperer la liste des membres affiches a transmettre a adherents_table pour la generation du pdf */
66                list($liste_id_auteurs, $code_liste_membres) = adherents_liste(intval(_request('debut')), $lettre, $critere, $statut_interne);
67       
68                echo debut_cadre_enfonce('',true),
69                  '<h3 style="text-align:center;">',
70                  _T('plugins_vue_liste'), '</h3>',
71                  adherents_table($liste_id_auteurs),
72                  fin_cadre_enfonce(true);
73
74
75                echo debut_droite("",true);
76               
77                echo debut_cadre_relief(  "", true, "", $titre = _T('asso:adherent_titre_liste_actifs'));               
78               
79                echo "<table border='0' cellpadding='2' cellspacing='0' width='100%' class='arial2'>\n";
80                echo "<tr>";
81               
82                // PAGINATION ALPHABETIQUE
83                echo '<td>';
84               
85               
86                if (!$lettre) { $lettre = "%"; }
87               
88                $query = sql_select("upper( substring( nom_famille, 1, 1 ) )  AS init", 'spip_asso_membres', '',  'init', 'nom_famille, id_auteur');
89               
90                while ($data = sql_fetch($query)) {
91                        $i = $data['init'];
92                        if($i==$lettre) {
93                                echo ' <strong>'.$i.'</strong>';
94                        }
95                        else {
96                                $h = generer_url_ecrire('adherents', "statut_interne=$statut_interne&lettre=$i");
97                                echo " <a href='$h'>$i</a>\n";
98                        }
99                }
100                if ($lettre == "%") { echo ' <strong>'._T('asso:adherent_entete_tous').'</strong>'; }
101                else {
102                $h = generer_url_ecrire('adherents', "statut_interne=$statut_interne");
103                echo "\n<a href='$h'>"._T('asso:adherent_entete_tous').'</a>'; }
104               
105                // FILTRES
106                echo '</td><td style="text-align:right;">';
107               
108                //Filtre ID
109                $id = intval(_request('id'));
110                if (!$id) {
111                        $id = _T('asso:adherent_libelle_id_auteur');
112                } else {
113                        $critere = "a.id_auteur=$id";
114                }
115               
116                echo "\n<form method='post' action='".$url_adherents."'><div>";
117                echo '<input type="text" name="id"  class="fondl" style="padding:0.5px" onfocus=\'this.value=""\' size="10"  value="'. $id .'" onchange="form.submit()" />';
118                echo '</div></form>';
119                echo '</td>';
120                echo '<td style="text-align:right;">';
121               
122                //Filtre statut
123                echo "\n<form method='post' action='".$url_adherents."'><div>\n";
124                echo '<input type="hidden" name="lettre" value="'.$lettre.'" />';
125                echo "\n<select name='statut_interne' class='fondl' onchange='form.submit()'>\n";
126                echo "<option value='defaut'>"._T('asso:adherent_entete_statut_defaut')."</option>";
127                foreach ($GLOBALS['association_liste_des_statuts'] as $statut) {
128                        echo "\n<option value='".$statut."'";
129                        if ($statut_interne==$statut) {echo ' selected="selected"';}
130                        echo '> '._T('asso:adherent_entete_statut_'.$statut).'</option>';
131                }
132                echo '</select>';
133                echo '</div></form>';
134                echo '</td>';
135                echo '</tr>';
136                echo '</table>';
137               
138                //Affichage de la liste
139                echo $code_liste_membres;
140                echo fin_cadre_relief(true); 
141                echo fin_page_association();
142        }
143}
144
145/* adherent liste renvoie un tableau des id des auteurs affiches et le code html */
146function adherents_liste($debut, $lettre, $critere, $statut_interne)
147{
148
149        $max_par_page=30;
150
151        if ($lettre)
152                $critere .= " AND upper( substring( nom_famille, 1, 1 ) ) like '$lettre' ";
153        $chercher_logo = charger_fonction('chercher_logo', 'inc');
154        $query = sql_select('a.id_auteur AS id_auteur, b.email AS email, a.sexe, a.nom_famille, a.prenom, a.id_asso, b.statut AS statut, a.validite, a.statut_interne, a.categorie, b.bio AS bio','spip_asso_membres' .  " a LEFT JOIN spip_auteurs b ON a.id_auteur=b.id_auteur", $critere, '', "nom_famille ", "$debut,$max_par_page" );
155        $auteurs = '';
156        $liste_id_auteurs = array();
157        while ($data = sql_fetch($query)) {     
158                $id_auteur=$data['id_auteur'];
159                $liste_id_auteurs[] = $id_auteur;               
160                $class = $GLOBALS['association_styles_des_statuts'][$data['statut_interne']] . " border1";
161               
162                $logo = $chercher_logo($id_auteur, 'id_auteur');
163                if ($logo) {
164                        $logo = '"'. $logo[0] .  '" width="60"';
165                }else{
166                        $logo = '"'._DIR_PLUGIN_ASSOCIATION_ICONES.'ajout.gif"  width="10"' ;
167                }
168                if (empty($data["email"])) { 
169                        $mail = $data["nom_famille"]; 
170                } else {
171                        $mail = '<a href="mailto:'.$data["email"].'">'.$data["nom_famille"].'</a>';
172                }
173                if ($data['validite']==""){$valide = '&nbsp;';}else{$valide = association_datefr($data['validite']);}
174
175                $statut = $data['statut'];
176                if (!$statut OR $statut == 'nouveau') $statut = $data['bio'];
177
178                switch($statut) {
179                case "0minirezo":
180                        $icone= "admin-12.gif"; break;
181                case "1comite":
182                        $icone="redac-12.gif"; break;
183                case "5poubelle":
184                        $icone="poubelle-12.gif"; break; 
185                case "6forum":
186                        $icone="visit-12.gif"; break;   
187                default :
188                        $icone='';#"adher-12.gif"; break;
189                }
190                $icone = !$icone ? strlen($statut) :  http_img_pack($icone,'','', _T('asso:adherent_label_modifier_visiteur'));
191
192                $auteurs .= "\n<tr>"
193                . '<td style="text-align:right;" class="'.$class. '">'
194                . $id_auteur
195                . '</td>'
196                . '<td class="'.$class. '">'
197                . "<img src=$logo" . ' alt="&nbsp;"  title="'
198                . $data["nom_famille"].' '.$data["prenom"].'" />'
199                . "</td>\n";
200                if ($GLOBALS['association_metas']['civilite']=="on") $auteurs .= '<td class="'.$class. '">'.$data['sexe']."</td>\n";
201                $auteurs .= '<td class="'.$class. '">'
202                . $mail . "</td>\n";
203                if ($GLOBALS['association_metas']['prenom']=="on") $auteurs .= '<td class="'.$class. '">'.$data["prenom"]."</td>\n";
204                if ($GLOBALS['association_metas']['id_asso']=="on") $auteurs .= '<td class="'.$class. '">'.$data["id_asso"]."</td>\n";
205                $auteurs .= '<td class="'.$class. '">'
206                . affiche_categorie($data["categorie"])
207                . "</td>\n"
208                . '<td class="'.$class. '">' . $valide . "</td>\n"
209                . '<td class="'.$class. '">'
210                . '<a href="'
211                . generer_url_ecrire('auteur_infos','id_auteur='.$id_auteur)
212                .'">'
213                . $icone
214                ."</a></td>\n"
215                . '<td class="'.$class. '">'
216                . association_bouton(_T('asso:adherent_label_ajouter_cotisation'), 'cotis-12.gif', 'ajout_cotisation','id='.$id_auteur)
217                ."</td>\n"
218                . '<td class="'.$class. '">'
219                . association_bouton(_T('asso:adherent_label_modifier_membre'), 'edit-12.gif', 'edit_adherent','id='.$id_auteur)
220                ."</td>\n"
221                . '<td class="'.$class. '">'
222                . association_bouton(_T('asso:adherent_label_voir_membre'), 'voir-12.png', 'voir_adherent','id='.$id_auteur)
223                . "</td>\n"
224                . '<td class="'.$class. '"><input name="delete[]" type="checkbox" value="'.$id_auteur.'" /></td>'
225                . "</tr>\n";
226        }
227       
228        $res = "<table border='0' cellpadding='2' cellspacing='0' width='100%' class='arial2' style='border: 1px solid #aaaaaa;'>\n"
229        . "<tr style='background-color: #DBE1C5;'>\n"
230        . "<td><strong>"._T('asso:adherent_libelle_id_auteur')."</strong></td>\n"
231        . "<th>"._T('asso:adherent_libelle_photo')."</th>\n";
232        if ($GLOBALS['association_metas']['civilite']=="on") $res .= "<th>"._T('asso:adherent_libelle_sexe')."</th>\n";
233        $res .= "<th>"._T('asso:adherent_libelle_nom_famille')."</th>\n";
234        if ($GLOBALS['association_metas']['prenom']=="on") $res .= "<th>"._T('asso:adherent_libelle_prenom')."</th>\n";
235        if ($GLOBALS['association_metas']['id_asso']=="on") $res .= "<th>"._T('asso:adherent_libelle_id_asso')."</th>\n";
236        $res .= "<th>"._T('asso:adherent_libelle_categorie')."</th>\n"
237        . "<th>"._T('asso:adherent_libelle_validite')."</th>\n"
238        . '<th colspan="4" style="text-align:center;">'._T('asso:adherent_entete_action')."</th>\n"
239        . "<th>"._T('asso:adherent_entete_supprimer_abrev')."</th>\n"
240        . '</tr>'
241        . $auteurs
242        . '</table>';
243       
244        //SOUS-PAGINATION
245
246        $nombre_selection=sql_countsel('spip_asso_membres', $critere);
247
248        $pages=intval($nombre_selection/$max_par_page) + 1;
249       
250        if ($pages != 1)        {
251                for ($i=0;$i<$pages;$i++)       { 
252                $position= $i * $max_par_page;
253                if ($position == $debut)        {
254                        $res .= '<strong>'.$position."</strong>\n";
255                }
256                else {
257                        $h = generer_url_ecrire('adherents', 'lettre='.$lettre.'&debut='.$position.'&statut_interne='.$statut_interne);
258                        $res .= "<a href='$h'>$position</a>\n";
259                        }
260                }       
261        }
262       
263        $res .= "\n<div style='float:right;'>\n"
264        .  (!$auteurs ? '' : ('<input type="submit" value="'._T('asso:bouton_supprimer').'" class="fondo" />'))
265        .  '</div>';
266
267        return  array($liste_id_auteurs, generer_form_ecrire('action_adherents', $res));
268}
269
270function affiche_categorie($c)
271{
272  return is_numeric($c) 
273    ? sql_getfetsel("valeur", "spip_asso_categories", "id_categorie=$c")
274    : $c;
275}
276
277function adherents_table($liste_id_auteurs)
278{
279        $champs = $GLOBALS['association_tables_principales']['spip_asso_membres']['field'];
280        $res = '';
281        foreach ($champs as $k => $v) {
282                if (!(($GLOBALS['association_metas']['civilite']!="on" && $k == 'sexe') OR ($GLOBALS['association_metas']['prenom']!="on" && $k == 'prenom') OR ($GLOBALS['association_metas']['id_asso']!="on" && $k == 'id_asso'))) {
283                        $libelle = 'adherent_libelle_' . $k;
284                        $trad = _T('asso:' . $libelle);
285                        if ($libelle != str_replace(' ', '_', $trad)) {
286                                $res .= "<input type='checkbox' name='champs[$k]' />$trad<br />";
287                        }
288                }
289        }
290        /* on ajoute aussi le mail */
291        $res .= "<input type='checkbox' name='champs[email]' />"._T('asso:email')."<br />";
292
293        /* si le plugin coordonnees est actif, on ajoute l'adresse et le telephone */
294        if (plugin_actif('COORDONNEES')) {
295                $res .= "<input type='checkbox' name='champs[adresse]' />"._T('asso:adresse')."<br />";
296                $res .= "<input type='checkbox' name='champs[telephone]' />"._T('asso:telephone')."<br />";
297        }
298
299        /* on fait suivre la liste des auteurs a afficher */
300        $res .= "<input type='hidden' name='liste_id_auteurs' value='".serialize($liste_id_auteurs)."'/>";
301
302        return  generer_form_ecrire('pdf_adherents', $res, '', _T('asso:bouton_impression'));
303}
304?>
Note: See TracBrowser for help on using the repository browser.