5 class Membres_Categories
8 'inscription'=> Membres
::DROIT_AUCUN
,
9 'connexion' => Membres
::DROIT_ACCES
,
10 'membres' => Membres
::DROIT_ACCES
,
11 'compta' => Membres
::DROIT_ACCES
,
12 'wiki' => Membres
::DROIT_ACCES
,
13 'config' => Membres
::DROIT_AUCUN
,
16 static public function getDroitsDefaut()
21 protected function _checkData(&$data)
23 $db = DB
::getInstance();
25 if (!isset($data['nom']) ||
!trim($data['nom']))
27 throw new UserException('Le nom de catégorie ne peut rester vide.');
30 if (!empty($data['id_cotisation_obligatoire'])
31 && !$db->simpleQuerySingle('SELECT 1 FROM cotisations WHERE id = ?;',
32 false, (int)$data['id_cotisation_obligatoire']))
34 throw new UserException('Numéro de cotisation inconnu.');
37 if (isset($data['id_cotisation_obligatoire']) && empty($data['id_cotisation_obligatoire']))
39 $data['id_cotisation_obligatoire'] = null;
43 public function add($data)
45 $this->_checkData($data);
47 if (!isset($data['description']))
49 $data['description'] = '';
52 foreach ($this->droits
as $key=>$value)
54 if (!isset($data['droit_'.$key]))
55 $data['droit_'.$key] = $value;
57 $data['droit_'.$key] = (int)$data['droit_'.$key];
60 $db = DB
::getInstance();
61 $db->simpleInsert('membres_categories', $data);
63 return $db->lastInsertRowID();
66 public function edit($id, $data)
68 $this->_checkData($data);
70 foreach ($this->droits
as $key=>$value)
72 if (isset($data['droit_'.$key]))
73 $data['droit_'.$key] = (int)$data['droit_'.$key];
76 if (!isset($data['cacher']) ||
$data['cacher'] != 1)
79 $db = DB
::getInstance();
80 return $db->simpleUpdate('membres_categories', $data, 'id = '.(int)$id);
83 public function get($id)
85 $db = DB
::getInstance();
87 return $db->simpleQuerySingle('SELECT * FROM membres_categories WHERE id = ?;',
91 public function remove($id)
93 $db = DB
::getInstance();
94 $config = Config
::getInstance();
96 if ($id == $config->get('categorie_membres'))
98 throw new UserException('Il est interdit de supprimer la catégorie définie par défaut dans la configuration.');
101 if ($db->simpleQuerySingle('SELECT 1 FROM membres WHERE id_categorie = ?;', false, (int)$id))
103 throw new UserException('La catégorie contient encore des membres, il n\'est pas possible de la supprimer.');
109 'droit_lecture' => Wiki
::LECTURE_NORMAL
,
110 'droit_ecriture' => Wiki
::ECRITURE_NORMAL
,
112 'droit_lecture = '.(int)$id.' OR droit_ecriture = '.(int)$id
115 return $db->simpleExec('DELETE FROM membres_categories WHERE id = ?;', (int) $id);
118 public function listSimple()
120 $db = DB
::getInstance();
121 return $db->queryFetchAssoc('SELECT id, nom FROM membres_categories ORDER BY nom;');
124 public function listComplete()
126 $db = DB
::getInstance();
127 return $db->queryFetch('SELECT * FROM membres_categories ORDER BY nom;');
130 public function listCompleteWithStats()
132 $db = DB
::getInstance();
133 return $db->queryFetch('SELECT *, (SELECT COUNT(*) FROM membres WHERE id_categorie = membres_categories.id) AS nombre FROM membres_categories ORDER BY nom;');
137 public function listHidden()
139 $db = DB
::getInstance();
140 return $db->queryFetchAssoc('SELECT id, nom FROM membres_categories WHERE cacher = 1;');
143 public function listNotHidden()
145 $db = DB
::getInstance();
146 return $db->queryFetchAssoc('SELECT id, nom FROM membres_categories WHERE cacher = 0;');