예제 #1
0
파일: install.php 프로젝트: kd2org/garradin
 $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');
예제 #2
0
파일: index.php 프로젝트: kd2org/garradin
        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');
예제 #3
0
<?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();
        }
예제 #4
0
<?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');
예제 #5
0
파일: index.php 프로젝트: kd2org/garradin
<?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;
예제 #6
0
<?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');
예제 #7
0
파일: upgrade.php 프로젝트: kd2org/garradin
            $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à
예제 #8
0
<?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);
예제 #9
0
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 = [];
예제 #10
0
파일: message.php 프로젝트: kd2org/garradin
}
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');
예제 #11
0
파일: index.php 프로젝트: kd2org/garradin
<?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';
}