- return XDB::iterator(
- 'SELECT e.id, e.titre AS title, e.texte, e.creation_date AS publication, e.post_id, p.attachmime IS NOT NULL AS photo,
- CONCAT(u2.prenom, " ", IF(u2.nom_usage = "", u2.nom, u2.nom_usage), "(X", u2.promo, ")") AS author,
- FIND_IN_SET(\'wiki\', e.flags) AS wiki
- FROM auth_user_md5 AS u
- INNER JOIN evenements AS e ON ( (e.promo_min = 0 || e.promo_min <= u.promo)
- AND (e.promo_max = 0 || e.promo_max >= u.promo) )
- LEFT JOIN evenements_photo AS p ON (p.eid = e.id)
- INNER JOIN auth_user_md5 AS u2 ON (u2.user_id = e.user_id)
- WHERE u.user_id = {?} AND FIND_IN_SET("valide", e.flags)
- AND peremption >= NOW()', $user);
+ while ($body = $it->next()) {
+ $uf = UserFilter::getLegacy($body['promo_min'], $body['promo_max']);
+ if ($uf->checkUser($user)) {
+ return $body;
+ }
+ }
+ return null;
+ }
+
+ protected function fetch(PlUser $user)
+ {
+ global $globals;
+ $events = XDB::iterator('SELECT e.id, e.titre AS title, e.texte, e.creation_date AS publication, e.post_id,
+ p.attachmime IS NOT NULL AS photo, FIND_IN_SET(\'wiki\', e.flags) AS wiki,
+ e.uid, e.promo_min, e.promo_max
+ FROM announces AS e
+ LEFT JOIN announce_photos AS p ON (p.eid = e.id)
+ WHERE FIND_IN_SET("valide", e.flags) AND expiration >= NOW()');
+ $data = array();
+ while ($e = self::nextEvent($events, $user)) {
+ $author = User::getWithUID($e['uid']);
+ $promo = $author->promo();
+ $e['author'] = $author->fullName() . ($promo ? ' (' . $promo . ')' : '');
+ $e['link'] = $globals->baseurl . '/events#newsid' . $e['id'];
+ $data[] = $e;
+ }
+ return PlIteratorUtils::fromArray($data, 1, true);