X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fxnetgrp.php;h=fa804b544ced4c0baa4056aa046ac501beb5eaac;hb=bb94f7b696c670498e93e028d683110ffb2e5510;hp=12585a614f03c5a882c9a8abf1d4eafcb76ff0f6;hpb=33a4f3f9360899d16915493b909a6db0bcbb7164;p=platal.git diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index 12585a6..fa804b5 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -790,12 +790,11 @@ class XnetGrpModule extends PLModule { $page->changeTpl('xnetgrp/membres-del.tpl'); $user = S::user(); - $uid = S::user()->id(); - if (empty($uid)) { + if (empty($user)) { return PL_NOT_FOUND; } $page->assign('self', true); - $page->assign('user', $uid); + $page->assign('user', $user); if (!Post::has('confirm')) { return; @@ -803,10 +802,18 @@ class XnetGrpModule extends PLModule S::assert_xsrf_token(); } + $hasSingleGroup = $user->hasSingleGroup(); + if ($this->unsubscribe($user)) { - $page->trigSuccess('Vous avez été désinscrit du groupe avec succès.'); + $page->trigSuccess('Tu as été désinscrit du groupe avec succès.'); } else { - $page->trigWarning('Vous avez été désinscrit du groupe, mais des erreurs se sont produites lors des désinscriptions des alias et des listes de diffusion.'); + $page->trigWarning('Tu as été désinscrit du groupe, mais des erreurs se sont produites lors des désinscriptions des alias et des listes de diffusion.'); + } + if ($user->type == 'xnet' && $hasSingleGroup && Post::has('accountDeletion')) { + XDB::execute('DELETE FROM acounts + WHERE uid = {?}', + $user->id()); + $page->trigSuccess('Ton compte a bien été supprimé.'); } $page->assign('is_member', is_member(true)); } @@ -818,6 +825,14 @@ 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); if (!Post::has('confirm')) { @@ -826,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); @@ -863,13 +900,17 @@ class XnetGrpModule extends PLModule { global $globals; - $page->changeTpl('xnetgrp/membres-edit.tpl'); - $user = User::getSilent($user); if (empty($user)) { return PL_NOT_FOUND; } + if (!$user->inGroup($globals->asso('id'))) { + pl_redirect('annuaire'); + } + + $page->changeTpl('xnetgrp/membres-edit.tpl'); + $mmlist = new MMList($user, $globals->asso('mail_domain')); if (Post::has('change')) { @@ -877,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); } @@ -894,6 +935,13 @@ class XnetGrpModule extends PLModule Post::t('full_name'), Post::t('directory_name'), Post::t('display_name'), (Post::t('sex') == 'male') ? 'male' : 'female', Post::t('email'), (Post::t('type') == 'xnet') ? 'xnet' : 'virtual', $user->id()); + // If user is of type xnet and new password is given. + if (!Post::blank('pwhash') && Post::t('type') == 'xnet') { + XDB::query('UPDATE accounts + SET password = {?} + WHERE uid = {?}', + Post::t('pwhash'), $user->id()); + } } else if (!$user->perms) { XDB::query('UPDATE accounts SET email = {?} @@ -980,6 +1028,8 @@ class XnetGrpModule extends PLModule } } + $page->addJsLink('password.js'); + $page->assign('onlyGroup', $user->hasSingleGroup()); $page->assign('user', $user); $page->assign('listes', $mmlist->get_lists($user->forlifeEmail())); $page->assign('alias', $user->emailAliases($globals->asso('mail_domain'), 'user', true));