X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fxnetgrp.php;h=814fdcc398eaef3ba23de596d0d6d04ab8a4b458;hb=85fd04406cd481f50ce9326adce1ec3201c55478;hp=dd225acb70bafd11e563975e671716e6ed452639;hpb=c4f03937349bddfad25990239a825f8161615260;p=platal.git diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index dd225ac..814fdcc 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -32,6 +32,7 @@ class XnetGrpModule extends PLModule '%grp/edit' => $this->make_hook('edit', AUTH_MDP, 'groupadmin'), '%grp/mail' => $this->make_hook('mail', AUTH_MDP, 'groupadmin'), '%grp/forum' => $this->make_hook('forum', AUTH_MDP, 'groupmember'), + '%grp/former_users' => $this->make_hook('former_users', AUTH_MDP, 'admin'), '%grp/annuaire' => $this->make_hook('annuaire', AUTH_MDP, 'groupannu'), '%grp/annuaire/vcard' => $this->make_hook('vcard', AUTH_MDP, 'groupmember:groupannu'), '%grp/annuaire/csv' => $this->make_hook('csv', AUTH_MDP, 'groupmember:groupannu'), @@ -324,53 +325,29 @@ class XnetGrpModule extends PLModule { global $globals; - if ($action == 'trombi') { - __autoload('userset'); - if ($action == 'trombi') { - $view = new ProfileSet(new UFC_Group($globals->asso('id'))); - } else { - $view = new UserSet(new UFC_Group($globals->asso('id'))); - } - $view->addMod('trombi', 'Trombinoscope'); - $view->apply('annuaire', $page, $action, $subaction); - $page->changeTpl('xnetgrp/annuaire.tpl'); - $count = XDB::fetchOneCell('SELECT COUNT(*) - FROM group_members - WHERE asso_id = {?}', - $globals->asso('id')); - $page->assign('nb_tot', $count); - return; - } - + __autoload('userset'); + $admins = false; + if ($action == 'admins') { + $admins = true; + $action = $subaction; + } + $view = new UserSet(new UFC_Group($globals->asso('id'), $admins)); + $view->addMod('groupmember', 'Annuaire'); + $view->addMod('trombi', 'Trombinoscope'); + $view->apply('annuaire', $page, $action); + $page->assign('only_admin', $admins); $page->changeTpl('xnetgrp/annuaire.tpl'); - $sort = Env::s('order', 'directory_name'); - $ofs = Env::i('offset'); - if ($ofs < 0) { - $ofs = 0; - } - - $sdesc = $sort{0} == '-'; - $sf = $sdesc ? substr($sort, 1) : $sort; - if ($sf == 'promo') { - $se = new UFO_Promo(null, $sdesc); - } else { - $se = new UFO_Name($sf, null, null, $sdesc); - } + } - if (Env::b('admin')) { - $uf = $globals->asso()->getAdminsFilter(null, $se); - } else { - $uf = $globals->asso()->getMembersFilter(null, $se); - } - $users = $uf->getUsers(new PlLimit(NB_PER_PAGE, $ofs * NB_PER_PAGE)); - $count = $uf->getTotalCount(); + function handler_former_users($page) + { + global $globals; + require_once 'userset.inc.php'; - $page->assign('nb_tot', $count); - $page->assign('pages', floor(($count + NB_PER_PAGE - 1) / NB_PER_PAGE)); - $page->assign('current', $ofs); - $page->assign('order', $sort); - $page->assign('users', $users); - $page->assign('only_admin', Env::b('admin')); + $view = new UserSet(new UFC_GroupFormerMember($globals->asso('id'))); + $view->addMod('groupmember', 'Anciens membres', true, array('noadmin' => true)); + $view->apply('former_users', $page); + $page->changeTpl('xnetgrp/former_users.tpl'); } function handler_trombi($page) @@ -495,15 +472,19 @@ class XnetGrpModule extends PLModule } $nonusers = array_unique($nonusers); $uids = array_unique($uids); - $uids = XDB::fetchColumn('SELECT a.uid - FROM accounts AS a - WHERE a.uid IN {?} AND NOT EXISTS (SELECT * - FROM group_members AS g - WHERE a.uid = g.uid AND g.asso_id = {?})', - $uids, $globals->asso('id')); - - $users = User::getBulkUsersWithUIDs($uids); - usort($users, 'User::compareDirectoryName'); + if (count($uids)) { + $uids = XDB::fetchColumn('SELECT a.uid + FROM accounts AS a + WHERE a.uid IN {?} AND NOT EXISTS (SELECT * + FROM group_members AS g + WHERE a.uid = g.uid AND g.asso_id = {?})', + $uids, $globals->asso('id')); + + $users = User::getBulkUsersWithUIDs($uids); + usort($users, 'User::compareDirectoryName'); + } else { + $users = array(); + } sort($nonusers); $page->assign('users', $users); @@ -561,9 +542,8 @@ class XnetGrpModule extends PLModule { global $globals; $this->removeSubscriptionRequest($user->id()); - XDB::execute("INSERT IGNORE INTO group_members (asso_id, uid) - VALUES ({?}, {?})", - $globals->asso('id'), $user->id()); + Group::subscribe($globals->asso('id'), $user->id()); + if (XDB::affectedRows() == 1) { $mailer = new PlMailer(); $mailer->addTo($user->forlifeEmail()); @@ -978,9 +958,7 @@ class XnetGrpModule extends PLModule function unsubscribe(PlUser $user) { global $globals; - XDB::execute("DELETE FROM group_members - WHERE uid = {?} AND asso_id = {?}", - $user->id(), $globals->asso('id')); + Group::unsubscribe($globals->asso('id'), $user->id()); if ($globals->asso('notif_unsub')) { $mailer = new PlMailer('xnetgrp/unsubscription-notif.mail.tpl'); @@ -1265,16 +1243,39 @@ class XnetGrpModule extends PLModule $page->trigSuccess("{$user->fullName()} a été désabonné de $ml."); } } + + if ($globals->asso('has_nl')) { + // Updates group's newsletter subscription. + if (Post::i('newsletter') == 1) { + XDB::execute('INSERT IGNORE INTO newsletter_ins (uid, nlid) + SELECT {?}, id + FROM newsletters + WHERE group_id = {?}', + $user->id(), $globals->asso('id')); + } else { + XDB::execute('DELETE ni + FROM newsletter_ins AS ni + INNER JOIN newsletters AS n ON (n.id = ni.nlid) + WHERE ni.uid = {?} AND n.group_id = {?}', + $user->id(), $globals->asso('id')); + } + } } $res = XDB::rawFetchAllAssoc('SHOW COLUMNS FROM group_members LIKE \'position\''); $positions = str_replace(array('enum(', ')', '\''), '', $res[0]['Type']); + $nl_registered = XDB::fetchOneCell('SELECT COUNT(ni.uid) + FROM newsletter_ins AS ni + INNER JOIN newsletters AS n ON (n.id = ni.nlid) + WHERE ni.uid = {?} AND n.group_id = {?}', + $user->id(), $globals->asso('id')); $page->assign('user', $user); $page->assign('suggest', $this->suggest($user)); $page->assign('listes', $mmlist->get_lists($user->forlifeEmail())); $page->assign('alias', $user->emailGroupAliases($globals->asso('mail_domain'))); $page->assign('positions', explode(',', $positions)); + $page->assign('nl_registered', $nl_registered); } function handler_rss(PlPage $page, PlUser $user) @@ -1299,7 +1300,7 @@ class XnetGrpModule extends PLModule $page->trigError('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG.'); $upload->rm(); return false; - } elseif (!$upload->resizeImage(200, 300, 100, 100, 32284)) { + } elseif (!$upload->resizeImage(80, 100, 100, 100, 32284)) { $page->trigError('Impossible de retraiter l\'image'); return false; }