{
$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;
S::assert_xsrf_token();
}
+ $hasSingleGroup = ($user->groupCount() == 1);
+
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));
}
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')) {
S::assert_xsrf_token();
}
+ $hasSingleGroup = ($user->groupCount() == 1);
+
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);
{
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(S::user(), $globals->asso('mail_domain'));
if (Post::has('change')) {
// 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);
}
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 = {?}
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
$res = XDB::rawFetchAllAssoc('SHOW COLUMNS FROM group_members LIKE \'position\'');
$positions = str_replace(array('enum(', ')', '\''), '', $res[0]['Type']);
+ $page->addJsLink('password.js');
+ $page->assign('onlyGroup', ($user->groupCount() == 1));
$page->assign('user', $user);
$page->assign('listes', $mmlist->get_lists($user->forlifeEmail()));
$page->assign('alias', $user->emailGroupAliases($globals->asso('mail_domain')));