Cleanup forum_ tables:
[platal.git] / include / banana / ml.inc.php
index 884a788..09632eb 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2008 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
 require_once 'banana/banana.inc.php';
 require_once 'banana/hooks.inc.php';
 
-function hook_makeLink($params)
+class PlatalBananaMLPage extends PlatalBananaPage
 {
-    global $globals, $platal;
-    $base = $globals->baseurl . '/' . $platal->ns . 'lists/archives/' . MLBanana::$listname;
-    $base = $base . hook_platalMessageLink($params);
-    if (@$params['action'] == 'showext') {
-        $base .= '?action=showext';
+    public function __construct()
+    {
+        parent::__construct();
+        global $platal;
+        $this->handler = 'BananaMLHandler';
+        $this->base    = $platal->pl_self(1);
+    }
+}
+
+class BananaMLHandler extends BananaHandler
+{
+    public function template()
+    {
+        return 'lists/archives.tpl';
     }
-    return $base;
 }
 
 class MLBanana extends Banana
 {
     static public $listname;
     static public $domain;
+    private $user;
 
-    function __construct($params = null)
+    function __construct(User &$user, $params = null)
     {
-               global $globals;
+        global $globals;
+        $this->user = &$user;
+
         Banana::$spool_root = $globals->banana->spool_root;
         Banana::$spool_boxlist = false;
         Banana::$msgedit_canattach = true;
+        Banana::$debug_mbox = ($globals->debug & DEBUG_BT);
+        Banana::$debug_smarty = ($globals->debug & DEBUG_SMARTY);
+        Banana::$mbox_helper = $globals->banana->mbox_helper;
+        Banana::$feed_updateOnDemand = true;
         if (S::has_perms()) {
             Banana::$msgshow_mimeparts[] = 'source';
-        }    
+        }
         array_push(Banana::$msgparse_headers, 'x-org-id', 'x-org-mail');
+        Banana::$feed_active = S::hasAuthToken();
 
         MLBanana::$listname = $params['listname'];
         MLBanana::$domain   = $params['domain'];
         $params['group'] = $params['listname'] . '@' . $params['domain'];
-        parent::__construct($params, 'MLArchive');
+        parent::__construct($params, 'MLArchive', 'PlatalBananaMLPage');
     }
 
     public function run()
@@ -60,18 +76,29 @@ class MLBanana extends Banana
         global $platal, $globals;
 
         $nom  = S::v('prenom') . ' ' . S::v('nom');
-        $mail = S::v('bestalias') . '@' . $globals->mail->domain;
+        $mail = $this->user->bestEmail();
         $sig  = $nom . ' (' . S::v('promo') . ')';
-        Banana::$msgedit_headers['X-Org-Mail'] = S::v('forlife') . '@' . $globals->mail->domain;
+        Banana::$msgedit_headers['X-Org-Mail'] = $this->user->forlifeEmail();
+
+        // Tree color
+        $req = XDB::query('SELECT  tree_unread, tree_read
+                             FROM  forum_profiles
+                            WHERE  uid= {?}', $this->user->id());
+        if (!(list($unread, $read) = $req->fetchOneRow())) {
+            $unread = 'o';
+            $read = 'dg';
+        }
+        Banana::$tree_unread = $unread;
+        Banana::$tree_read = $read;
 
         // Build user profile
-        Banana::$profile['headers']['From']         = utf8_encode("$nom <$mail>");
-        Banana::$profile['headers']['Organization'] = 'Utilisateur de Polytechnique.org';
-        Banana::$profile['signature']               = utf8_encode($sig);
-        
+        Banana::$profile['headers']['From']         = "$nom <$mail>";
+        Banana::$profile['headers']['Organization'] = make_Organization();
+        Banana::$profile['signature']               = $sig;
+
         // Page design
         Banana::$page->killPage('forums');
-        Banana::$page->killPage('subscribe'); 
+        Banana::$page->killPage('subscribe');
 
         // Run Banana
         return parent::run();
@@ -91,13 +118,13 @@ class BananaMLArchive extends BananaMBox
     {
         global $globals;
         $spool = $globals->lists->spool . '/';
-        $list = glob($spool . '*.mbox', GLOB_ONLYDIR);
+        $list = glob($spool . '*.mbox/*.mbox');
         if ($list === false) {
             return array();
         }
         $groups = array();
         foreach ($list as $path) {
-            $path = substr($path, strlen($spool));
+            $path = substr($path, strpos($path, 'mbox/') + 5);
             $path = substr($path, 0, -5);
             list($domain, $listname) = explode($globals->lists->vhost_sep, $path, 2);
             $group = $listname . '@' . $domain;