X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fxnetgrp%2Ffeed.inc.php;h=0e98197a998c670aa15951a10032d3ab4b65d7ab;hb=a037f0a822d44e1fd79e5fe488092b0ab8dbc1ab;hp=caee580de32db7d9f28e1c568f6f3cd775e382f3;hpb=55546c0db778c2d8f9d7debd30117931dc39ff16;p=platal.git diff --git a/modules/xnetgrp/feed.inc.php b/modules/xnetgrp/feed.inc.php index caee580..0e98197 100644 --- a/modules/xnetgrp/feed.inc.php +++ b/modules/xnetgrp/feed.inc.php @@ -1,6 +1,6 @@ it =& $it; + $this->user =& $user; + } + + public function total() + { + return $this->it->total(); + } + + public function first() + { + return $this->it->first(); + } + + public function last() + { + return $this->it->last(); + } + + public function next() + { + while ($n = $this->it->next()) { + $uf = UserFilter::getLegacy($n['promo_min'], $n['promo_max']); + if ($uf->checkUser($this->user)) { + return $n; + } + } + return null; + } +} + class XnetGrpEventFeed extends PlFeed { public function __construct() @@ -33,29 +70,24 @@ class XnetGrpEventFeed extends PlFeed 'xnetgrp/announce-rss.tpl'); } - protected function fetch($user) + protected function fetch(PlUser $user) { global $globals; if (!is_null($user)) { - return XDB::iterator("SELECT a.id, a.titre AS title, a.texte, a.contacts, - a.create_date AS publication, - CONCAT(u2.prenom, ' ', IF(u2.nom_usage != '', u2.nom_usage, u2.nom), ' (X', u2.promo, ')') AS author, - FIND_IN_SET('photo', a.flags) AS photo, - CONCAT({?}, '/#art', a.id) AS link - FROM auth_user_md5 AS u - INNER JOIN groupex.announces AS a ON ( (a.promo_min = 0 OR a.promo_min <= u.promo) - AND (a.promo_max = 0 OR a.promo_max <= u.promo)) - INNER JOIN auth_user_md5 AS u2 ON (u2.user_id = a.user_id) - WHERE u.user_id = {?} AND peremption >= NOW() AND a.asso_id = {?}", - $this->link, $user, $globals->asso('id')); + return new UserFilterIterator( + XDB::iterator("SELECT id, titre AS title, texte, contacts, + create_date AS publication, + FIND_IN_SET('photo', flags) AS photo, + CONCAT({?}, '/#art', id) AS link + FROM group_announces + WHERE expiration >= NOW() AND asso_id = {?}", + $this->link, $globals->asso('id'), $user)); } else { - return XDB::iterator("SELECT a.id, a.titre AS title, a.texte, a.create_date AS publication, - CONCAT(u.prenom, ' ', IF(u.nom_usage != '', u.nom_usage, u.nom), ' (X', u.promo, ')') AS author, - CONCAT({?}, '/#art', a.id) AS link, - NULL AS photo, NULL AS contacts - FROM groupex.announces AS a - INNER JOIN auth_user_md5 AS u USING(user_id) - WHERE FIND_IN_SET('public', a.flags) AND peremption >= NOW() AND a.asso_id = {?}", + return XDB::iterator("SELECT id, titre AS title, texte, create_date AS publication, + CONCAT({?}, '/#art', id) AS link, + NULL AS photo, NULL AS contacts + FROM group_announces + WHERE FIND_IN_SET('public', flags) AND expiration >= NOW() AND asso_id = {?}", $this->link, $globals->asso('id')); } }