function handlers()
{
return array(
- 'banana' => $this->make_hook('banana', AUTH_COOKIE),
- 'banana/profile' => $this->make_hook('profile', AUTH_MDP),
+ 'banana' => $this->make_hook('banana', AUTH_COOKIE),
+ 'banana/profile' => $this->make_hook('profile', AUTH_MDP),
+ 'banana/subscription' => $this->make_hook('subscription', AUTH_COOKIE),
+ 'banana/xface' => $this->make_hook('xface', AUTH_COOKIE),
);
}
- function handler_banana(&$page)
+ function handler_banana(&$page, $group = null, $action = null, $artid = null)
{
- $page->changeTpl('banana/index.tpl');
- $page->addCssLink('css/banana.css');
- $page->assign('xorg_title','Polytechnique.org - Forums & PA');
-
- require_once 'banana.inc.php';
-
- $res = PlatalBanana::run();
- $page->assign_by_ref('banana', $banana);
- $page->assign('banana_res', $res);
-
- return PL_OK;
+ $get = Array();
+ if (!is_null($group)) {
+ $get['group'] = $group;
+ }
+ if (Post::has('updateall')) {
+ $get['banana'] = 'updateall';
+ }
+ if (!is_null($action)) {
+ if ($action == 'new') {
+ $get['action'] = 'new';
+ } elseif ($action == 'reply' && !is_null($artid)) {
+ $get['action'] = 'new';
+ $get['artid'] = $artid;
+ } elseif ($action == 'cancel' && !is_null($artid)) {
+ $get['action'] = $action;
+ $get['artid'] = $artid;
+ } elseif ($action == 'from' && !is_null($artid)) {
+ $get['first'] = $artid;
+ } elseif ($action == 'read' && !is_null($artid)) {
+ $get['artid'] = $artid;
+ }
+ }
+ return BananaModule::run_banana($page, $get);
}
- function handler_profile(&$page)
+ function handler_profile(&$page, $action = null)
{
global $globals;
$globals->xdb->execute(
'REPLACE INTO forums.profils (uid,sig,mail,nom,flags)
VALUES ({?},{?},{?},{?},{?})',
- Session::getInt('uid'), Post::get('bananasig'), Post::get('bananamail'), Post::get('banananame'),
- (Post::getBool('bananadisplay') ? 'threads,' : '') . (Post::getBool('bananaupdate') ? 'automaj' : '')
+ Session::getInt('uid'), Post::get('bananasig'),
+ Post::get('bananamail'), Post::get('banananame'),
+ (Post::getBool('bananadisplay') ? 'threads,' : '') .
+ (Post::getBool('bananaupdate') ? 'automaj' : '')
);
}
+ }
- return PL_OK;
+ function handler_subscription(&$page)
+ {
+ return $this->run_banana($page, Array('subscribe' => 1));
+ }
+
+ function handler_xface(&$page, $face = null)
+ {
+ header('Content-Type: image/gif');
+ passthru('echo ' . escapeshellarg(base64_decode(strtr($face, '.:', '+/')))
+ . '| uncompface -X '
+ . '| convert -transparent white xbm:- gif:-');
+ }
+
+ function run_banana(&$page, $params = null)
+ {
+ $page->changeTpl('banana/index.tpl');
+ $page->addCssLink('css/banana.css');
+ $page->assign('xorg_title','Polytechnique.org - Forums & PA');
+
+ require_once('banana.inc.php');
+
+ $res = PlatalBanana::run($params);
+ $page->assign_by_ref('banana', $banana);
+ $page->assign('banana_res', $res);
}
}