init
[garradin.git] / www / admin / membres / modifier.php
1 <?php
2 namespace Garradin;
3
4 require_once __DIR__ . '/../_inc.php';
5
6 if ($user['droits']['membres'] < Membres::DROIT_ECRITURE)
7 {
8 throw new UserException("Vous n'avez pas le droit d'accéder à cette page.");
9 }
10
11 if (empty($_GET['id']) || !is_numeric($_GET['id']))
12 {
13 throw new UserException("Argument du numéro de membre manquant.");
14 }
15
16 $id = (int) $_GET['id'];
17
18 $membre = $membres->get($id);
19
20 if (!$membre)
21 {
22 throw new UserException("Ce membre n'existe pas.");
23 }
24
25 $cats = new Membres_Categories;
26 $champs = $config->get('champs_membres');
27
28 // Protection contre la modification des admins par des membres moins puissants
29 $membre_cat = $cats->get($membre['id_categorie']);
30 if (($membre_cat['droit_membres'] == Membres::DROIT_ADMIN)
31 && ($user['droits']['membres'] < Membres::DROIT_ADMIN))
32 {
33 throw new UserException("Seul un membre admin peut modifier un autre membre admin.");
34 }
35
36 $error = false;
37
38 if (!empty($_POST['save']))
39 {
40 if (!utils::CSRF_check('edit_member_'.$id))
41 {
42 $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
43 }
44 elseif (utils::post('passe') != utils::post('repasse'))
45 {
46 $error = 'La vérification ne correspond pas au mot de passe.';
47 }
48 else
49 {
50 try {
51 $data = [];
52
53 foreach ($champs->getAll() as $key=>$config)
54 {
55 $data[$key] = utils::post($key);
56 }
57
58 if ($user['droits']['membres'] == Membres::DROIT_ADMIN)
59 {
60 $data['id_categorie'] = utils::post('id_categorie');
61 $data['id'] = utils::post('id');
62 }
63
64 $membres->edit($id, $data);
65
66 utils::redirect('/admin/membres/fiche.php?id='.(int)$id);
67 }
68 catch (UserException $e)
69 {
70 $error = $e->getMessage();
71 }
72 }
73 }
74
75 $tpl->assign('error', $error);
76 $tpl->assign('passphrase', utils::suggestPassword());
77 $tpl->assign('champs', $champs->getAll());
78
79 $tpl->assign('membres_cats', $cats->listSimple());
80 $tpl->assign('current_cat', utils::post('id_categorie') ?: $membre['id_categorie']);
81
82 $tpl->assign('can_change_id', $user['droits']['membres'] == Membres::DROIT_ADMIN);
83
84 $tpl->assign('membre', $membre);
85
86 $tpl->display('admin/membres/modifier.tpl');
87
88 ?>