<?php
/***************************************************************************
- * Copyright (C) 2003-2010 Polytechnique.org *
+ * Copyright (C) 2003-2014 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
function handlers()
{
return array(
- 'events' => $this->make_hook('ev', AUTH_COOKIE),
- 'rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS),
+ 'events' => $this->make_hook('ev', AUTH_COOKIE, 'user'),
'events/preview' => $this->make_hook('preview', AUTH_PUBLIC, 'user', NO_AUTH),
'events/photo' => $this->make_hook('photo', AUTH_PUBLIC),
- 'events/submit' => $this->make_hook('ev_submit', AUTH_MDP),
- 'admin/events' => $this->make_hook('admin_events', AUTH_MDP, 'admin'),
+ 'events/submit' => $this->make_hook('ev_submit', AUTH_PASSWD, 'user'),
+ 'admin/events' => $this->make_hook('admin_events', AUTH_PASSWD, 'admin'),
+ 'rss' => $this->make_token_hook('rss', AUTH_COOKIE, 'user'),
'ajax/tips' => $this->make_hook('tips', AUTH_COOKIE, 'user', NO_AUTH),
- 'admin/tips' => $this->make_hook('admin_tips', AUTH_MDP, 'admin'),
+ 'admin/tips' => $this->make_hook('admin_tips', AUTH_PASSWD, 'admin'),
);
}
{
global $globals;
// Add a new special tip when changing plat/al version
- if ($globals->version != S::v('last_version') && is_null($exclude)) {
+ if ($globals->version != S::user()->last_version && is_null($exclude)) {
XDB::execute('UPDATE accounts
SET last_version = {?}
WHERE uid = {?}',
return $res->fetchOneAssoc();
}
- private function upload_image(PlPage &$page, PlUpload &$upload)
+ private function upload_image(PlPage $page, PlUpload $upload)
{
if (@!$_FILES['image']['tmp_name'] && !Env::v('image_url')) {
return true;
return true;
}
- function handler_ev(&$page, $action = 'list', $eid = null, $pound = null)
+ function handler_ev($page, $action = 'list', $eid = null, $pound = null)
{
$page->changeTpl('events/index.tpl');
- $page->addJsLink('ajax.js');
- $page->assign('tips', $this->get_tips());
- // Adds a reminder onebox to the page.
$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);
// Direct link to the RSS feed, when available.
if (S::hasAuthToken()) {
$page->setRssLink('Polytechnique.org :: News',
- '/rss/'.S::v('hruid') .'/'.S::v('token').'/rss.xml');
+ '/rss/' . S::v('hruid') . '/' . S::user()->token . '/rss.xml');
}
// Hide the read event, and reload the page to get to the next event.
FROM announce_read AS ev
INNER JOIN announces AS e ON e.id = ev.evt_id
WHERE expiration < NOW()');
- XDB::execute('REPLACE INTO announce_read VALUES({?},{?})',
- $eid, S::v('uid'));
+ XDB::execute('INSERT IGNORE INTO announce_read (evt_id, uid)
+ VALUES ({?}, {?})',
+ $eid, S::v('uid'));
pl_redirect('events#'.$pound);
}
$page->assign_by_ref('events', $array);
}
- function handler_photo(&$page, $eid = null, $valid = null)
+ function handler_photo($page, $eid = null, $valid = null)
{
if ($eid && $eid != 'valid') {
$res = XDB::query("SELECT * FROM announce_photos WHERE eid = {?}", $eid);
exit;
}
} elseif ($eid == 'valid') {
- require_once 'validations.inc.php';
$valid = Validate::get_request_by_id($valid);
if ($valid && $valid->img) {
pl_cached_dynamic_content_headers("image/" . $valid->imgtype);
exit;
}
- function handler_rss(&$page, $user = null, $hash = null)
+ function handler_rss(PlPage $page, PlUser $user)
{
$this->load('feed.inc.php');
$feed = new EventFeed();
- return $feed->run($page, $user, $hash);
+ return $feed->run($page, $user);
}
- function handler_preview(&$page)
+ function handler_preview($page)
{
$page->changeTpl('events/preview.tpl', NO_SKIN);
$texte = Get::v('texte');
pl_content_headers("text/html");
}
- function handler_ev_submit(&$page)
+ function handler_ev_submit($page)
{
$page->changeTpl('events/submit.tpl');
- $page->addJsLink('ajax.js');
$wp = new PlWikiPage('Xorg.Annonce');
$wp->buildCache();
} elseif ($action) {
S::assert_xsrf_token();
- require_once 'validations.inc.php';
$evtreq = new EvtReq($titre, $texte, $promo_min, $promo_max,
$expiration, $valid_mesg, S::user(), $upload);
$evtreq->submit();
}
}
- function handler_tips(&$page, $tips = null)
+ function handler_tips($page, $tips = null)
{
pl_content_headers("text/html");
$page->changeTpl('include/tips.tpl', NO_SKIN);
$page->assign('tips', $this->get_tips($tips));
}
- function handler_admin_tips(&$page, $action = 'list', $id = null)
+ function handler_admin_tips($page, $action = 'list', $id = null)
{
$page->setTitle('Administration - Astuces');
$page->assign('title', 'Gestion des Astuces');
$table_editor = new PLTableEditor('admin/tips', 'reminder_tips', 'id');
$table_editor->describe('expiration', 'date de péremption', true);
- $table_editor->describe('promo_min', 'promo. min (0 aucune)', false);
- $table_editor->describe('promo_max', 'promo. max (0 aucune)', false);
- $table_editor->describe('titre', 'titre', true);
+ $table_editor->describe('promo_min', 'promo. min (0 aucune)', false, true);
+ $table_editor->describe('promo_max', 'promo. max (0 aucune)', false, true);
+ $table_editor->describe('title', 'titre', true);
$table_editor->describe('state', 'actif', true);
- $table_editor->describe('text', 'texte (html) de l\'astuce', false);
- $table_editor->describe('priorite', '0<=priorité<=255', true);
+ $table_editor->describe('text', 'texte (html) de l\'astuce', false, true);
+ $table_editor->describe('priority', '0<=priorité<=255', true);
$table_editor->list_on_edit(false);
$table_editor->apply($page, $action, $id);
if (($action == 'edit' && !is_null($id)) || $action == 'update') {
}
}
- function handler_admin_events(&$page, $action = 'list', $eid = null)
+ function handler_admin_events($page, $action = 'list', $eid = null)
{
$page->changeTpl('events/admin.tpl');
- $page->addJsLink('ajax.js');
$page->setTitle('Administration - Evenements');
$page->register_modifier('hde', 'html_entity_decode');
Post::v('promo_min'), Post::v('promo_max'),
$flags, $eid);
if ($upload->exists() && list($x, $y, $type) = $upload->imageInfo()) {
- XDB::execute('REPLACE INTO announce_photos
- SET eid = {?}, attachmime = {?}, x = {?}, y = {?}, attach = {?}',
- $eid, $type, $x, $y, $upload->getContents());
+ XDB::execute('INSERT INTO announce_photos (eid, attachmime, attach, x, y)
+ VALUES ({?}, {?}, {?}, {?}, {?})
+ ON DUPLICATE KEY UPDATE attachmime = VALUES(attachmime), attach = VALUES(attach), x = VALUES(x), y = VALUES(y)',
+ $eid, $type, $upload->getContents(), $x, $y);
$upload->rm();
}
}
}
}
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
?>