X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=htdocs%2Flogin.php;h=dccab732c76d5daca1e78bc6ac2175e91f2dc7af;hb=dd502514e4c52ed460753060b847df8ef155661e;hp=d67ee86fefa467955659a1d38cb20727896e173b;hpb=36f114ef792cd19b7e2a6e00540ff0ffd8422253;p=platal.git diff --git a/htdocs/login.php b/htdocs/login.php index d67ee86..dccab73 100644 --- a/htdocs/login.php +++ b/htdocs/login.php @@ -72,6 +72,15 @@ if (Session::has('core_rss_hash')) { $page->assign('xorg_rss', Array("title" => "Polytechnique.org :: News", "href" => "/rss.php/".Session::get('forlife')."/".Session::get('core_rss_hash').".xml")); } +// cache les evenements lus et raffiche les evenements a relire +if (Env::has('lu')){ + $globals->xdb->execute('DELETE FROM evenements_vus AS ev INNER JOIN evenements AS e ON e.id = ev.evt_id WHERE peremption < NOW)'); + $globals->xdb->execute('REPLACE INTO evenements_vus VALUES({?},{?})', Env::get('lu'), Session::getInt('uid')); +} +if (Env::has('nonlu')){ + $globals->xdb->execute('DELETE FROM evenements_vus WHERE evt_id = {?} AND user_id = {?}', Env::get('nonlu'), Session::getInt('uid')); +} + // affichage des evenements // annonces promos triées par présence d'une limite sur les promos // puis par dates croissantes d'expiration @@ -80,11 +89,22 @@ $sql = "SELECT e.id,e.titre,e.texte,a.user_id,a.nom,a.prenom,a.promo,l.alias AS FROM evenements AS e INNER JOIN auth_user_md5 AS a ON e.user_id=a.user_id INNER JOIN aliases AS l ON ( a.user_id=l.id AND l.type='a_vie' ) + LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?}) + WHERE FIND_IN_SET(e.flags, 'valide') AND peremption >= NOW() + AND (e.promo_min = 0 || e.promo_min <= {?}) + AND (e.promo_max = 0 || e.promo_max >= {?}) + AND ev.user_id IS NULL + ORDER BY (e.promo_min != 0 AND e.promo_max != 0) DESC, e.peremption"; +$page->assign('evenement', $globals->xdb->iterator($sql, Session::getInt('uid'), $promo, $promo)); + +$sql = "SELECT e.id,e.titre, ev.user_id IS NULL AS nonlu + FROM evenements AS e + LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?}) WHERE FIND_IN_SET(e.flags, 'valide') AND peremption >= NOW() AND (e.promo_min = 0 || e.promo_min <= {?}) AND (e.promo_max = 0 || e.promo_max >= {?}) ORDER BY (e.promo_min != 0 AND e.promo_max != 0) DESC, e.peremption"; -$page->assign('evenement', $globals->xdb->iterator($sql, $promo, $promo)); +$page->assign('evenement_summary', $globals->xdb->iterator($sql, Session::getInt('uid'), $promo, $promo)); $page->assign('refe',$_SERVER['PHP_SELF']);