annuaire xnet, tri par promo + suppression d'un exterieur rentre deux fois dans la...
[platal.git] / htdocs.net / groupe / annuaire.php
CommitLineData
0337d704 1<?php
2require 'xnet.inc.php';
3
4define('NB_PER_PAGE', 25);
5
6if ($globals->asso('pub') == 'public')
7 new_group_page('xnet/groupe/annuaire.tpl');
8else
9 new_groupadmin_page('xnet/groupe/annuaire.tpl');
10
11$page->assign('admin', may_update());
12
31c3c378 13switch (Env::get('order')) {
14 case 'promo' : $group = 'promo'; $tri = 'promo_o DESC, nom, prenom'; break;
15 case 'promo_inv' : $group = 'promo'; $tri = 'promo_o, nom, prenom'; break;
16 case 'alpha_inv' : $group = 'initiale'; $tri = 'nom DESC, prenom DESC, promo'; break;
17 default : $group = 'initiale'; $tri = 'nom, prenom, promo';
18}
19if ($group == 'initiale')
20 $res = $globals->xdb->iterRow(
21 'SELECT UPPER(SUBSTRING(IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom), 1, 1)) as letter, COUNT(*)
22 FROM groupex.membres AS m
23 LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
24 WHERE asso_id = {?}
25 GROUP BY letter
26 ORDER BY letter', $globals->asso('id'));
27else
28 $res = $globals->xdb->iterRow(
29 'SELECT IF(m.origine="X",u.promo,"extérieur") as promo, COUNT(*), IF(m.origine="X",u.promo,"") as promo_o
30 FROM groupex.membres AS m
31 LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
32 WHERE asso_id = {?}
33 GROUP BY promo
34 ORDER BY promo_o DESC', $globals->asso('id'));
35
0337d704 36$alphabet = array();
37$nb_tot = 0;
38while (list($char, $nb) = $res->next()) {
39 $alphabet[] = $char;
40 $nb_tot += $nb;
31c3c378 41 if (Env::has($group) && $char == strtoupper(Env::get($group))) {
0337d704 42 $tot = $nb;
43 }
44}
31c3c378 45$page->assign('group', $group);
46$page->assign('request_group', Env::get($group));
0337d704 47$page->assign('alphabet', $alphabet);
48$page->assign('nb_tot', $nb_tot);
49
50$ofs = Env::getInt('offset');
31c3c378 51$tot = Env::get($group) ? $tot : $nb_tot;
0337d704 52$nbp = intval(($tot-1)/NB_PER_PAGE);
53$links = array();
54if ($ofs) {
55 $links['précédent'] = $ofs-1;
56}
57for ($i = 0; $i <= $nbp; $i++) {
58 $links[(string)($i+1)] = $i;
59}
60if ($ofs < $nbp) {
61 $links['suivant'] = $ofs+1;
62}
63if (count($links)>1) {
64 $page->assign('links', $links);
65}
66
31c3c378 67$ini = '';
68if (Env::has('initiale'))
69 $ini = 'AND IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"';
70elseif (Env::has('promo'))
71 $ini = 'AND IF(m.origine="X",u.promo,"extérieur") = "'.addslashes(Env::get('promo')).'"';
0337d704 72$ann = $globals->xdb->iterator(
73 "SELECT IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom,
74 IF(m.origine='X',u.prenom,m.prenom) AS prenom,
75 IF(m.origine='X',u.promo,'extérieur') AS promo,
31c3c378 76 IF(m.origine='X',u.promo,'') AS promo_o,
0337d704 77 IF(m.origine='X',a.alias,m.email) AS email,
78 IF(m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme,
79 m.perms='admin' AS admin,
31c3c378 80 m.origine='X' AS x,
81 m.uid
0337d704 82 FROM groupex.membres AS m
83 LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
84 LEFT JOIN aliases AS a ON ( a.id = m.uid AND a.type='a_vie' )
85 WHERE m.asso_id = {?} $ini
86 ORDER BY $tri
87 LIMIT {?},{?}", $globals->asso('id'), $ofs*NB_PER_PAGE, NB_PER_PAGE);
88
89
90$page->assign('ann', $ann);
91
92$page->run();
93
94?>