handler = 'BananaMLHandler'; $this->base = $platal->pl_self(1); } } class BananaMLHandler extends BananaHandler { public function template() { return 'lists/archives.tpl'; } } class MLBanana extends Banana { static public $listname; static public $domain; private $user; function __construct(User $user, $params = null) { global $globals; $this->user = &$user; Banana::$spool_root = $globals->spoolroot . '/spool/banana/'; 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->spoolroot . '/banana/mbox-helper/mbox-helper'; Banana::$feed_updateOnDemand = true; if (S::admin()) { 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', 'PlatalBananaMLPage'); } public function run() { global $platal, $globals; $nom = S::v('prenom') . ' ' . S::v('nom'); $mail = $this->user->bestEmail(); $sig = $nom . ' (' . S::v('promo') . ')'; 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'] = "$nom <$mail>"; Banana::$profile['headers']['Organization'] = make_Organization(); Banana::$profile['signature'] = $sig; // Page design Banana::$page->killPage('forums'); Banana::$page->killPage('subscribe'); // Run Banana return parent::run(); } } require_once dirname(__FILE__) . '/../../banana/banana/mbox.inc.php'; class BananaMLArchive extends BananaMBox { public function name() { return 'MLArchives'; } public function getBoxList($mode = Banana::BOXES_ALL, $since = 0, $withstats = false) { global $globals; $spool = $globals->lists->spool . '/'; $list = glob($spool . '*.mbox/*.mbox'); if ($list === false) { return array(); } $groups = array(); foreach ($list as $path) { $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; $groups[$group] = array('desc' => null, 'msgnum' => null, 'unread' => null); } return $groups; } public function filename() { if (MLBanana::$listname) { $listname = MLBanana::$listname; $domain = MLBanana::$domain; } else { list($listname, $domain) = explode('@', Banana::$group); } return $domain . '_' . $listname; } protected function getFileName() { global $globals; $base = $globals->lists->spool; if (MLBanana::$listname) { $listname = MLBanana::$listname; $domain = MLBanana::$domain; } else { list($listname, $domain) = explode('@', Banana::$group); } $file = $domain . $globals->lists->vhost_sep . $listname . '.mbox'; return "$base/$file/$file"; } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8: ?>