function handlers()
{
return array(
- '%grp/lists' => $this->make_hook('lists', AUTH_MDP, 'groupmember'),
- '%grp/lists/create' => $this->make_hook('create', AUTH_MDP, 'groupmember'),
+ '%grp/lists' => $this->make_hook('lists', AUTH_MDP, 'groupmember'),
+ '%grp/lists/create' => $this->make_hook('create', AUTH_MDP, 'groupmember'),
- '%grp/lists/members' => $this->make_hook('members', AUTH_COOKIE),
- '%grp/lists/csv' => $this->make_hook('csv', AUTH_COOKIE),
- '%grp/lists/annu' => $this->make_hook('annu', AUTH_COOKIE),
- '%grp/lists/archives' => $this->make_hook('archives', AUTH_COOKIE),
+ '%grp/lists/members' => $this->make_hook('members', AUTH_COOKIE, 'user'),
+ '%grp/lists/csv' => $this->make_hook('csv', AUTH_COOKIE, 'user'),
+ '%grp/lists/annu' => $this->make_hook('annu', AUTH_COOKIE, 'user'),
+ '%grp/lists/archives' => $this->make_hook('archives', AUTH_COOKIE, 'user'),
'%grp/lists/archives/rss' => $this->make_hook('rss', AUTH_PUBLIC),
- '%grp/lists/moderate' => $this->make_hook('moderate', AUTH_MDP),
- '%grp/lists/admin' => $this->make_hook('admin', AUTH_MDP),
- '%grp/lists/options' => $this->make_hook('options', AUTH_MDP),
- '%grp/lists/delete' => $this->make_hook('delete', AUTH_MDP),
+ '%grp/lists/moderate' => $this->make_hook('moderate', AUTH_MDP, 'user'),
+ '%grp/lists/admin' => $this->make_hook('admin', AUTH_MDP, 'user'),
+ '%grp/lists/options' => $this->make_hook('options', AUTH_MDP, 'user'),
+ '%grp/lists/delete' => $this->make_hook('delete', AUTH_MDP, 'user'),
- '%grp/lists/soptions' => $this->make_hook('soptions', AUTH_MDP),
- '%grp/lists/check' => $this->make_hook('check', AUTH_MDP),
- '%grp/lists/sync' => $this->make_hook('sync', AUTH_MDP),
+ '%grp/lists/soptions' => $this->make_hook('soptions', AUTH_MDP, 'user'),
+ '%grp/lists/check' => $this->make_hook('check', AUTH_MDP, 'user'),
+ '%grp/lists/sync' => $this->make_hook('sync', AUTH_MDP, 'user'),
- '%grp/alias/admin' => $this->make_hook('aadmin', AUTH_MDP, 'groupadmin'),
- '%grp/alias/create' => $this->make_hook('acreate', AUTH_MDP, 'groupadmin'),
+ '%grp/alias/admin' => $this->make_hook('aadmin', AUTH_MDP, 'groupadmin'),
+ '%grp/alias/create' => $this->make_hook('acreate', AUTH_MDP, 'groupadmin'),
/* hack: lists uses that */
'profile' => $this->make_hook('profile', AUTH_PUBLIC),
return $globals->asso('mail_domain');
}
- function handler_lists($page)
+ function handler_lists($page, $order_by = null, $order = null)
{
global $globals;
require_once 'emails.inc.php';
}
$listes = $this->client->get_lists();
+ // Default ordering is by ascending names.
+ if (is_null($order_by) || is_null($order)
+ || !in_array($order_by, array('list', 'desc', 'nbsub'))
+ || !in_array($order, array('asc', 'desc'))) {
+ $order_by = 'list';
+ $order = 'asc';
+ }
+
+ $compare = function ($a, $b) use ($order_by, $order)
+ {
+ switch ($order_by) {
+ case 'desc':
+ $a[$order_by] = replace_accent($a[$order_by]);
+ $b[$order_by] = replace_accent($b[$order_by]);
+ case 'list':
+ $res = strcasecmp($a[$order_by], $b[$order_by]);
+ break;
+ case 'nbsub':
+ $res = $a[$order_by] - $b[$order_by];
+ break;
+ default:
+ $res = 0;
+ }
+
+ if ($order == 'asc') {
+ return $res;
+ }
+ return $res * -1;
+ };
+ usort($listes, $compare);
$page->assign('listes', $listes);
+ $page->assign('order_by', $order_by);
+ $page->assign('order', $order);
$page->assign('aliases', iterate_list_alias($globals->asso('mail_domain')));
$page->assign('may_update', may_update());
+ if (S::suid()) {
+ $page->trigWarning("Attention : l'affichage des listes de diffusion ne tient pas compte de l'option « Voir le site comme… ».");
+ }
if (count($listes) > 0 && !$globals->asso('has_ml')) {
XDB::execute("UPDATE groups
require_once 'emails.inc.php';
list($local_part, $domain) = explode('@', $lfull);
+ if ($globals->asso('mail_domain') != $domain || !preg_match("/^[a-zA-Z0-9\-\.]*$/", $local_part)) {
+ $page->trigErrorRedirect('Le nom de l\'alias est erroné.', $globals->asso('diminutif') . '/lists');
+ }
+
+
if (Env::has('add_member')) {
S::assert_xsrf_token();
- $email = Env::t('add_member');
- $user = User::getSilent($email);
- if ($user) {
- add_to_list_alias($user, $local_part, $domain);
- $page->trigSuccess($email . ' ajouté.');
+ if (add_to_list_alias(Env::t('add_member'), $local_part, $domain)) {
+ $page->trigSuccess('Ajout réussit.');
} else {
- $page->trigError($email . " n'existe pas.");
+ $page->trigError('Ajout infructueux.');
}
}
if (Env::has('del_member')) {
S::assert_xsrf_token();
- $user = User::getSilent(Env::t('del_member'));
- delete_from_list_alias($user, $local_part, $domain);
- $page->trigSuccess($user->fullName() . ' supprimé.');
+ if (delete_from_list_alias(Env::t('del_member'), $local_part, $domain)) {
+ $page->trigSuccess('Suppression réussie.');
+ } else {
+ $page->trigError('Suppression infructueuse.');
+ }
}
$page->assign('members', list_alias_members($local_part, $domain));
return;
}
- add_to_list_alias(S::user(), $list, $globals->asso('mail_domain'));
+ add_to_list_alias(S::i('uid'), $list, $globals->asso('mail_domain'));
pl_redirect('alias/admin/' . $list . '@' . $globals->asso('mail_domain'));
}