<?php
/***************************************************************************
- * Copyright (C) 2003-2008 Polytechnique.org *
+ * Copyright (C) 2003-2011 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-require_once 'banana/banana.inc.php';
require_once 'banana/hooks.inc.php';
function hook_checkcancel($_headers)
{
- return ($_headers['x-org-id'] == S::v('hruid') or S::has_perms());
+ return ($_headers['x-org-id'] == S::v('hruid') or S::admin());
}
class ForumsBanana extends Banana
{
private $user;
- public function __construct(User &$user, $params = null)
+ public function __construct(User $user, $params = null)
{
$this->user = &$user;
global $globals;
Banana::$msgedit_canattach = false;
- Banana::$spool_root = $globals->banana->spool_root;
+ Banana::$spool_root = $globals->spoolroot . '/spool/banana/';
array_push(Banana::$msgparse_headers, 'x-org-id', 'x-org-mail');
- Banana::$nntp_host = 'news://web_' . $user->login()
- . ":{$globals->banana->password}@{$globals->banana->server}:{$globals->banana->port}/";
- if (S::has_perms()) {
+ Banana::$nntp_host = self::buildURL($user->login());
+ if (S::admin()) {
Banana::$msgshow_mimeparts[] = 'source';
}
Banana::$debug_nntp = ($globals->debug & DEBUG_BT);
}
}
+ public static function buildURL($login = null)
+ {
+ global $globals;
+ $scheme = ($globals->banana->port == 563) ? "nntps" : "news";
+ $user = $globals->banana->web_user;
+ if ($login != null) {
+ $user .= '_' . $login;
+ $pass = $globals->banana->password;
+ } else {
+ $pass = $globals->banana->web_pass;
+ }
+ return $scheme . '://' . $user
+ . ":{$pass}@{$globals->banana->server}:{$globals->banana->port}/";
+
+ }
+
private function fetchProfile()
{
// Get user profile from SQL
$time = null;
if (!is_null($this->params) && isset($this->params['updateall'])) {
$time = intval($this->params['updateall']);
- S::set('banana_last', $time);
+ $this->user->banana_last = $time;
}
$infos = $this->fetchProfile();
Banana::$profile['signature'] = $infos['sig'];
Banana::$profile['display'] = $infos['threads'];
Banana::$profile['autoup'] = $infos['maj'];
- Banana::$profile['lastnews'] = S::v('banana_last');
+ Banana::$profile['lastnews'] = $this->user->banana_last;
Banana::$profile['subscribe'] = $req->fetchColumn();
Banana::$tree_unread = $infos['tree_unread'];
Banana::$tree_read = $infos['tree_read'];
WHERE uid = {?}',
$time, $this->user->id());
if (XDB::affectedRows() == 0) {
- XDB::execute('INSERT INTO forum_profiles (uid, last_seen)
- VALUES ({?}, FROM_UNIXTIME({?}))',
+ XDB::execute('INSERT IGNORE INTO forum_profiles (uid, last_seen)
+ VALUES ({?}, FROM_UNIXTIME({?}))',
$this->user->id(), $time);
}
}
} else {
// Register custom Banana links and tabs
if (!Banana::$profile['autoup']) {
- Banana::$page->registerAction('<a href=\'javascript:dynpostkv("'
+ Banana::$page->registerAction('<a href=\'javascript:$.dynPost("'
. $platal->path . '", "updateall", ' . time() . ')\'>'
. 'Marquer tous les messages comme lus'
. '</a>', array('forums', 'thread', 'message'));
} else {
$last_seen = '0000-00-00';
}
- XDB::execute('REPLACE INTO forum_profiles (uid, sig, mail, name, flags, tree_unread, tree_read, last_seen)
- VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
+ XDB::execute('INSERT INTO forum_profiles (uid, sig, mail, name, flags, tree_unread, tree_read, last_seen)
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})
+ ON DUPLICATE KEY UPDATE sig = VALUES(sig), mail = VALUES(mail), name = VALUES(name), flags = VALUES(flags),
+ tree_unread = VALUES(tree_unread), tree_read = VALUES(tree_read), last_seen = VALUES(last_seen)',
$this->user->id(), Post::v('bananasig'),
Post::v('bananamail'), Post::v('banananame'),
$flags, $unread, $read, $last_seen);
}
$infos = $this->fetchProfile();
- $page->assign('nom' , $infos['name']);
- $page->assign('mail', $infos['mail']);
- $page->assign('sig', $infos['sig']);
- $page->assign('disp', $infos['threads']);
- $page->assign('maj', $infos['maj']);
- $page->assign('xface', $infos['xface']);
+ $page->assign('nom' , $infos['name']);
+ $page->assign('mail', $infos['mail']);
+ $page->assign('sig', $infos['sig']);
+ $page->assign('disp', $infos['threads']);
+ $page->assign('maj', $infos['maj']);
+ $page->assign('xface', $infos['xface']);
$page->assign('unread', $infos['tree_unread']);
- $page->assign('read', $infos['tree_read']);
+ $page->assign('read', $infos['tree_read']);
return null;
}
}