function _add_rss_link($page) { if (!S::hasAuthToken()) { return; } $page->setRssLink('Polytechnique.org :: Carnet', '/carnet/rss/' . S::v('hruid') . '/' . S::user()->token . '/rss.xml'); }
public function __construct(User $user, $params = null) { $this->user =& $user; global $globals; Banana::$msgedit_canattach = false; Banana::$spool_root = $globals->spoolroot . '/spool/banana/'; array_push(Banana::$msgparse_headers, 'x-org-id', 'x-org-mail'); Banana::$nntp_host = self::buildURL($user->login()); if (S::admin()) { Banana::$msgshow_mimeparts[] = 'source'; } Banana::$debug_nntp = $globals->debug & DEBUG_BT; Banana::$debug_smarty = $globals->debug & DEBUG_SMARTY; Banana::$feed_active = S::hasAuthToken(); parent::__construct($params, 'NNTP', 'PlatalBananaPage'); if (@$params['action'] == 'profile') { Banana::$action = 'profile'; } }
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'); }
function handler_wiki($page, $action = 'list', $wikipage = null, $wikipage2 = null) { if (S::hasAuthToken()) { $page->setRssLink('Changement Récents', '/Site/AllRecentChanges?action=rss&user='******'hruid') . '&hash=' . S::user()->token); } // update wiki perms if ($action == 'update') { S::assert_xsrf_token(); $perms_read = Post::v('read'); $perms_edit = Post::v('edit'); if ($perms_read || $perms_edit) { foreach ($_POST as $wiki_page => $val) { if ($val == 'on') { $wp = new PlWikiPage(str_replace(array('_', '/'), '.', $wiki_page)); if ($wp->setPerms($perms_read ? $perms_read : $wp->readPerms(), $perms_edit ? $perms_edit : $wp->writePerms())) { $page->trigSuccess("Permission de la page {$wiki_page} mises à jour"); } else { $page->trigError("Impossible de mettre les permissions de la page {$wiki_page} à jour"); } } } } } else { if ($action != 'list' && !empty($wikipage)) { $wp = new PlWikiPage($wikipage); S::assert_xsrf_token(); if ($action == 'delete') { if ($wp->delete()) { $page->trigSuccess("La page " . $wikipage . " a été supprimée."); } else { $page->trigError("Impossible de supprimer la page " . $wikipage . "."); } } else { if ($action == 'rename' && !empty($wikipage2) && $wikipage != $wikipage2) { if ($changedLinks = $wp->rename($wikipage2)) { $s = 'La page <em>' . $wikipage . '</em> a été déplacée en <em>' . $wikipage2 . '</em>.'; if (is_numeric($changedLinks)) { $s .= $changedLinks . ' lien' . ($changedLinks > 1 ? 's ont été modifiés.' : ' a été modifié.'); } $page->trigSuccess($s); } else { $page->trigError("Impossible de déplacer la page " . $wikipage); } } } } } $perms = PlWikiPage::permOptions(); // list wiki pages and their perms $wiki_pages = PlWikiPage::listPages(); ksort($wiki_pages); $wiki_tree = array(); foreach ($wiki_pages as $file => $desc) { list($cat, $name) = explode('.', $file); if (!isset($wiki_tree[$cat])) { $wiki_tree[$cat] = array(); } $wiki_tree[$cat][$name] = $desc; } $page->changeTpl('admin/wiki.tpl'); $page->assign('wiki_pages', $wiki_tree); $page->assign('perms_opts', $perms); }
function handler_ev($page, $action = 'list', $eid = null, $pound = null) { $page->changeTpl('events/index.tpl'); $user = S::user(); /** XXX: Tips and reminder only for user with 'email' permission. * We can do better in the future by storing a userfilter * with the tip/reminder. */ if ($user->checkPerms(User::PERM_MAIL)) { $page->assign('tips', $this->get_tips()); } // Adds a reminder onebox to the page. require_once 'reminder.inc.php'; if ($reminder = Reminder::GetCandidateReminder($user)) { $reminder->Prepare($page); } // Wishes "Happy birthday" when required $profile = $user->profile(); if (!is_null($profile)) { if ($profile->next_birthday == date('Y-m-d')) { $birthyear = (int) date('Y', strtotime($profile->birthdate)); $curyear = (int) date('Y'); $page->assign('birthday', $curyear - $birthyear); } } // Direct link to the RSS feed, when available. if (S::hasAuthToken()) { $page->setRssLink('Polytechnique.org :: News', '/rss/' . S::v('hruid') . '/' . S::user()->token . '/rss.xml'); } // Hide the read event, and reload the page to get to the next event. if ($action == 'read' && $eid) { XDB::execute('DELETE ev.* FROM announce_read AS ev INNER JOIN announces AS e ON e.id = ev.evt_id WHERE expiration < NOW()'); XDB::execute('INSERT IGNORE INTO announce_read (evt_id, uid) VALUES ({?}, {?})', $eid, S::v('uid')); pl_redirect('events#' . $pound); } // Unhide the requested event, and reload the page to display it. if ($action == 'unread' && $eid) { XDB::execute('DELETE FROM announce_read WHERE evt_id = {?} AND uid = {?}', $eid, S::v('uid')); pl_redirect('events#newsid' . $eid); } // Fetch the events to display, along with their metadata. $array = array(); $it = XDB::iterator("SELECT e.id, e.titre, e.texte, e.post_id, e.uid,\n p.x, p.y, p.attach IS NOT NULL AS img, FIND_IN_SET('wiki', e.flags) AS wiki,\n FIND_IN_SET('important', e.flags) AS important,\n e.creation_date > DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS news,\n e.expiration < DATE_ADD(CURDATE(), INTERVAL 2 DAY) AS end,\n ev.uid IS NULL AS nonlu, e.promo_min, e.promo_max\n FROM announces AS e\n LEFT JOIN announce_photos AS p ON (e.id = p.eid)\n LEFT JOIN announce_read AS ev ON (e.id = ev.evt_id AND ev.uid = {?})\n WHERE FIND_IN_SET('valide', e.flags) AND expiration >= NOW()\n ORDER BY important DESC, news DESC, end DESC, e.expiration, e.creation_date DESC", S::i('uid')); $cats = array('important', 'news', 'end', 'body'); $this->load('feed.inc.php'); $user = S::user(); $body = EventFeed::nextEvent($it, $user); foreach ($cats as $cat) { $data = array(); if (!$body) { continue; } do { if ($cat == 'body' || $body[$cat]) { $data[] = $body; } else { break; } $body = EventFeed::nextEvent($it, $user); } while ($body); if (!empty($data)) { $array[$cat] = $data; } } $page->assign_by_ref('events', $array); }
function handler_index($page, $arg = null) { global $globals, $platal; if (!is_null($arg)) { return PL_NOT_FOUND; } $page->changeTpl('xnetgrp/asso.tpl'); if (S::logged()) { if (Env::has('read')) { XDB::query('DELETE r.* FROM group_announces_read AS r INNER JOIN group_announces AS a ON (a.id = r.announce_id) WHERE expiration < CURRENT_DATE()'); XDB::query('INSERT INTO group_announces_read VALUES ({?}, {?})', Env::i('read'), S::i('uid')); pl_redirect(""); } if (Env::has('unread')) { XDB::query('DELETE FROM group_announces_read WHERE announce_id = {?} AND uid = {?}', Env::i('unread'), S::i('uid')); pl_redirect("#art" . Env::i('unread')); } /* TODO: refines this filter on promotions by using userfilter. */ $user = S::user(); if ($user->hasProfile()) { $promo = XDB::format('{?}', $user->profile()->entry_year); $minCondition = ' OR promo_min <= ' . $promo; $maxCondition = ' OR promo_max >= ' . $promo; } else { $minCondition = ''; $maxCondition = ''; } $arts = XDB::iterator('SELECT a.*, FIND_IN_SET(\'photo\', a.flags) AS photo FROM group_announces AS a LEFT JOIN group_announces_read AS r ON (r.uid = {?} AND r.announce_id = a.id) WHERE asso_id = {?} AND expiration >= CURRENT_DATE() AND (promo_min = 0' . $minCondition . ') AND (promo_max = 0' . $maxCondition . ') AND r.announce_id IS NULL ORDER BY a.expiration', S::i('uid'), $globals->asso('id')); $index = XDB::iterator('SELECT a.id, a.titre, r.uid IS NULL AS nonlu FROM group_announces AS a LEFT JOIN group_announces_read AS r ON (a.id = r.announce_id AND r.uid = {?}) WHERE asso_id = {?} AND expiration >= CURRENT_DATE() AND (promo_min = 0' . $minCondition . ') AND (promo_max = 0' . $maxCondition . ') ORDER BY a.expiration', S::i('uid'), $globals->asso('id')); $page->assign('article_index', $index); } else { $arts = XDB::iterator("SELECT *, FIND_IN_SET('photo', flags) AS photo\n FROM group_announces\n WHERE asso_id = {?} AND expiration >= CURRENT_DATE()\n AND FIND_IN_SET('public', flags)", $globals->asso('id')); $payments = XDB::fetchAllAssoc("SELECT id, text\n FROM payments\n WHERE asso_id = {?} AND NOT FIND_IN_SET('old', flags) AND FIND_IN_SET('public', flags)\n ORDER BY id DESC", $globals->asso('id')); $page->assign('payments', $payments); } if (may_update()) { $subs_valid = XDB::query("SELECT uid\n FROM group_member_sub_requests\n WHERE asso_id = {?}", $globals->asso('id')); $page->assign('requests', $subs_valid->numRows()); } if (!S::hasAuthToken()) { $page->setRssLink("Polytechnique.net :: {$globals->asso("nom")} :: News publiques", $platal->ns . "rss/rss.xml"); } else { $page->setRssLink("Polytechnique.net :: {$globals->asso("nom")} :: News", $platal->ns . 'rss/' . S::v('hruid') . '/' . S::user()->token . '/rss.xml'); } $page->assign('articles', $arts); }