$page->assign('admin', may_update());
-$tri = (Env::get('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo');
-$res = $globals->xdb->iterRow(
- 'SELECT UPPER(SUBSTRING(IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom), 1, 1)) as letter, COUNT(*)
- FROM groupex.membres AS m
- LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
- WHERE asso_id = {?}
- GROUP BY letter
- ORDER BY letter', $globals->asso('id'));
+switch (Env::get('order')) {
+ case 'promo' : $group = 'promo'; $tri = 'promo_o DESC, nom, prenom'; break;
+ case 'promo_inv' : $group = 'promo'; $tri = 'promo_o, nom, prenom'; break;
+ case 'alpha_inv' : $group = 'initiale'; $tri = 'nom DESC, prenom DESC, promo'; break;
+ default : $group = 'initiale'; $tri = 'nom, prenom, promo';
+}
+if ($group == 'initiale')
+ $res = $globals->xdb->iterRow(
+ 'SELECT UPPER(SUBSTRING(IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom), 1, 1)) as letter, COUNT(*)
+ FROM groupex.membres AS m
+ LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
+ WHERE asso_id = {?}
+ GROUP BY letter
+ ORDER BY letter', $globals->asso('id'));
+else
+ $res = $globals->xdb->iterRow(
+ 'SELECT IF(m.origine="X",u.promo,"extérieur") as promo, COUNT(*), IF(m.origine="X",u.promo,"") as promo_o
+ FROM groupex.membres AS m
+ LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
+ WHERE asso_id = {?}
+ GROUP BY promo
+ ORDER BY promo_o DESC', $globals->asso('id'));
+
$alphabet = array();
$nb_tot = 0;
while (list($char, $nb) = $res->next()) {
$alphabet[] = $char;
$nb_tot += $nb;
- if (Env::has('initiale') && $char == strtoupper(Env::get('initiale'))) {
+ if (Env::has($group) && $char == strtoupper(Env::get($group))) {
$tot = $nb;
}
}
+$page->assign('group', $group);
+$page->assign('request_group', Env::get($group));
$page->assign('alphabet', $alphabet);
$page->assign('nb_tot', $nb_tot);
$ofs = Env::getInt('offset');
-$tot = Env::get('initiale') ? $tot : $nb_tot;
+$tot = Env::get($group) ? $tot : $nb_tot;
$nbp = intval(($tot-1)/NB_PER_PAGE);
$links = array();
if ($ofs) {
$page->assign('links', $links);
}
-$ini = Env::has('initiale') ? 'AND IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"' : '';
+$ini = '';
+if (Env::has('initiale'))
+ $ini = 'AND IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"';
+elseif (Env::has('promo'))
+ $ini = 'AND IF(m.origine="X",u.promo,"extérieur") = "'.addslashes(Env::get('promo')).'"';
$ann = $globals->xdb->iterator(
"SELECT IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom,
IF(m.origine='X',u.prenom,m.prenom) AS prenom,
IF(m.origine='X',u.promo,'extérieur') AS promo,
+ IF(m.origine='X',u.promo,'') AS promo_o,
IF(m.origine='X',a.alias,m.email) AS email,
IF(m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme,
m.perms='admin' AS admin,
- m.origine='X' AS x
+ m.origine='X' AS x,
+ m.uid
FROM groupex.membres AS m
LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid )
LEFT JOIN aliases AS a ON ( a.id = m.uid AND a.type='a_vie' )
function get_infos($email)
{
global $globals;
+ // look for uid instead of email if numeric
+ $field = is_numeric($email)?'uid':'email';
- $email = strtolower($email);
- if (strpos($email, '@') === false) {
- $email .= '@m4x.org';
+ if ($field == 'email') {
+ $email = strtolower($email);
+ if (strpos($email, '@') === false) {
+ $email .= '@m4x.org';
+ }
+ list($mbox,$dom) = explode('@', $email);
}
- list($mbox,$dom) = explode('@', $email);
$res = $globals->xdb->query(
"SELECT uid, nom, prenom, email, email AS email2, perms='admin', origine
FROM groupex.membres
- WHERE email = {?} AND asso_id = {?}", $email, $globals->asso('id'));
+ WHERE $field = {?} AND asso_id = {?}", $email, $globals->asso('id'));
+
if ($res->numRows()) {
return $res->fetchOneAssoc();
} elseif ($dom == 'polytechnique.org' || $dom == 'm4x.org') {
$page->assign('user', $user);
if (Post::has('confirm')) {
- if ($domain = $globals->asso('mail_domain')) {
+
+ $globals->xdb->execute(
+ "DELETE FROM groupex.membres WHERE uid={?} AND asso_id={?}",
+ $user['uid'], $globals->asso('id'));
+
+ // don't unsubscribe email from list if other user use same email
+ $user_same_email = get_infos($user['email']);
+
+ if (($domain = $globals->asso('mail_domain')) && empty($user_same_email)) {
require 'lists.inc.php';
$client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $domain);
}
}
- $globals->xdb->execute(
- "DELETE FROM groupex.membres WHERE uid={?} AND asso_id={?}",
- $user['uid'], $globals->asso('id'));
$page->trig("{$user['prenom']} {$user['nom']} a été retiré du groupe !");
}
}
{/if}
<p class="center">
-[<a href="{$smarty.server.PHP_SELF}" {if !$smarty.request.initiale}class="erreur"{/if}>tout</a>]
+[<a href="{$smarty.server.PHP_SELF}" {if !$request_group}class="erreur"{/if}>tout</a>]
{foreach from=$alphabet item=c}
-[<a href="?initiale={$c}"{if $smarty.request.initiale eq $c} class="erreur"{/if}>{$c}</a>]
+[<a href="?{$group}={$c}&order={$smarty.request.order}"{if $request_group eq $c} class="erreur"{/if}>{$c}</a>]
{/foreach}
</p>
<table summary="membres du groupe" class="{if $admin}large{else}tiny{/if}">
<tr>
- <th>Prénom NOM</th>
- <th>Promo</th>
+ <th><a href="?order=alpha{if $smarty.request.order neq "alpha_inv"}_inv{/if}{if $request_group and $group eq 'initiale'}&initiale={$request_group}{/if}">Prénom NOM</a></th>
+ <th><a href="?order=promo{if $smarty.request.order eq "promo"}_inv{/if}{if $request_group and $group eq 'promo'}&promo={$request_group}{/if}">Promo</a></th>
<th>Infos</th>
{if $admin}
<th>Éditer</th>
</tr>
{iterate from=$ann item=m}
<tr {if $m.admin}style="background:#d0c198;"{/if}>
- <td>{if $m.femme}•{/if}{$m.prenom} {$m.nom}</td>
+ <td>{if $m.femme}•{/if}{$m.prenom} {$m.nom|strtoupper}</td>
<td>{$m.promo}</td>
<td>
{if $m.x}
{/if}
</td>
{if $admin}
- <td><a href="membres-edit.php?edit={$m.email}"><img src="{rel}/images/profil.png" alt="Edition du profil" /></a></td>
- <td><a href="membres-edit.php?del={$m.email}"><img src="{rel}/images/del.png" alt="Suppression de {$m.prenom} {$m.nom}" /></a></td>
+ <td><a href="membres-edit.php?edit={if $m.x}{$m.email}{else}{$m.uid}{/if}"><img src="{rel}/images/profil.png" alt="Edition du profil" /></a></td>
+ <td><a href="membres-edit.php?del={if $m.x}{$m.email}{else}{$m.uid}{/if}"><img src="{rel}/images/del.png" alt="Suppression de {$m.prenom} {$m.nom}" /></a></td>
{/if}
</tr>
{/iterate}