+ function handler_aadmin($page, $lfull = null)
+ {
+ global $globals;
+
+ if (!$globals->asso('mail_domain') || is_null($lfull)) {
+ return PL_NOT_FOUND;
+ }
+ $page->changeTpl('xnetlists/alias-admin.tpl');
+
+ 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();
+
+ if (add_to_list_alias(Env::t('add_member'), $local_part, $domain)) {
+ $page->trigSuccess('Ajout réussi.');
+ } else {
+ $page->trigError('Ajout infructueux.');
+ }
+ }
+
+ if (Env::has('del_member')) {
+ S::assert_xsrf_token();
+
+ 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));
+ }
+
+ function handler_acreate($page)
+ {
+ global $globals;
+
+ if (!$globals->asso('mail_domain')) {
+ return PL_NOT_FOUND;
+ }
+ $page->changeTpl('xnetlists/alias-create.tpl');
+
+ if (!Post::has('submit')) {
+ return;
+ } else {
+ S::assert_xsrf_token();
+ }
+
+ if (!Post::has('liste')) {
+ $page->trigError('Le champs « adresse souhaitée » est vide.');
+ return;
+ }
+ $list = Post::v('liste');
+ if (!preg_match("/^[a-zA-Z0-9\-\.]*$/", $list)) {
+ $page->trigError('Le nom de l\'alias ne doit contenir que des lettres,'
+ .' chiffres, tirets et points.');
+ return;
+ }
+
+ require_once 'emails.inc.php';
+ if (list_exist($list, $globals->asso('mail_domain'))) {
+ $page->trigError('Cet alias est déjà pris.');
+ return;
+ }
+
+ add_to_list_alias(S::i('uid'), $list, $globals->asso('mail_domain'));
+ pl_redirect('alias/admin/' . $list . '@' . $globals->asso('mail_domain'));
+ }
+
+ function handler_profile($page, $user = null)