Index: include/class.membres.php ================================================================== --- include/class.membres.php +++ include/class.membres.php @@ -243,13 +243,16 @@ { $champs = Config::getInstance()->get('champs_membres'); foreach ($champs->getAll() as $key=>$config) { - if (!empty($config['mandatory']) && $check_mandatory && (!isset($data[$key]) || !trim($data[$key]))) + if (!empty($config['mandatory']) && (!isset($data[$key]) || !trim($data[$key]))) { - throw new UserException('Le champ "' . $config['title'] . '" doit obligatoirement être renseigné.'); + if ($check_mandatory) + throw new UserException('Le champ "' . $config['title'] . '" doit obligatoirement être renseigné.'); + else + continue; } if ($config['type'] == 'email' && !filter_var($data[$key], FILTER_VALIDATE_EMAIL)) { throw new UserException('Adresse e-mail invalide dans le champ "' . $config['title'] . '".'); @@ -547,11 +550,11 @@ $date_verif = time(); if (!$date_membre) return false; - $echeance = new \DateTime($date_membre); + $echeance = new \DateTime('@' . $date_membre); $echeance->setTime(0, 0); $echeance->modify('+'.$duree_cotisation.' months'); if ($echeance->getTimestamp() < $date_verif) return round(($date_verif - $echeance->getTimestamp()) / 3600 / 24); Index: templates/admin/membres/modifier.tpl ================================================================== --- templates/admin/membres/modifier.tpl +++ templates/admin/membres/modifier.tpl @@ -13,51 +13,38 @@
Index: www/admin/membres/ajouter.php ================================================================== --- www/admin/membres/ajouter.php +++ www/admin/membres/ajouter.php @@ -41,11 +41,11 @@ foreach ($champs->getAll() as $key=>$config) { $data[$key] = utils::post($key); } - $id = $membres->add($data); + $id = $membres->add($data, ($user['droits']['membres'] == Membres::DROIT_ADMIN) ? false : true); utils::redirect('/admin/membres/fiche.php?id='.(int)$id); } catch (UserException $e) { Index: www/admin/membres/index.php ================================================================== --- www/admin/membres/index.php +++ www/admin/membres/index.php @@ -7,10 +7,11 @@ { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Membres_Categories; +$champs = $config->get('champs_membres'); $membres_cats = $cats->listSimple(); $membres_cats_cachees = $cats->listHidden(); $cat = (int) utils::get('cat') ?: 0; @@ -23,11 +24,11 @@ else { $cat_id = (int) $cat; } -$order = 'nom'; +$order = $champs->getFirst(); $desc = false; if (utils::get('o')) $order = utils::get('o'); @@ -35,11 +36,11 @@ $desc = true; $tpl->assign('order', $order); $tpl->assign('desc', $desc); -$fields = $config->get('champs_membres')->getListedFields(); +$fields = $champs->getListedFields(); $tpl->assign('champs', $fields); $tpl->assign('liste', $membres->listByCategory($cat_id, array_keys($fields), $page, $order, $desc)); $tpl->assign('total', $membres->countByCategory($cat_id)); Index: www/admin/membres/modifier.php ================================================================== --- www/admin/membres/modifier.php +++ www/admin/membres/modifier.php @@ -21,10 +21,11 @@ { throw new UserException("Ce membre n'existe pas."); } $cats = new Membres_Categories; +$champs = $config->get('champs_membres'); // Protection contre la modification des admins par des membres moins puissants $membre_cat = $cats->get($membre['id_categorie']); if (($membre_cat['droit_membres'] == Membres::DROIT_ADMIN) && ($user['droits']['membres'] < Membres::DROIT_ADMIN)) @@ -45,31 +46,24 @@ $error = 'La vérification ne correspond pas au mot de passe.'; } else { try { - $data = array( - 'nom' => utils::post('nom'), - 'email' => utils::post('email'), - 'passe' => utils::post('passe'), - 'telephone' => utils::post('telephone'), - 'code_postal' => utils::post('code_postal'), - 'adresse' => utils::post('adresse'), - 'ville' => utils::post('ville'), - 'pays' => utils::post('pays'), - 'date_naissance'=> utils::post('date_naissance'), - 'notes' => utils::post('notes'), - 'lettre_infos' => utils::post('lettre_infos'), - ); + $data = array(); + + foreach ($champs->getAll() as $key=>$config) + { + $data[$key] = utils::post($key); + } if ($user['droits']['membres'] == Membres::DROIT_ADMIN) { $data['id_categorie'] = utils::post('id_categorie'); $data['id'] = utils::post('id'); } - $membres->edit($id, $data, false); + $membres->edit($id, $data, ($user['droits']['membres'] == Membres::DROIT_ADMIN) ? false : true); utils::redirect('/admin/membres/fiche.php?id='.(int)$id); } catch (UserException $e) { @@ -78,20 +72,17 @@ } } $tpl->assign('error', $error); $tpl->assign('passphrase', utils::suggestPassword()); -$tpl->assign('obligatoires', $config->get('champs_obligatoires')); +$tpl->assign('champs', $champs->getAll()); $tpl->assign('membres_cats', $cats->listSimple()); $tpl->assign('current_cat', utils::post('id_categorie') ?: $membre['id_categorie']); -$tpl->assign('pays', utils::getCountryList()); -$tpl->assign('current_cc', utils::post('pays') ?: $membre['pays']); - $tpl->assign('can_change_id', $user['droits']['membres'] == Membres::DROIT_ADMIN); $tpl->assign('membre', $membre); $tpl->display('admin/membres/modifier.tpl'); ?> Index: www/admin/membres/recherche.php ================================================================== --- www/admin/membres/recherche.php +++ www/admin/membres/recherche.php @@ -11,10 +11,11 @@ $recherche = trim(utils::get('r')); $champ = trim(utils::get('c')); $champs = $config->get('champs_membres'); +// On détermine magiquement quel champ on recherche if (!$champ) { if (is_numeric(trim($recherche))) { $champ = 'id'; }