X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Flists.php;h=eec6fa24f52ba86bf8043ffe567caebd08dd642a;hb=1773c63489f9bf9b3ed3a96b97f3d4f176400fa4;hp=ba625948b65382b5afb31e636103d760faffcce6;hpb=f036c8966e64d9f2bb3923bbeb278353bc7e1083;p=platal.git diff --git a/modules/lists.php b/modules/lists.php index ba62594..eec6fa2 100644 --- a/modules/lists.php +++ b/modules/lists.php @@ -26,24 +26,25 @@ class ListsModule extends PLModule function handlers() { return array( - 'lists' => $this->make_hook('lists', AUTH_MDP), - 'lists/ajax' => $this->make_hook('ajax', AUTH_MDP, 'user', NO_AUTH), - 'lists/create' => $this->make_hook('create', AUTH_MDP, 'lists'), - - 'lists/members' => $this->make_hook('members', AUTH_COOKIE), - 'lists/csv' => $this->make_hook('csv', AUTH_COOKIE), - 'lists/annu' => $this->make_hook('annu', AUTH_COOKIE), - 'lists/archives' => $this->make_hook('archives', AUTH_COOKIE), - 'lists/archives/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS), - - 'lists/moderate' => $this->make_hook('moderate', AUTH_MDP), - 'lists/admin' => $this->make_hook('admin', AUTH_MDP), - 'lists/options' => $this->make_hook('options', AUTH_MDP), - 'lists/delete' => $this->make_hook('delete', AUTH_MDP), - - 'lists/soptions' => $this->make_hook('soptions', AUTH_MDP), - 'lists/check' => $this->make_hook('check', AUTH_MDP), - 'admin/lists' => $this->make_hook('admin_all', AUTH_MDP, 'admin'), + 'lists' => $this->make_hook('lists', AUTH_MDP), + 'lists/ajax' => $this->make_hook('ajax', AUTH_MDP, 'user', NO_AUTH), + 'lists/create' => $this->make_hook('create', AUTH_MDP, 'lists'), + + 'lists/members' => $this->make_hook('members', AUTH_COOKIE), + 'lists/csv' => $this->make_hook('csv', AUTH_COOKIE), + 'lists/annu' => $this->make_hook('annu', AUTH_COOKIE), + 'lists/archives' => $this->make_hook('archives', AUTH_COOKIE), + 'lists/archives/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS), + + 'lists/moderate' => $this->make_hook('moderate', AUTH_MDP), + 'lists/admin' => $this->make_hook('admin', AUTH_MDP), + 'lists/options' => $this->make_hook('options', AUTH_MDP), + 'lists/delete' => $this->make_hook('delete', AUTH_MDP), + + 'lists/soptions' => $this->make_hook('soptions', AUTH_MDP), + 'lists/check' => $this->make_hook('check', AUTH_MDP), + 'admin/lists' => $this->make_hook('admin_all', AUTH_MDP, 'admin'), + 'admin/aliases' => $this->make_hook('aaliases', AUTH_MDP, 'admin') ); } @@ -886,6 +887,62 @@ class ListsModule extends PLModule $listes = $this->client->get_all_lists(); $page->assign_by_ref('listes', $listes); } + + function handler_aaliases($page, $alias = null) + { + global $globals; + require_once 'emails.inc.php'; + $page->setTitle('Administration - Aliases'); + + if (Post::has('new_alias')) { + pl_redirect('admin/aliases/' . Post::t('new_alias') . '@' . $globals->mail->domain); + } + + // If no alias, list them all. + if (is_null($alias)) { + $page->changeTpl('lists/admin_aliases.tpl'); + $page->assign('aliases', array_merge(iterate_list_alias($globals->mail->domain), iterate_list_alias($globals->mail->domain2))); + return; + } + + list($local_part, $domain) = explode('@', $alias); + if (!($globals->mail->domain == $domain || $globals->mail->domain2 == $domain) + || !preg_match("/^[a-zA-Z0-9\-\.]*$/", $local_part)) { + $page->trigErrorRedirect('Le nom de l\'alias est erroné.', $globals->asso('diminutif') . 'admin/aliases'); + } + + // Now we can perform the action. + if (Post::has('del_alias')) { + S::assert_xsrf_token(); + + delete_list_alias($local_part, $domain); + $page->trigSuccessRedirect($alias . ' supprimé.', 'admin/aliases'); + } + + if (Post::has('add_member')) { + S::assert_xsrf_token(); + + if (add_to_list_alias(Post::t('add_member'), $local_part, $domain)) { + $page->trigSuccess('Ajout réussit.'); + } else { + $page->trigError('Ajout infructueux.'); + } + } + + if (Get::has('del_member')) { + S::assert_xsrf_token(); + + if (delete_from_list_alias(Get::t('del_member'), $local_part, $domain)) { + $page->trigSuccess('Suppression réussie.'); + } else { + $page->trigError('Suppression infructueuse.'); + } + } + + $page->changeTpl('lists/admin_edit_alias.tpl'); + $page->assign('members', list_alias_members($local_part, $domain)); + $page->assign('alias', $alias); + } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: