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
return;
}
- add_to_list_alias(S::uid(), $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'));
}