Survey module : basic templates
[platal.git] / modules / lists.php
index da280b3..009950b 100644 (file)
@@ -27,7 +27,7 @@ class ListsModule extends PLModule
     {
         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),
@@ -42,7 +42,7 @@ class ListsModule extends PLModule
 
             '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'),
         );
     }
 
@@ -362,42 +362,9 @@ class ListsModule extends PLModule
             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");
         }
@@ -425,8 +392,8 @@ class ListsModule extends PLModule
                 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;
     }
@@ -479,7 +446,7 @@ class ListsModule extends PLModule
     function handler_moderate(&$page, $liste = null)
     {
         if (is_null($liste)) {
-            return PL_NOT_FOUND;
+             return PL_NOT_FOUND;
         }
 
         $domain = $this->prepare_client($page);
@@ -488,12 +455,34 @@ class ListsModule extends PLModule
 
         $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')) {
@@ -503,12 +492,12 @@ class ListsModule extends PLModule
             }
         } 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);
@@ -516,10 +505,6 @@ class ListsModule extends PLModule
                 $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;
             }