X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fevents.php;h=19ca0fde2522db40674b66757e85740402e11e72;hb=6e909db8e8f8a25a0d44e3ff74bcc5f76eb2ea92;hp=24b0a4bd6ed549277fa4cb37e026647fe20c1192;hpb=5daf68f6846682e439570b5245a6109ada8d9304;p=platal.git diff --git a/modules/events.php b/modules/events.php index 24b0a4b..19ca0fd 100644 --- a/modules/events.php +++ b/modules/events.php @@ -106,43 +106,39 @@ class EventsModule extends PLModule $page->addJsLink('ajax.js'); $page->assign('tips', $this->get_tips()); - $res = XDB::query('SELECT date, naissance FROM auth_user_md5 - WHERE user_id={?}', S::v('uid')); - list($date, $naissance) = $res->fetchOneRow(); - - // incitation à mettre à jour la fiche - - $d2 = mktime(0, 0, 0, substr($date, 5, 2), substr($date, 8, 2), - substr($date, 0, 4)); - if( (time() - $d2) > 60 * 60 * 24 * 400 ) { - // si fiche date de + de 400j; - $page->assign('fiche_incitation', $date); + // Profile update (appears when profile is > 400d old), and birthday + // oneboxes. + $res = XDB::query( + "SELECT date < DATE_SUB(NOW(), INTERVAL 400 DAY) AS is_profile_old, + MONTH(naissance) = MONTH(NOW()) AND DAYOFMONTH(naissance) = DAYOFMONTH(NOW()) AS is_birthday, + date AS profile_date, YEAR(NOW()) - YEAR(naissance) AS age + FROM auth_user_md5 + WHERE user_id = {?}", S::user()->id()); + list($is_profile_old, $is_birthday, $profile_date, $age) = $res->fetchOneRow(); + + if ($is_profile_old) { + $page->assign('fiche_incitation', $profile_date); } - - // Souhaite bon anniversaire - - if (substr($naissance, 5) == date('m-d')) { - $page->assign('birthday', date('Y') - substr($naissance, 0, 4)); + if ($is_birthday) { + $page->assign('birthday', $age); } - // incitation à mettre une photo - - $res = XDB::query('SELECT COUNT(*) FROM photo - WHERE uid={?}', S::v('uid')); + // No-photo onebox. + $res = XDB::query("SELECT COUNT(*) FROM photo WHERE uid = {?}", S::user()->id()); $page->assign('photo_incitation', $res->fetchOneCell() == 0); - // Incitation à se géolocaliser + // Geo-location onebox. require_once 'geoloc.inc.php'; - $res = localize_addresses(S::v('uid', -1)); + $res = localize_addresses(S::user()->id()); $page->assign('geoloc_incitation', count($res)); - // ajout du lien RSS - if (S::rssActivated()) { + // Direct link to the RSS feed, when available. + if (S::hasAuthToken()) { $page->setRssLink('Polytechnique.org :: News', - '/rss/'.S::v('forlife') .'/'.S::v('core_rss_hash').'/rss.xml'); + '/rss/'.S::v('hruid') .'/'.S::v('token').'/rss.xml'); } - // cache les evenements lus et raffiche les evenements a relire + // Hide the read event, and reload the page to get to the next event. if ($action == 'read' && $eid) { XDB::execute('DELETE ev.* FROM evenements_vus AS ev @@ -153,6 +149,7 @@ class EventsModule extends PLModule pl_redirect('events#'.$pound); } + // Unhide the requested event, and reload the page to display it. if ($action == 'unread' && $eid) { XDB::execute('DELETE FROM evenements_vus WHERE evt_id = {?} AND user_id = {?}', @@ -160,18 +157,19 @@ class EventsModule extends PLModule 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,a.user_id,a.nom,a.prenom,a.promo,l.alias AS forlife, + $it = XDB::iterator("SELECT e.id, e.titre, e.texte, e.post_id, a.user_id, a.nom, a.prenom, d.promo AS promo_display ,a.hruid, p.x, p.y, p.attach IS NOT NULL AS img, FIND_IN_SET('wiki', e.flags) AS wiki, FIND_IN_SET('important', e.flags) AS important, e.creation_date > DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS news, e.peremption < DATE_ADD(CURDATE(), INTERVAL 2 DAY) AS end, ev.user_id IS NULL AS nonlu FROM evenements AS e - LEFT JOIN evenements_photo AS p ON (e.id = p.eid) - 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 = {?}) + LEFT JOIN evenements_photo AS p ON (e.id = p.eid) + INNER JOIN auth_user_md5 AS a ON (e.user_id = a.user_id) + INNER JOIN profile_display AS d ON (d.pid = a.user_id) + LEFT JOIN evenements_vus AS ev ON (e.id = ev.evt_id AND ev.user_id = {?}) WHERE FIND_IN_SET('valide', e.flags) AND peremption >= NOW() AND (e.promo_min = 0 || e.promo_min <= {?}) AND (e.promo_max = 0 || e.promo_max >= {?}) @@ -469,11 +467,10 @@ class EventsModule extends PLModule e.promo_min, e.promo_max, FIND_IN_SET('valide', e.flags) AS fvalide, FIND_IN_SET('archive', e.flags) AS farch, - u.promo, u.nom, u.prenom, a.alias AS forlife, + u.promo, u.nom, u.prenom, u.hruid, FIND_IN_SET('wiki', e.flags) AS wiki FROM evenements AS e INNER JOIN auth_user_md5 AS u ON(e.user_id = u.user_id) - INNER JOIN aliases AS a ON (u.user_id = a.id AND a.type='a_vie') WHERE ".($arch ? "" : "!")."FIND_IN_SET('archive',e.flags) ORDER BY FIND_IN_SET('valide',e.flags), e.peremption DESC"; $page->assign('evs', XDB::iterator($sql));