{
return array(
'lists' => $this->make_hook('lists', AUTH_MDP),
- 'lists/ajax' => $this->make_hook('ajax', AUTH_MDP, '', NO_AUTH),
+ 'lists/ajax' => $this->make_hook('ajax', AUTH_MDP, 'user', NO_AUTH),
'lists/create' => $this->make_hook('create', AUTH_MDP),
'lists/members' => $this->make_hook('members', AUTH_COOKIE),
'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/lists' => $this->make_hook('admin_all', AUTH_MDP, 'admin'),
);
}
if (Post::has('updateall')) {
$get['updateall'] = Post::v('updateall');
}
- if (!is_null($action)) {
- if ($action == 'new') {
- $get['action'] = 'new';
- } elseif (!is_null($artid)) {
- $get['artid'] = $artid;
- if ($action == 'reply') {
- $get['action'] = 'new';
- } elseif ($action == 'cancel') {
- $get['action'] = $action;
- } elseif ($action == 'from') {
- $get['first'] = $artid;
- unset($get['artid']);
- } elseif ($action == 'read') {
- $get['part'] = @$_GET['part'];
- } elseif ($action == 'source') {
- $get['part'] = 'source';
- } elseif ($action == 'xface') {
- $get['part'] = 'xface';
- } elseif ($action) {
- $get['part'] = str_replace('.', '/', $action);
- }
- if (Get::v('action') == 'showext') {
- $get['action'] = 'showext';
- }
- }
- }
- require_once('banana/ml.inc.php');
- $banana = new MLBanana($get);
- $page->assign('banana', $banana->run());
- $page->addCssInline($banana->css());
- $page->addCssLink('banana.css');
- $rss = $banana->feed();
- if ($rss) {
- $page->setRssLink('Banana :: ' . $list, $rss);
- }
- new PlBacktrace('MBox', $banana->backtrace(), 'response', 'time');
+ require_once 'banana/ml.inc.php';
+ get_banana_params($get, null, $action, $artid);
+ run_banana($page, 'MLBanana', $get);
} else {
$page->kill("La liste n'existe pas ou tu n'as pas le droit de la consulter");
}
exit;
}
require_once('banana/ml.inc.php');
- $banana = new MLBanana(Array('listname' => $liste, 'domain' => $domain, 'action' => 'rss2'));
- echo $banana->run();
+ $banana = new MLBanana(S::v('forlife'), Array('listname' => $liste, 'domain' => $domain, 'action' => 'rss2'));
+ $banana->run();
}
exit;
}
function handler_moderate(&$page, $liste = null)
{
if (is_null($liste)) {
- return PL_NOT_FOUND;
+ return PL_NOT_FOUND;
}
$domain = $this->prepare_client($page);
$page->register_modifier('hdc', 'list_header_decode');
- if (Env::has('sadd')) { /* 4 = SUBSCRIBE */
- $this->client->handle_request($liste,Env::v('sadd'),4,'');
- pl_redirect('lists/moderate/'.$liste);
- }
- if (Post::has('sdel')) { /* 2 = REJECT */
- $this->client->handle_request($liste,Post::v('sdel'),2,Post::v('reason'));
+ if (Env::has('sadd') || Env::has('sdel')) {
+ if (Env::has('sadd')) { /* 4 = SUBSCRIBE */
+ $sub = $this->client->get_pending_sub($liste, Env::v('sadd'));
+ $this->client->handle_request($liste,Env::v('sadd'),4,'');
+ $info = "validée";
+ }
+ if (Post::has('sdel')) { /* 2 = REJECT */
+ $sub = $this->client->get_pending_sub($liste, Env::v('sdel'));
+ $this->client->handle_request($liste, Post::v('sdel'), 2, Post::v('reason'));
+ $info = "refusée";
+ }
+ if ($sub) {
+ $mailer = new PlMailer();
+ $mailer->setFrom("$liste-bounces@{$domain}");
+ $mailer->addTo("$liste-owner@{$domain}");
+ $mailer->addHeader('Reply-To', "$liste-owner@{$domain}");
+ $mailer->setSubject("L'inscription de {$sub['name']} a été $info");
+ $text = "L'inscription de {$sub['name']} à la liste $liste@{$domain} a été $info par " . S::v('prenom') . ' '
+ . S::v('nom') . '(' . S::v('promo') . ")\n";
+ if (trim(Post::v('reason'))) {
+ $text .= "\nLa raison invoquée est :\n" . Post::v('reason');
+ }
+ $mailer->setTxtBody(wordwrap($text, 72));
+ $mailer->send();
+ }
+ if (Env::has('sadd')) {
+ pl_redirect('lists/moderate/'.$liste);
+ }
}
if (Post::has('moderate_mails') && Post::has('select_mails')) {
}
} elseif (Env::has('mid')) {
if (Get::has('mid') && !Env::has('mok') && !Env::has('mdel')) {
+ $page->changeTpl('lists/moderate_mail.tpl');
require_once('banana/moderate.inc.php');
$params = array('listname' => $liste, 'domain' => $domain,
'artid' => Get::i('mid'), 'part' => Get::v('part'), 'action' => Get::v('action'));
- $banana = new ModerationBanana($params, $this->client);
- $res = $banana->run();
- $page->addCssInline($banana->css());
+ $params['client'] = $this->client;
+ run_banana($page, 'ModerationBanana', $params);
$msg = file_get_contents('/etc/mailman/fr/refuse.txt');
$msg = str_replace("%(adminaddr)s", "$liste-owner@{$domain}", $msg);
$msg = str_replace("%(reason)s", "<< TON EXPLICATION >>", $msg);
$msg = str_replace("%(listname)s", $liste, $msg);
$page->assign('msg', $msg);
-
- $page->addCssLink('banana.css');
- $this->changeTpl('lists/moderate_mail.tpl');
- $page->assign_by_ref('mail', $res);
return;
}