init
[garradin.git] / www / admin / membres / recherche.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 $recherche = trim(utils::get('r'));
12 $champ = trim(utils::get('c'));
13
14 $champs = $config->get('champs_membres');
15
16 $auto = false;
17
18 // On détermine magiquement quel champ on recherche
19 if (!$champ)
20 {
21 $auto = true;
22
23 if (is_numeric(trim($recherche))) {
24 $champ = 'id';
25 }
26 elseif (strpos($recherche, '@') !== false) {
27 $champ = 'email';
28 }
29 else {
30 $champ = $config->get('champ_identite');
31 }
32 }
33 else
34 {
35 if ($champ != 'id' && !$champs->get($champ))
36 {
37 throw new UserException('Le champ demandé n\'existe pas.');
38 }
39 }
40
41 if ($recherche != '')
42 {
43 $result = $membres->search($champ, $recherche);
44
45 if (count($result) == 1 && $auto)
46 {
47 utils::redirect('/admin/membres/fiche.php?id=' . (int)$result[0]['id']);
48 }
49 }
50
51 $champs_liste = $champs->getList();
52
53 $champs_liste = array_merge(
54 ['id' => ['title' => 'Numéro unique', 'type' => 'number']],
55 $champs_liste
56 );
57
58 $champs_entete = $champs->getListedFields();
59
60 if (!array_key_exists($champ, $champs_entete))
61 {
62 $champs_entete = array_merge(
63 [$champ => $champs_liste[$champ]],
64 $champs_entete
65 );
66 }
67
68 $tpl->assign('champs_entete', $champs_entete);
69 $tpl->assign('champs_liste', $champs_liste);
70 $tpl->assign('champ', $champ);
71
72 if ($recherche != '')
73 {
74 $tpl->assign('liste', $result);
75 }
76
77 $tpl->assign('recherche', $recherche);
78
79 $tpl->display('admin/membres/recherche.tpl');
80
81 ?>