$config = Config::getInstance(); $config->set('nom_asso', Utils::post('nom_asso')); $config->set('adresse_asso', Utils::post('adresse_asso')); $config->set('email_asso', Utils::post('email_asso')); $config->set('site_asso', WWW_URL); $config->set('monnaie', '€'); $config->set('pays', 'FR'); $config->set('email_envoi_automatique', Utils::post('email_asso')); $config->setVersion(garradin_version()); $champs = Membres\Champs::importInstall(); $champs->save(false); // Pas de copie car pas de table membres existante $config->set('champ_identifiant', 'email'); $config->set('champ_identite', 'nom'); // Création catégories $cats = new Membres\Categories(); $id = $cats->add(['nom' => 'Membres actifs']); $config->set('categorie_membres', $id); $id = $cats->add(['nom' => 'Anciens membres', 'droit_inscription' => Membres::DROIT_AUCUN, 'droit_wiki' => Membres::DROIT_AUCUN, 'droit_membres' => Membres::DROIT_AUCUN, 'droit_compta' => Membres::DROIT_AUCUN, 'droit_config' => Membres::DROIT_AUCUN, 'droit_connexion' => Membres::DROIT_AUCUN, 'cacher' => 1]); $id = $cats->add(['nom' => ucfirst(Utils::post('cat_membre')), 'droit_inscription' => Membres::DROIT_AUCUN, 'droit_wiki' => Membres::DROIT_ADMIN, 'droit_membres' => Membres::DROIT_ADMIN, 'droit_compta' => Membres::DROIT_ADMIN, 'droit_config' => Membres::DROIT_ADMIN]); // Création premier membre $membres = new Membres(); $id_membre = $membres->add(['id_categorie' => $id, 'nom' => Utils::post('nom_membre'), 'email' => Utils::post('email_membre'), 'passe' => Utils::post('passe_membre'), 'pays' => 'FR']); // Création wiki $page = Wiki::transformTitleToURI(Utils::post('nom_asso')); $config->set('accueil_wiki', $page); $wiki = new Wiki(); $id_page = $wiki->create(['titre' => Utils::post('nom_asso'), 'uri' => $page]); $wiki->editRevision($id_page, 0, ['id_auteur' => $id_membre, 'contenu' => "Bienvenue dans le wiki de " . Utils::post('nom_asso') . " !\n\nCliquez sur le bouton « éditer » pour modifier cette page."]); // Création page wiki connexion $page = Wiki::transformTitleToURI('Bienvenue');
try { $config->set('nom_asso', Utils::post('nom_asso')); $config->set('email_asso', Utils::post('email_asso')); $config->set('adresse_asso', Utils::post('adresse_asso')); $config->set('site_asso', Utils::post('site_asso')); $config->set('email_envoi_automatique', Utils::post('email_envoi_automatique')); $config->set('accueil_wiki', Utils::post('accueil_wiki')); $config->set('accueil_connexion', Utils::post('accueil_connexion')); $config->set('categorie_membres', Utils::post('categorie_membres')); $config->set('champ_identite', Utils::post('champ_identite')); $config->set('champ_identifiant', Utils::post('champ_identifiant')); $config->set('pays', Utils::post('pays')); $config->set('monnaie', Utils::post('monnaie')); $config->save(); Utils::redirect('/admin/config/?ok'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('garradin_version', garradin_version() . ' [' . (garradin_manifest() ?: 'release') . ']'); $tpl->assign('php_version', phpversion()); $v = \SQLite3::version(); $tpl->assign('sqlite_version', $v['versionString']); $tpl->assign('pays', Utils::getCountryList()); $cats = new Membres\Categories(); $tpl->assign('membres_cats', $cats->listSimple()); $champs_liste = array_merge(['id' => ['title' => 'Numéro unique', 'type' => 'number']], $config->get('champs_membres')->getList()); $tpl->assign('champs', $champs_liste); $tpl->display('admin/config/index.tpl');
<?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Membres\Categories(); if (empty($_GET['id']) || !is_numeric($_GET['id'])) { throw new UserException("Argument du numéro de catégorie manquant."); } $id = (int) $_GET['id']; $cat = $cats->get($id); if (!$cat) { throw new UserException("Cette catégorie n'existe pas."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('edit_cat_' . $id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $cats->edit($id, ['nom' => Utils::post('nom'), 'description' => Utils::post('description'), 'droit_wiki' => (int) Utils::post('droit_wiki'), 'droit_compta' => (int) Utils::post('droit_compta'), 'droit_config' => (int) Utils::post('droit_config'), 'droit_membres' => (int) Utils::post('droit_membres'), 'droit_connexion' => (int) Utils::post('droit_connexion'), 'droit_inscription' => (int) Utils::post('droit_inscription'), 'cacher' => (int) Utils::post('cacher'), 'id_cotisation_obligatoire' => (int) Utils::post('id_cotisation_obligatoire')]); if ($id == $user['id_categorie']) { $membres->updateSessionData(); } Utils::redirect('/admin/membres/categories.php'); } catch (UserException $e) { $error = $e->getMessage(); }
<?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $membre = $membres->getLoggedUser(); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $error = false; $tpl->assign('membre', $membre); $cats = new Membres\Categories(); $categorie = $cats->get($membre['id_categorie']); $tpl->assign('categorie', $categorie); $cotisations = new Membres\Cotisations(); if (!empty($categorie['id_cotisation_obligatoire'])) { $tpl->assign('cotisation', $cotisations->isMemberUpToDate($membre['id'], $categorie['id_cotisation_obligatoire'])); } else { $tpl->assign('cotisation', false); } $tpl->assign('nb_activites', $cotisations->countForMember($membre['id'])); $tpl->assign('cotisations', $cotisations->listForMember($membre['id'])); $tpl->assign('cotisations_membre', $cotisations->listSubscriptionsForMember($membre['id'])); $tpl->display('admin/mes_cotisations.tpl');
<?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ACCES) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } // Recherche de membre (pour ceux qui n'ont qu'un accès à la liste des membres) if (Utils::get('r')) { $recherche = trim(Utils::get('r')); $result = $membres->search($config->get('champ_identite'), $recherche); $tpl->assign('liste', $result); $tpl->assign('recherche', $recherche); } else { $cats = new Membres\Categories(); $champs = $config->get('champs_membres'); $membres_cats = $cats->listSimple(); $membres_cats_cachees = $cats->listHidden(); $cat_id = (int) Utils::get('cat') ?: 0; $page = (int) Utils::get('p') ?: 1; if ($cat_id) { if ($user['droits']['membres'] < Membres::DROIT_ECRITURE && array_key_exists($cat_id, $membres_cats_cachees)) { $cat_id = 0; } } if (!$cat_id) { $cat_id = array_diff(array_keys($membres_cats), array_keys($membres_cats_cachees)); } $order = $champs->getFirst(); $desc = false;
<?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Membres\Categories(); $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('new_cat')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $cats->add(['nom' => Utils::post('nom')]); Utils::redirect('/admin/membres/categories.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('liste', $cats->listCompleteWithStats()); $tpl->display('admin/membres/categories.tpl');
$champs->set($name, 'mandatory', true); } } foreach ($champs_modifiables_membre as $name) { if ($champs->get($name) !== null) { $champs->set($name, 'editable', true); } } $champs->save(); $config->set('champs_membres', $champs); $config->save(); // Suppression de l'ancienne config $db->exec('DELETE FROM config WHERE cle IN ("champs_obligatoires", "champs_modifiables_membre");'); } if (version_compare($v, '0.6.0-rc1', '<')) { $categories = new Membres\Categories(); $list = $categories->listComplete(); $db->exec('PRAGMA foreign_keys = OFF; BEGIN;'); // Mise à jour base de données $db->exec(file_get_contents(ROOT . '/include/data/0.6.0.sql')); $id_cat_cotisation = $db->querySingle('SELECT id FROM compta_categories WHERE compte = 756 LIMIT 1;'); // Conversion des cotisations de catégories en cotisations indépendantes foreach ($list as $cat) { $db->simpleInsert('cotisations', ['id_categorie_compta' => null, 'intitule' => $cat['nom'], 'montant' => (double) $cat['montant_cotisation'], 'duree' => round($cat['duree_cotisation'] * 30.44), 'description' => 'Créé automatiquement depuis les catégories de membres (version 0.5.x)']); $args = ['id_cotisation' => (int) $db->lastInsertRowId(), 'id_categorie' => (int) $cat['id']]; // import des dates de cotisation existantes comme paiements $db->simpleExec('INSERT INTO cotisations_membres (id_membre, id_cotisation, date) SELECT id, :id_cotisation, date(date_cotisation) FROM membres WHERE date_cotisation IS NOT NULL AND date_cotisation != \'\' AND id_categorie = :id_categorie;', $args); // Mais on ne crée pas d'écriture comptable, car elles existent probablement déjà
<?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Membres\Categories(); if (empty($_GET['id']) || !is_numeric($_GET['id'])) { throw new UserException("Argument du numéro de catégorie manquant."); } $id = (int) $_GET['id']; $cat = $cats->get($id); if (!$cat) { throw new UserException("Cette catégorie n'existe pas."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('delete_cat_' . $id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $cats->remove($id); Utils::redirect('/admin/membres/categories.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('cat', $cat);
namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } if (empty($_GET['id']) || !is_numeric($_GET['id'])) { throw new UserException("Argument du numéro de membre manquant."); } $id = (int) $_GET['id']; $membre = $membres->get($id); if (!$membre) { 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) { throw new UserException("Seul un membre admin peut modifier un autre membre admin."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('edit_member_' . $id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (Utils::post('passe') != Utils::post('repasse')) { $error = 'La vérification ne correspond pas au mot de passe.'; } else { try { $data = [];
} if (empty($_GET['id']) || !is_numeric($_GET['id'])) { throw new UserException("Argument du numéro de membre manquant."); } $id = (int) $_GET['id']; $membre = $membres->get($id); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('send_message_' . $id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (!Utils::post('sujet')) { $error = 'Le sujet ne peut rester vide.'; } elseif (!Utils::post('message')) { $error = 'Le message ne peut rester vide.'; } else { try { $membres->sendMessage($membre['email'], Utils::post('sujet'), Utils::post('message'), (bool) Utils::post('copie')); Utils::redirect('/admin/membres/?sent'); } catch (UserException $e) { $error = $e->getMessage(); } } } $cats = new Membres\Categories(); $tpl->assign('categorie', $cats->get($membre['id_categorie'])); $tpl->assign('membre', $membre); $tpl->assign('error', $error); $tpl->display('admin/membres/message.tpl');
<?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $cats = new Membres\Categories(); $categorie = $cats->get($user['id_categorie']); $tpl->assign('categorie', $categorie); $wiki = new Wiki(); $page = $wiki->getByURI($config->get('accueil_connexion')); $tpl->assign('page', $page); $cats = new Membres\Categories(); $categorie = $cats->get($user['id_categorie']); $cotisations = new Membres\Cotisations(); if (!empty($categorie['id_cotisation_obligatoire'])) { $tpl->assign('cotisation', $cotisations->isMemberUpToDate($user['id'], $categorie['id_cotisation_obligatoire'])); } else { $tpl->assign('cotisation', false); } $tpl->display('admin/index.tpl'); flush(); // Si pas de cron on réalise les tâches automatisées à ce moment-là // c'est pas idéal mais mieux que rien if (!USE_CRON) { require_once ROOT . '/cron.php'; }