X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fbanana%2Fhooks.inc.php;h=6c4f19d82fca3e6ac916b55cc068dea032bd50ae;hb=be638e733bce413df4324d985297d9a4d94dcbca;hp=f996497c17a5966df56195f8a8cf41bbc7832b84;hpb=bd4d80f0846bcc0dd943bd561c77680f18bae831;p=platal.git diff --git a/include/banana/hooks.inc.php b/include/banana/hooks.inc.php index f996497..6c4f19d 100644 --- a/include/banana/hooks.inc.php +++ b/include/banana/hooks.inc.php @@ -1,6 +1,6 @@ name() == 'NNTP' && $xnet) { if ($feed) { - return 'http://www.polytechnique.org/banana' . hook_platalRSS(@$params['group']); + return $globals->baseurl . '/banana' . hook_platalRSS(@$params['group']); } $base = $globals->baseurl . '/' . $platal->ns . 'forum'; } else if (Banana::$protocole->name() == 'MLArchives') { @@ -177,35 +177,75 @@ function hook_hasXFace($headers) function hook_getXFace($headers) { - $login = @$headers['x-org-id']; - if (!$login) { - @list($login, ) = explode('@', $headers['x-org-mail']); + $login = null; + foreach (array('x-org-id', 'x-org-mail') as $key) { + if (isset($headers[$key])) { + $login = $headers[$key]; + break; + } } - if (!$login) { + if (is_null($login)) { + // No login, fallback to default handler return false; } if (isset($headers['x-face'])) { - $res = XDB::query("SELECT p.uid - FROM forums.profils AS p - INNER JOIN aliases AS a ON (p.uid = a.id) - WHERE FIND_IN_SET('xface', p.flags) AND a.alias = {?}", - $login); + $user = User::getSilent($login); + $res = XDB::query('SELECT pf.uid + FROM forum_profiles AS pf + WHERE pf.uid = {?} AND FIND_IN_SET(\'xface\', pf.flags)', + $user->id()); if ($res->numRows()) { + // User wants his xface to be showed, fallback to default handler return false; } } - pl_redirect('photo/' . $login); + global $globals; + http_redirect($global->baseurl . '/photo/' . $login); } function hook_makeJs($src) { - global $page; - $page->addJsLink("$src.js"); + Platal::page()->addJsLink("$src.js"); return ' '; } +function make_Organization() +{ + global $globals; + $perms = S::v('perms'); + $group = $globals->asso('nom'); + if (S::has_perms()) { + return "Administrateur de Polytechnique.org"; + } else if ($group && $perms->hasFlag('groupadmin')) { + return "Animateur de $group"; + } else if ($group && $perms->hasFlag('groupmember')) { + return "Membre de $group"; + } + return "Utilisateur de Polytechnique.org"; +} + function get_banana_params(array &$get, $group = null, $action = null, $artid = null) { + if ($group == 'forums') { + $group = null; + } else if ($group == 'thread') { + $group = S::v('banana_group'); + } else if ($group == 'message') { + $action = 'read'; + $group = S::v('banana_group'); + $artid = S::i('banana_artid'); + } else if ($action == 'message') { + $action = 'read'; + $artid = S::i('banana_artid'); + } else if ($group == 'subscribe' || $group == 'subscription') { + $group = null; + $action = null; + $get['action'] = 'subscribe'; + } else if ($group == 'profile') { + $group = null; + $action = null; + $get['action'] = 'profile'; + } if (!is_null($group)) { $get['group'] = $group; } @@ -237,9 +277,58 @@ function get_banana_params(array &$get, $group = null, $action = null, $artid = } } +class PlatalBananaPage extends BananaPage +{ + protected $handler; + protected $base; + + public function __construct() + { + global $platal; + Banana::$withtabs = false; + $this->handler = 'BananaHandler'; + $this->base = $platal->pl_self(0); + parent::__construct(); + } + + protected function prepare() + { + $tpl = parent::prepare(); + global $wiz; + $wiz = new PlWizard('Banana', PlPage::getCoreTpl('plwizard.tpl'), true, false); + foreach ($this->pages as $name=>&$mpage) { + $wiz->addPage($this->handler, $mpage['text'], $name); + } + $wiz->apply(Platal::page(), $this->base, $this->page); + return $tpl; + } +} + +class BananaHandler +{ + public function __construct(PlWizard &$wiz) + { + } + + public function template() + { + return 'banana/index.tpl'; + } + + public function prepare(PlPage &$page, $id) + { + } + + public function process() + { + return PlWizard::CURRENT_PAGE; + } +} + function run_banana(&$page, $class, array $args) { - $banana = new $class(S::v('forlife'), $args); + $user =& S::user(); + $banana = new $class($user, $args); $page->assign('banana', $banana->run()); $page->addCssInline($banana->css()); $page->addCssLink('banana.css');