Artifact cc405b398e4c5fcf264ab1e292c1821d1a772ffc:


0000: 3c 3f 70 68 70 0a 6e 61 6d 65 73 70 61 63 65 20  <?php.namespace 
0010: 47 61 72 72 61 64 69 6e 3b 0a 0a 72 65 71 75 69  Garradin;..requi
0020: 72 65 5f 6f 6e 63 65 20 5f 5f 44 49 52 5f 5f 20  re_once __DIR__ 
0030: 2e 20 27 2f 5f 69 6e 63 2e 70 68 70 27 3b 0a 0a  . '/_inc.php';..
0040: 24 73 65 73 73 69 6f 6e 2d 3e 72 65 71 75 69 72  $session->requir
0050: 65 41 63 63 65 73 73 28 27 6d 65 6d 62 72 65 73  eAccess('membres
0060: 27 2c 20 4d 65 6d 62 72 65 73 3a 3a 44 52 4f 49  ', Membres::DROI
0070: 54 5f 45 43 52 49 54 55 52 45 29 3b 0a 0a 71 76  T_ECRITURE);..qv
0080: 28 5b 27 69 64 27 20 3d 3e 20 27 72 65 71 75 69  (['id' => 'requi
0090: 72 65 64 7c 6e 75 6d 65 72 69 63 27 5d 29 3b 0a  red|numeric']);.
00a0: 0a 24 69 64 20 3d 20 28 69 6e 74 29 20 71 67 28  .$id = (int) qg(
00b0: 27 69 64 27 29 3b 0a 0a 24 6d 65 6d 62 72 65 20  'id');..$membre 
00c0: 3d 20 24 6d 65 6d 62 72 65 73 2d 3e 67 65 74 28  = $membres->get(
00d0: 24 69 64 29 3b 0a 0a 69 66 20 28 21 24 6d 65 6d  $id);..if (!$mem
00e0: 62 72 65 29 0a 7b 0a 20 20 20 20 74 68 72 6f 77  bre).{.    throw
00f0: 20 6e 65 77 20 55 73 65 72 45 78 63 65 70 74 69   new UserExcepti
0100: 6f 6e 28 22 43 65 20 6d 65 6d 62 72 65 20 6e 27  on("Ce membre n'
0110: 65 78 69 73 74 65 20 70 61 73 2e 22 29 3b 0a 7d  existe pas.");.}
0120: 0a 0a 24 63 61 74 73 20 3d 20 6e 65 77 20 4d 65  ..$cats = new Me
0130: 6d 62 72 65 73 5c 43 61 74 65 67 6f 72 69 65 73  mbres\Categories
0140: 3b 0a 24 63 68 61 6d 70 73 20 3d 20 24 63 6f 6e  ;.$champs = $con
0150: 66 69 67 2d 3e 67 65 74 28 27 63 68 61 6d 70 73  fig->get('champs
0160: 5f 6d 65 6d 62 72 65 73 27 29 3b 0a 0a 2f 2f 20  _membres');..// 
0170: 50 72 6f 74 65 63 74 69 6f 6e 20 63 6f 6e 74 72  Protection contr
0180: 65 20 6c 61 20 6d 6f 64 69 66 69 63 61 74 69 6f  e la modificatio
0190: 6e 20 64 65 73 20 61 64 6d 69 6e 73 20 70 61 72  n des admins par
01a0: 20 64 65 73 20 6d 65 6d 62 72 65 73 20 6d 6f 69   des membres moi
01b0: 6e 73 20 70 75 69 73 73 61 6e 74 73 0a 24 6d 65  ns puissants.$me
01c0: 6d 62 72 65 5f 63 61 74 20 3d 20 24 63 61 74 73  mbre_cat = $cats
01d0: 2d 3e 67 65 74 28 24 6d 65 6d 62 72 65 2d 3e 69  ->get($membre->i
01e0: 64 5f 63 61 74 65 67 6f 72 69 65 29 3b 0a 0a 69  d_categorie);..i
01f0: 66 20 28 28 24 6d 65 6d 62 72 65 5f 63 61 74 2d  f (($membre_cat-
0200: 3e 64 72 6f 69 74 5f 6d 65 6d 62 72 65 73 20 3d  >droit_membres =
0210: 3d 20 4d 65 6d 62 72 65 73 3a 3a 44 52 4f 49 54  = Membres::DROIT
0220: 5f 41 44 4d 49 4e 29 0a 20 20 20 20 26 26 20 28  _ADMIN).    && (
0230: 24 75 73 65 72 2d 3e 64 72 6f 69 74 73 2d 3e 6d  $user->droits->m
0240: 65 6d 62 72 65 73 20 3c 20 4d 65 6d 62 72 65 73  embres < Membres
0250: 3a 3a 44 52 4f 49 54 5f 41 44 4d 49 4e 29 29 0a  ::DROIT_ADMIN)).
0260: 7b 0a 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20  {.    throw new 
0270: 55 73 65 72 45 78 63 65 70 74 69 6f 6e 28 22 53  UserException("S
0280: 65 75 6c 20 75 6e 20 6d 65 6d 62 72 65 20 61 64  eul un membre ad
0290: 6d 69 6e 20 70 65 75 74 20 6d 6f 64 69 66 69 65  min peut modifie
02a0: 72 20 75 6e 20 61 75 74 72 65 20 6d 65 6d 62 72  r un autre membr
02b0: 65 20 61 64 6d 69 6e 2e 22 29 3b 0a 7d 0a 0a 24  e admin.");.}..$
02c0: 65 72 72 6f 72 20 3d 20 66 61 6c 73 65 3b 0a 0a  error = false;..
02d0: 69 66 20 28 21 65 6d 70 74 79 28 24 5f 50 4f 53  if (!empty($_POS
02e0: 54 5b 27 73 61 76 65 27 5d 29 29 0a 7b 0a 20 20  T['save'])).{.  
02f0: 20 20 69 66 20 28 21 55 74 69 6c 73 3a 3a 43 53    if (!Utils::CS
0300: 52 46 5f 63 68 65 63 6b 28 27 65 64 69 74 5f 6d  RF_check('edit_m
0310: 65 6d 62 65 72 5f 27 2e 24 69 64 29 29 0a 20 20  ember_'.$id)).  
0320: 20 20 7b 0a 20 20 20 20 20 20 20 20 24 65 72 72    {.        $err
0330: 6f 72 20 3d 20 27 55 6e 65 20 65 72 72 65 75 72  or = 'Une erreur
0340: 20 65 73 74 20 73 75 72 76 65 6e 75 65 2c 20 6d   est survenue, m
0350: 65 72 63 69 20 64 65 20 72 65 6e 76 6f 79 65 72  erci de renvoyer
0360: 20 6c 65 20 66 6f 72 6d 75 6c 61 69 72 65 2e 27   le formulaire.'
0370: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65  ;.    }.    else
0380: 69 66 20 28 55 74 69 6c 73 3a 3a 70 6f 73 74 28  if (Utils::post(
0390: 27 70 61 73 73 65 27 29 20 21 3d 20 55 74 69 6c  'passe') != Util
03a0: 73 3a 3a 70 6f 73 74 28 27 72 65 70 61 73 73 65  s::post('repasse
03b0: 27 29 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  ')).    {.      
03c0: 20 20 24 65 72 72 6f 72 20 3d 20 27 4c 61 20 76    $error = 'La v
03d0: c3 a9 72 69 66 69 63 61 74 69 6f 6e 20 6e 65 20  ..rification ne 
03e0: 63 6f 72 72 65 73 70 6f 6e 64 20 70 61 73 20 61  correspond pas a
03f0: 75 20 6d 6f 74 20 64 65 20 70 61 73 73 65 2e 27  u mot de passe.'
0400: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65  ;.    }.    else
0410: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 74  .    {.        t
0420: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
0430: 20 24 64 61 74 61 20 3d 20 5b 5d 3b 0a 0a 20 20   $data = [];..  
0440: 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
0450: 68 20 28 24 63 68 61 6d 70 73 2d 3e 67 65 74 41  h ($champs->getA
0460: 6c 6c 28 29 20 61 73 20 24 6b 65 79 3d 3e 24 63  ll() as $key=>$c
0470: 6f 6e 66 69 67 29 0a 20 20 20 20 20 20 20 20 20  onfig).         
0480: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20     {.           
0490: 20 20 20 20 20 24 64 61 74 61 5b 24 6b 65 79 5d       $data[$key]
04a0: 20 3d 20 55 74 69 6c 73 3a 3a 70 6f 73 74 28 24   = Utils::post($
04b0: 6b 65 79 29 3b 0a 20 20 20 20 20 20 20 20 20 20  key);.          
04c0: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
04d0: 20 69 66 20 28 24 73 65 73 73 69 6f 6e 2d 3e 63   if ($session->c
04e0: 61 6e 41 63 63 65 73 73 28 27 6d 65 6d 62 72 65  anAccess('membre
04f0: 73 27 2c 20 4d 65 6d 62 72 65 73 3a 3a 44 52 4f  s', Membres::DRO
0500: 49 54 5f 41 44 4d 49 4e 29 20 26 26 20 24 75 73  IT_ADMIN) && $us
0510: 65 72 2d 3e 69 64 20 21 3d 20 24 6d 65 6d 62 72  er->id != $membr
0520: 65 2d 3e 69 64 29 0a 20 20 20 20 20 20 20 20 20  e->id).         
0530: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20     {.           
0540: 20 20 20 20 20 24 64 61 74 61 5b 27 69 64 5f 63       $data['id_c
0550: 61 74 65 67 6f 72 69 65 27 5d 20 3d 20 55 74 69  ategorie'] = Uti
0560: 6c 73 3a 3a 70 6f 73 74 28 27 69 64 5f 63 61 74  ls::post('id_cat
0570: 65 67 6f 72 69 65 27 29 3b 0a 20 20 20 20 20 20  egorie');.      
0580: 20 20 20 20 20 20 20 20 20 20 24 64 61 74 61 5b            $data[
0590: 27 69 64 27 5d 20 3d 20 55 74 69 6c 73 3a 3a 70  'id'] = Utils::p
05a0: 6f 73 74 28 27 69 64 27 29 3b 0a 20 20 20 20 20  ost('id');.     
05b0: 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20         }..      
05c0: 20 20 20 20 20 20 24 6d 65 6d 62 72 65 73 2d 3e        $membres->
05d0: 65 64 69 74 28 24 69 64 2c 20 24 64 61 74 61 29  edit($id, $data)
05e0: 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ;..            i
05f0: 66 20 28 69 73 73 65 74 28 24 64 61 74 61 5b 27  f (isset($data['
0600: 69 64 27 5d 29 20 26 26 20 24 64 61 74 61 5b 27  id']) && $data['
0610: 69 64 27 5d 20 21 3d 20 24 69 64 29 0a 20 20 20  id'] != $id).   
0620: 20 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20           {.     
0630: 20 20 20 20 20 20 20 20 20 20 20 24 69 64 20 3d             $id =
0640: 20 28 69 6e 74 29 24 64 61 74 61 5b 27 69 64 27   (int)$data['id'
0650: 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ];.            }
0660: 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 74  ..            Ut
0670: 69 6c 73 3a 3a 72 65 64 69 72 65 63 74 28 27 2f  ils::redirect('/
0680: 61 64 6d 69 6e 2f 6d 65 6d 62 72 65 73 2f 66 69  admin/membres/fi
0690: 63 68 65 2e 70 68 70 3f 69 64 3d 27 2e 28 69 6e  che.php?id='.(in
06a0: 74 29 24 69 64 29 3b 0a 20 20 20 20 20 20 20 20  t)$id);.        
06b0: 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20  }.        catch 
06c0: 28 55 73 65 72 45 78 63 65 70 74 69 6f 6e 20 24  (UserException $
06d0: 65 29 0a 20 20 20 20 20 20 20 20 7b 0a 20 20 20  e).        {.   
06e0: 20 20 20 20 20 20 20 20 20 24 65 72 72 6f 72 20           $error 
06f0: 3d 20 24 65 2d 3e 67 65 74 4d 65 73 73 61 67 65  = $e->getMessage
0700: 28 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  ();.        }.  
0710: 20 20 7d 0a 7d 0a 0a 24 74 70 6c 2d 3e 61 73 73    }.}..$tpl->ass
0720: 69 67 6e 28 27 65 72 72 6f 72 27 2c 20 24 65 72  ign('error', $er
0730: 72 6f 72 29 3b 0a 24 74 70 6c 2d 3e 61 73 73 69  ror);.$tpl->assi
0740: 67 6e 28 27 70 61 73 73 70 68 72 61 73 65 27 2c  gn('passphrase',
0750: 20 55 74 69 6c 73 3a 3a 73 75 67 67 65 73 74 50   Utils::suggestP
0760: 61 73 73 77 6f 72 64 28 29 29 3b 0a 24 74 70 6c  assword());.$tpl
0770: 2d 3e 61 73 73 69 67 6e 28 27 63 68 61 6d 70 73  ->assign('champs
0780: 27 2c 20 24 63 68 61 6d 70 73 2d 3e 67 65 74 41  ', $champs->getA
0790: 6c 6c 28 29 29 3b 0a 0a 24 74 70 6c 2d 3e 61 73  ll());..$tpl->as
07a0: 73 69 67 6e 28 27 6d 65 6d 62 72 65 73 5f 63 61  sign('membres_ca
07b0: 74 73 27 2c 20 24 63 61 74 73 2d 3e 6c 69 73 74  ts', $cats->list
07c0: 53 69 6d 70 6c 65 28 29 29 3b 0a 24 74 70 6c 2d  Simple());.$tpl-
07d0: 3e 61 73 73 69 67 6e 28 27 63 75 72 72 65 6e 74  >assign('current
07e0: 5f 63 61 74 27 2c 20 55 74 69 6c 73 3a 3a 70 6f  _cat', Utils::po
07f0: 73 74 28 27 69 64 5f 63 61 74 65 67 6f 72 69 65  st('id_categorie
0800: 27 29 20 3f 3a 20 24 6d 65 6d 62 72 65 2d 3e 69  ') ?: $membre->i
0810: 64 5f 63 61 74 65 67 6f 72 69 65 29 3b 0a 0a 24  d_categorie);..$
0820: 74 70 6c 2d 3e 61 73 73 69 67 6e 28 27 63 61 6e  tpl->assign('can
0830: 5f 63 68 61 6e 67 65 5f 69 64 27 2c 20 24 73 65  _change_id', $se
0840: 73 73 69 6f 6e 2d 3e 63 61 6e 41 63 63 65 73 73  ssion->canAccess
0850: 28 27 6d 65 6d 62 72 65 73 27 2c 20 4d 65 6d 62  ('membres', Memb
0860: 72 65 73 3a 3a 44 52 4f 49 54 5f 41 44 4d 49 4e  res::DROIT_ADMIN
0870: 29 29 3b 0a 0a 24 74 70 6c 2d 3e 61 73 73 69 67  ));..$tpl->assig
0880: 6e 28 27 6d 65 6d 62 72 65 27 2c 20 24 6d 65 6d  n('membre', $mem
0890: 62 72 65 29 3b 0a 0a 24 74 70 6c 2d 3e 64 69 73  bre);..$tpl->dis
08a0: 70 6c 61 79 28 27 61 64 6d 69 6e 2f 6d 65 6d 62  play('admin/memb
08b0: 72 65 73 2f 6d 6f 64 69 66 69 65 72 2e 74 70 6c  res/modifier.tpl
08c0: 27 29 3b 0a                                      ');.