Merge remote branch 'origin/master' into xnet_accounts
authorStéphane Jacob <sj@m4x.org>
Mon, 9 Aug 2010 00:01:40 +0000 (02:01 +0200)
committerStéphane Jacob <sj@m4x.org>
Mon, 9 Aug 2010 00:01:40 +0000 (02:01 +0200)
1  2 
modules/xnet.php
templates/xnetgrp/membres-del.tpl

diff --combined modules/xnet.php
@@@ -33,7 -33,6 +33,7 @@@ class XnetModule extends PLModul
              'plan'        => $this->make_hook('plan',      AUTH_PUBLIC),
              'photo'       => $this->make_hook('photo',     AUTH_MDP),
              'autologin'   => $this->make_hook('autologin', AUTH_MDP),
 +            'edit'        => $this->make_hook('edit',      AUTH_MDP, 'user'),
  
              'Xnet'        => $this->make_wiki_hook(),
          );
          $page->assign('cat', $cat);
          $page->assign('dom', $dom);
  
-         $res  = XDB::query("SELECT  id,nom 
+         $res  = XDB::query("SELECT  id,nom
                                FROM  group_dom
                               WHERE  FIND_IN_SET({?}, cat)
                            ORDER BY  nom", $cat);
          echo '$.ajax({ url: "'.$url.'?forceXml=1", dataType: "xml", success: function(xml) { $("body",xml).insertBefore("body"); $("body:eq(1)").remove(); }});';
          exit;
      }
 +
 +    function handler_edit(&$page)
 +    {
 +        global $globals;
 +
 +        $user = S::user();
 +        if (empty($user)) {
 +            return PL_NOT_FOUND;
 +        }
 +        if ($user->type != 'xnet') {
 +            pl_redirect('index');
 +        }
 +
 +        $page->changeTpl('xnet/edit.tpl');
 +        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'));
 +                if ($forlife) {
 +                    pl_redirect('index');
 +                }
 +            }
 +
 +            // Update user info
 +            XDB::query('UPDATE  accounts
 +                           SET  full_name = {?}, directory_name = {?}, display_name = {?},
 +                                sex = {?}, email = {?}
 +                         WHERE  uid = {?}',
 +                       Post::t('full_name'), Post::t('directory_name'), Post::t('display_name'),
 +                       (Post::t('sex') == 'male') ? 'male' : 'female', Post::t('email'), $user->id());
 +            // If user is of type xnet and new password is given.
 +            if (!Post::blank('pwhash')) {
 +                XDB::query('UPDATE  accounts
 +                               SET  password = {?}
 +                             WHERE  uid = {?}',
 +                           Post::t('pwhash'), $user->id());
 +            }
 +            if (XDB::affectedRows()) {
 +                $page->trigSuccess('Données mises à jour.');
 +            }
 +        }
 +
 +        $page->addJsLink('password.js');
 +        $page->assign('user', $user);
 +    }
  }
  
  // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
@@@ -20,7 -20,7 +20,7 @@@
  {*                                                                        *}
  {**************************************************************************}
  
 -{if $smarty.post.confirm}
 +{if t($smarty.post.confirm)}
  
  <p class="descr">
  {if !$self}
@@@ -31,7 -31,7 +31,7 @@@
  </p>
  
  {else}
-  
  <h1>{$asso->nom}&nbsp;: gestion des membres</h1>
  
  <h2>
      {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->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 />
 +    <label><input type="checkbox" name="accountDeletion" checked="checked" />Supprimer mon compte.</label>
 +    {/if}
      {else}
      Êtes-vous sûr de vouloir supprimer {$user->fullName()} du groupe,
      lui retirer tous les droits associés à son statut de membre
      et le désabonner de toutes les listes de diffusion du groupe&nbsp;?
      {/if}
      </p>
 -    <input type='submit' name='confirm' value='Oui, je {if $self}me{else}le{/if} désinscris complètement du groupe !' />
 +    <input type="submit" name="confirm" value="Oui, je {if $self}me{else}le{/if} désinscris complètement du groupe !" />
    </div>
  </form>