Allows xnet to delete her account if she has not left.
authorStéphane Jacob <sj@m4x.org>
Sun, 8 Aug 2010 15:58:27 +0000 (17:58 +0200)
committerStéphane Jacob <sj@m4x.org>
Sun, 8 Aug 2010 15:58:27 +0000 (17:58 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
classes/user.php
modules/xnet.php
modules/xnetgrp.php
templates/xnet/edit.tpl
templates/xnetgrp/membres-del.tpl

index cc2404a..b503dfe 100644 (file)
@@ -586,13 +586,12 @@ class User extends PlUser
                                   $this->id());
     }
 
-    public function hasSingleGroup()
+    public function groupCount()
     {
-        $groupNb = XDB::fetchOneCell('SELECT  COUNT(DISTINCT(asso_id))
-                                        FROM  group_members
-                                       WHERE  uid = {?}',
-                                     $this->id());
-        return ($groupNb == 1);
+        return XDB::fetchOneCell('SELECT  COUNT(DISTINCT(asso_id))
+                                    FROM  group_members
+                                   WHERE  uid = {?}',
+                                 $this->id());
     }
 
     public function inGroup($asso_id)
index beb375c..eac7a2e 100644 (file)
@@ -238,6 +238,13 @@ class XnetModule extends PLModule
         if (Post::has('change')) {
             S::assert_xsrf_token();
 
+            if ($user->groupCount() == 0 && Post::t('delete') == 'OUI') {
+                XDB::execute('DELETE FROM  accounts
+                                    WHERE  uid = {?}',
+                             $user->id());
+                pl_redirect('index');
+            }
+
             // Convert user status to X
             if (!Post::blank('login_X')) {
                 $forlife = $this->changeLogin($page, $user, Post::t('login_X'));
index d1b1264..bce331c 100644 (file)
@@ -802,7 +802,7 @@ class XnetGrpModule extends PLModule
             S::assert_xsrf_token();
         }
 
-        $hasSingleGroup = $user->hasSingleGroup();
+        $hasSingleGroup = ($user->groupCount() == 1);
 
         if ($this->unsubscribe($user)) {
             $page->trigSuccess('Tu as été désinscrit du groupe avec succès.');
@@ -841,7 +841,7 @@ class XnetGrpModule extends PLModule
             S::assert_xsrf_token();
         }
 
-        $hasSingleGroup = $user->hasSingleGroup();
+        $hasSingleGroup = ($user->groupCount() == 1);
 
         if ($this->unsubscribe($user)) {
             $page->trigSuccess("{$user->fullName()} a été désinscrit du groupe&nbsp;!");
@@ -1029,7 +1029,7 @@ class XnetGrpModule extends PLModule
         }
 
         $page->addJsLink('password.js');
-        $page->assign('onlyGroup', $user->hasSingleGroup());
+        $page->assign('onlyGroup', ($user->groupCount() == 1));
         $page->assign('user', $user);
         $page->assign('listes', $mmlist->get_lists($user->forlifeEmail()));
         $page->assign('alias', $user->emailAliases($globals->asso('mail_domain'), 'user', true));
index 4f44cc9..f00c1e7 100644 (file)
       </td>
     </tr>
   </table>
+  {if $user->groupCount() eq 0}
+  <p>
+    Supprimer mon compte&nbsp;:&nbsp;<input type="text" name="delete" value="NON" size="3" maxlength="3" /><br />
+    <small>(Écrire « OUI » en majuscule pour que la suppression soit prise en compte.)</small>
+  </p>
+  {/if}
 
   <div class="center">
     <br />
index 0b29f52..6d926ab 100644 (file)
@@ -46,7 +46,7 @@
     {if $self}
     Êtes-vous sûr de vouloir vous désinscrire du groupe {$asso->nom} et de toutes
     les listes de diffusion associées&nbsp;?
-    {if $user->type eq 'xnet' && $user->hasSingleGroup()}
+    {if $user->type eq 'xnet' && $user->groupCount() eq 1}
     <br />C'est le seul groupe auquel tu es actuellement inscrit sur polytechnique.net.
     Si, malgré cela, tu souhaites garder ton accès à Polytechnique.net, décoche la case
     ci-dessous.<br />