X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fevents.php;h=b1f64827f13bfd601a5bb76c8e3bba45cfc23db9;hb=e5ceaa8c8943660e5995c68c22e6646e85613006;hp=eebfa82c219636e5f99ef61de91d88549220654f;hpb=00ca0ad5370df5be4a0272364fb16a4385ffabfe;p=platal.git diff --git a/modules/events.php b/modules/events.php index eebfa82..b1f6482 100644 --- a/modules/events.php +++ b/modules/events.php @@ -1,6 +1,6 @@ $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), + 'events/submit' => $this->make_hook('ev_submit', AUTH_MDP, 'user'), 'admin/events' => $this->make_hook('admin_events', AUTH_MDP, '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'), @@ -40,7 +40,7 @@ class EventsModule extends PLModule { 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 = {?}', @@ -81,7 +81,7 @@ class EventsModule extends PLModule 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; @@ -100,14 +100,22 @@ class EventsModule extends PLModule 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); @@ -126,7 +134,7 @@ class EventsModule extends PLModule // 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. @@ -135,8 +143,9 @@ class EventsModule extends PLModule 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); } @@ -188,7 +197,7 @@ class EventsModule extends PLModule $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); @@ -199,7 +208,6 @@ class EventsModule extends PLModule 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); @@ -220,14 +228,14 @@ class EventsModule extends PLModule 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'); @@ -243,10 +251,9 @@ class EventsModule extends PLModule 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(); @@ -286,7 +293,6 @@ class EventsModule extends PLModule } 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(); @@ -296,25 +302,25 @@ class EventsModule extends PLModule } } - 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') { @@ -322,10 +328,9 @@ class EventsModule extends PLModule } } - 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'); @@ -375,9 +380,10 @@ class EventsModule extends PLModule 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(); } }