X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fxnetgrp.php;h=d1b126407a1b2a8de448162e740ecdc516a85cdd;hb=94bf736ee13302194c25e7f204cfb2d80b9d835b;hp=2ec9e2ceee6be4a00f0428616bd46f04e9da38d9;hpb=cb1f54082d5a67f390b69f56eae9b8d3a81aa41c;p=platal.git diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index 2ec9e2c..d1b1264 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -825,6 +825,13 @@ class XnetGrpModule extends PLModule if (empty($user)) { return PL_NOT_FOUND; } + + global $globals; + + if (!$user->inGroup($globals->asso('id'))) { + pl_redirect('annuaire'); + } + $page->assign('self', false); $page->assign('user', $user); @@ -834,14 +841,36 @@ class XnetGrpModule extends PLModule S::assert_xsrf_token(); } + $hasSingleGroup = $user->hasSingleGroup(); + if ($this->unsubscribe($user)) { $page->trigSuccess("{$user->fullName()} a été désinscrit du groupe !"); } else { $page->trigWarning("{$user->fullName()} a été désinscrit du groupe, mais des erreurs subsistent !"); } + + // Either deletes or notifies site administrators if it was the last group + // of a xnet account. + if ($user->type == 'xnet' && $hasSingleGroup) { + if ($user->state == 'pending') { + // If the user has never logged in the site, we delete her account. + XDB::execute('DELETE FROM acounts + WHERE uid = {?}', + $user->id()); + } else { + // It the user has already logged in the site, we notify site + // administrators that there is a new xnet account without any + // group. + $mailer = new PlMailer('xnetgrp/unsubscription.mail.tpl'); + $mailer->assign('user', $user); + $mailer->assign('groupId', $globals->asso('id')); + $mailer->assign('groupName', $globals->asso('nom')); + $mailer->send(); + } + } } - private function changeLogin(PlPage &$page, PlUser &$user, MMList &$mmlist, $login) + private function changeLogin(PlPage &$page, PlUser &$user, $login) { // Search the user's uid. $xuser = User::getSilent($login); @@ -889,7 +918,7 @@ class XnetGrpModule extends PLModule // Convert user status to X if (!Post::blank('login_X')) { - $forlife = $this->changeLogin($page, $user, $mmlist, Post::t('login_X')); + $forlife = $this->changeLogin($page, $user, Post::t('login_X')); if ($forlife) { pl_redirect('member/' . $forlife); } @@ -920,7 +949,7 @@ class XnetGrpModule extends PLModule Post::t('email'), $user->id()); } if (XDB::affectedRows()) { - $page->trigSuccess('Données de l\'utilisateur mise à jour.'); + $page->trigSuccess('Données de l\'utilisateur mises à jour.'); } // Update group params for user