X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Flists.php;h=9ae5ce2e5ced8d6aa21f2bbcc219b5bc0039c61a;hb=6544d0e1de719d31db03a7c7fddfe4c0301d9d6d;hp=24a63a3bb80131fae473452362a4a71858a1ede6;hpb=0be07aa610451e9c9e6f45425cae68eac31dbd7e;p=platal.git diff --git a/modules/lists.php b/modules/lists.php index 24a63a3..9ae5ce2 100644 --- a/modules/lists.php +++ b/modules/lists.php @@ -33,6 +33,7 @@ class ListsModule extends PLModule 'lists/members' => $this->make_hook('members', AUTH_COOKIE), 'lists/trombi' => $this->make_hook('trombi', AUTH_COOKIE), 'lists/archives' => $this->make_hook('archives', AUTH_COOKIE), + 'lists/archives/rss' => $this->make_hook('rss', AUTH_PUBLIC), 'lists/moderate' => $this->make_hook('moderate', AUTH_MDP), 'lists/admin' => $this->make_hook('admin', AUTH_MDP), @@ -383,12 +384,44 @@ class ListsModule extends PLModule $page->assign('banana', $banana->run()); $page->addCssInline($banana->css()); $page->addCssLink('banana.css'); + $rss = $banana->feed(); + if ($rss) { + $page->setRssLink('Banana :: ' . $list, $rss); + } new PlBacktrace('MBox', $banana->backtrace(), 'response', 'time'); } else { $page->kill("La liste n'existe pas ou tu n'as pas le droit de la consulter"); } } + function handler_rss(&$page, $liste = null, $alias = null, $hash = null) + { + require_once('rss.inc.php'); + $uid = init_rss(null, $alias, $hash); + if (!$uid || !$liste) { + exit; + } + + $res = XDB::query("SELECT user_id AS uid, password, alias AS forlife + FROM auth_user_md5 AS u + INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie') + WHERE u.user_id = {?}", $uid); + $row = $res->fetchOneAssoc(); + $_SESSION = array_merge($row, $_SESSION); + + $domain = $this->prepare_client($page); + if (list($det) = $this->client->get_members($liste)) { + if (substr($liste,0,5) != 'promo' && ($det['ins'] || $det['priv']) + && !$det['own'] && ($det['sub'] < 2)) { + exit; + } + require_once('banana/ml.inc.php'); + $banana = new MLBanana(Array('listname' => $liste, 'domain' => $domain, 'action' => 'rss2')); + echo $banana->run(); + } + exit; + } + function moderate_mail($domain, $liste, $mid) { $mail = $this->client->get_pending_mail($liste, $mid);