4 require_once __DIR__
. '/_inc.php';
8 // Restauration de ce qui était en session
9 if ($champs = $membres->sessionGet('champs_membres'))
11 $champs = new Champs_Membres($champs);
15 // Il est nécessaire de créer une nouvelle instance ici, sinon
16 // l'enregistrement des modifs ne marchera pas car les deux instances seront identiques.
17 // Càd si on utilise directement l'instance de $config, elle sera modifiée directement
18 // du coup quand on essaiera de comparer si ça a changé ça comparera deux fois la même chose
19 // donc ça n'aura pas changé forcément.
20 $champs = new Champs_Membres($config->get('champs_membres'));
23 if (isset($_GET['ok']))
28 $debug = "_POST=".print_r($_POST, true);
30 if (!empty($_POST['save']) ||
!empty($_POST['add']) ||
!empty($_POST['review']) ||
!empty($_POST['reset']))
32 if (!utils
::CSRF_check('config_membres'))
34 $error = 'Une erreur est survenue, merci de renvoyer le formulaire.';
38 if (!empty($_POST['reset']))
40 $membres->sessionStore('champs_membres', null);
41 utils
::redirect('/admin/config/membres.php');
43 elseif (!empty($_POST['review']))
46 $nouveau_champs = utils
::post('champs');
48 foreach ($nouveau_champs as $key=>&$cfg)
50 $cfg['type'] = $champs->get($key, 'type');
53 $champs->setAll($nouveau_champs);
54 $membres->sessionStore('champs_membres', (string)$champs);
56 utils
::redirect('/admin/config/membres.php?review');
58 catch (UserException
$e)
60 $error = $e->getMessage();
63 elseif (!empty($_POST['add']))
66 if (utils
::post('preset'))
68 $presets = Champs_Membres
::listUnusedPresets($champs);
69 if (!array_key_exists(utils
::post('preset'), $presets))
71 throw new UserException('Le champ pré-défini demandé ne fait pas partie des champs disponibles.');
74 $champs->add(utils
::post('preset'), $presets[utils
::post('preset')]);
76 elseif (utils
::post('new'))
78 $presets = Champs_Membres
::importPresets();
79 $new = utils
::post('new');
81 if (array_key_exists($new, $presets))
83 throw new UserException('Le champ personnalisé ne peut avoir le même nom qu\'un champ pré-défini.');
87 'type' => utils
::post('new_type'),
88 'title' => utils
::post('new_title'),
93 if ($config['type'] == 'select' ||
$config['type'] == 'multiple')
95 $config['options'] = ['Première option'];
98 $champs->add($new, $config);
101 $membres->sessionStore('champs_membres', (string) $champs);
103 utils
::redirect('/admin/config/membres.php?added');
105 catch (UserException
$e)
107 $error = $e->getMessage();
110 elseif (!empty($_POST['save']))
114 $membres->sessionStore('champs_membres', null);
115 utils
::redirect('/admin/config/membres.php?ok');
117 catch (UserException
$e)
119 $error = $e->getMessage();
125 $tpl->assign('error', $error);
126 $tpl->assign('debug', $debug);
127 $tpl->assign('review', isset($_GET['review']) ?
true : false);
129 $types = $champs->getTypes();
131 $tpl->assign('champs', $champs->getAll());
132 $tpl->assign('types', $types);
133 $tpl->assign('presets', Champs_Membres
::listUnusedPresets($champs));
134 $tpl->assign('new', utils
::post('new'));
136 $tpl->register_modifier('get_type', function ($type) use ($types) {
137 return $types[$type];
140 $tpl->assign('csrf_name', utils
::CSRF_field_name('config_membres'));
141 $tpl->assign('csrf_value', utils
::CSRF_create('config_membres'));
143 $tpl->display('admin/config/membres.tpl');