Membres::DROIT_AUCUN, 'connexion' => Membres::DROIT_ACCES, 'membres' => Membres::DROIT_ACCES, 'compta' => Membres::DROIT_ACCES, 'wiki' => Membres::DROIT_ACCES, 'config' => Membres::DROIT_AUCUN, ]; static public function getDroitsDefaut() { return $this->droits; } protected function _checkData(&$data) { $db = DB::getInstance(); if (!isset($data['nom']) || !trim($data['nom'])) { throw new UserException('Le nom de catégorie ne peut rester vide.'); } if (!empty($data['id_cotisation_obligatoire']) && !$db->simpleQuerySingle('SELECT 1 FROM cotisations WHERE id = ?;', false, (int)$data['id_cotisation_obligatoire'])) { throw new UserException('Numéro de cotisation inconnu.'); } if (isset($data['id_cotisation_obligatoire']) && empty($data['id_cotisation_obligatoire'])) { $data['id_cotisation_obligatoire'] = null; } } public function add($data) { $this->_checkData($data); if (!isset($data['description'])) { $data['description'] = ''; } foreach ($this->droits as $key=>$value) { if (!isset($data['droit_'.$key])) $data['droit_'.$key] = $value; else $data['droit_'.$key] = (int)$data['droit_'.$key]; } $db = DB::getInstance(); $db->simpleInsert('membres_categories', $data); return $db->lastInsertRowID(); } public function edit($id, $data) { $this->_checkData($data); foreach ($this->droits as $key=>$value) { if (isset($data['droit_'.$key])) $data['droit_'.$key] = (int)$data['droit_'.$key]; } if (!isset($data['cacher']) || $data['cacher'] != 1) $data['cacher'] = 0; $db = DB::getInstance(); return $db->simpleUpdate('membres_categories', $data, 'id = '.(int)$id); } public function get($id) { $db = DB::getInstance(); return $db->simpleQuerySingle('SELECT * FROM membres_categories WHERE id = ?;', true, (int) $id); } public function remove($id) { $db = DB::getInstance(); $config = Config::getInstance(); if ($id == $config->get('categorie_membres')) { throw new UserException('Il est interdit de supprimer la catégorie définie par défaut dans la configuration.'); } if ($db->simpleQuerySingle('SELECT 1 FROM membres WHERE id_categorie = ?;', false, (int)$id)) { throw new UserException('La catégorie contient encore des membres, il n\'est pas possible de la supprimer.'); } $db->simpleUpdate( 'wiki_pages', [ 'droit_lecture' => Wiki::LECTURE_NORMAL, 'droit_ecriture' => Wiki::ECRITURE_NORMAL, ], 'droit_lecture = '.(int)$id.' OR droit_ecriture = '.(int)$id ); return $db->simpleExec('DELETE FROM membres_categories WHERE id = ?;', (int) $id); } public function listSimple() { $db = DB::getInstance(); return $db->queryFetchAssoc('SELECT id, nom FROM membres_categories ORDER BY nom;'); } public function listComplete() { $db = DB::getInstance(); return $db->queryFetch('SELECT * FROM membres_categories ORDER BY nom;'); } public function listCompleteWithStats() { $db = DB::getInstance(); return $db->queryFetch('SELECT *, (SELECT COUNT(*) FROM membres WHERE id_categorie = membres_categories.id) AS nombre FROM membres_categories ORDER BY nom;'); } public function listHidden() { $db = DB::getInstance(); return $db->queryFetchAssoc('SELECT id, nom FROM membres_categories WHERE cacher = 1;'); } public function listNotHidden() { $db = DB::getInstance(); return $db->queryFetchAssoc('SELECT id, nom FROM membres_categories WHERE cacher = 0;'); } } ?>