- XDB::execute('INSERT IGNORE INTO group_members (uid, asso_id)
- VALUES ({?}, {?})',
- $user->id(), $globals->asso('id'));
+ // First check if the user used to be in this group.
+ XDB::rawExecute('DELETE FROM group_former_members
+ WHERE remember AND DATE_SUB(NOW(), INTERVAL 1 YEAR) > unsubsciption_date');
+ $former_member = XDB::fetchOneCell('SELECT remember
+ FROM group_former_members
+ WHERE uid = {?} AND asso_id = {?}',
+ $user->id(), $globals->asso('id'));
+ if ($former_member === 1) {
+ $page->trigError($user->fullName() . ' est un ancien membre du groupe qui ne souhaite pas y revenir. S\'il souhaite revenir dans le groupe, il faut qu\'il en fasse la demande sur la page d\'accueil du groupe.');
+ return;
+ } elseif (!is_null($former_member) && Post::i('force_continue') == 0) {
+ $page->trigWarning($user->fullName() . ' est un ancien membre du groupe qui s\'est récemment désinscrit. Malgré cela, si tu penses qu\'il souhaite revenir, cliquer sur « Ajouter » l\'ajoutera bien au groupe cette fois.');
+ $page->assign('force_continue', 1);
+ return;
+ }
+
+ Group::subscribe($globals->asso('id'), $user->id());