Index: src/include/lib/Garradin/Config.php
==================================================================
--- src/include/lib/Garradin/Config.php
+++ src/include/lib/Garradin/Config.php
@@ -8,15 +8,23 @@
protected $config = null;
protected $modified = [];
static protected $_instance = null;
+ /**
+ * Singleton simple
+ * @return Config
+ */
static public function getInstance()
{
return self::$_instance ?: self::$_instance = new Config;
}
+ /**
+ * Empêche de cloner l'objet
+ * @return void
+ */
private function __clone()
{
}
protected function __construct()
@@ -88,10 +96,11 @@
public function __destruct()
{
if (!empty($this->modified))
{
+ // FIXME: on devrait loguer/envoyer une erreur ici si on a modifié quelque chose sans le sauver
//echo '
Il y a des champs modifiés non sauvés dans '.__CLASS__.' !
';
}
}
public function save()
@@ -320,7 +329,5 @@
public function getConfig()
{
return $this->config;
}
}
-
-?>
ADDED src/include/lib/Garradin/Install.php
Index: src/include/lib/Garradin/Install.php
==================================================================
--- src/include/lib/Garradin/Install.php
+++ src/include/lib/Garradin/Install.php
@@ -0,0 +1,115 @@
+exec('BEGIN;');
+ $db->exec(file_get_contents(DB_SCHEMA));
+ $db->exec('END;');
+
+ // Configuration de base
+ // c'est dans Config::set que sont vérifiées les données utilisateur (renvoie UserException)
+ $config = Config::getInstance();
+ $config->set('nom_asso', $nom_asso);
+ $config->set('adresse_asso', $adresse_asso);
+ $config->set('email_asso', $email_asso);
+ $config->set('site_asso', WWW_URL);
+ $config->set('monnaie', '€');
+ $config->set('pays', 'FR');
+ $config->set('email_envoi_automatique', $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($nom_categorie),
+ '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' => $nom_membre,
+ 'email' => $email_membre,
+ 'passe' => $passe_membre,
+ 'pays' => 'FR',
+ ]);
+
+ // Création wiki
+ $page = Wiki::transformTitleToURI($nom_asso);
+ $config->set('accueil_wiki', $page);
+ $wiki = new Wiki;
+ $id_page = $wiki->create([
+ 'titre' => $nom_asso,
+ 'uri' => $page,
+ ]);
+
+ $wiki->editRevision($id_page, 0, [
+ 'id_auteur' => $id_membre,
+ 'contenu' => "Bienvenue dans le wiki de ".$nom_asso." !\n\nCliquez sur le bouton « éditer » pour modifier cette page.",
+ ]);
+
+ // Création page wiki connexion
+ $page = Wiki::transformTitleToURI('Bienvenue');
+ $config->set('accueil_connexion', $page);
+ $id_page = $wiki->create([
+ 'titre' => 'Bienvenue',
+ 'uri' => $page,
+ ]);
+
+ $wiki->editRevision($id_page, 0, [
+ 'id_auteur' => $id_membre,
+ 'contenu' => "Bienvenue dans l'administration de ".$nom_asso." !\n\n"
+ . "Utilisez le menu à gauche pour accéder aux différentes rubriques.",
+ ]);
+
+ // Mise en place compta
+ $comptes = new Compta\Comptes;
+ $comptes->importPlan();
+
+ $comptes = new Compta\Categories;
+ $comptes->importCategories();
+
+ $ex = new Compta\Exercices;
+ $ex->add([
+ 'libelle' => 'Premier exercice',
+ 'debut' => date('Y-01-01'),
+ 'fin' => date('Y-12-31')
+ ]);
+
+ return $config->save();
+ }
+}
Index: src/www/admin/install.php
==================================================================
--- src/www/admin/install.php
+++ src/www/admin/install.php
@@ -126,116 +126,15 @@
$error = 'La vérification ne correspond pas au mot de passe.';
}
else
{
try {
- $db = DB::getInstance(true);
-
- // Création de la base de données
- $db->exec('BEGIN;');
- $db->exec(file_get_contents(DB_SCHEMA));
- $db->exec('END;');
-
- // Configuration de base
- $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');
- $config->set('accueil_connexion', $page);
- $id_page = $wiki->create([
- 'titre' => 'Bienvenue',
- 'uri' => $page,
- ]);
-
- $wiki->editRevision($id_page, 0, [
- 'id_auteur' => $id_membre,
- 'contenu' => "Bienvenue dans l'administration de ".Utils::post('nom_asso')." !\n\n"
- . "Utilisez le menu à gauche pour accéder aux différentes rubriques.",
- ]);
-
- // Mise en place compta
- $comptes = new Compta\Comptes;
- $comptes->importPlan();
-
- $comptes = new Compta\Categories;
- $comptes->importCategories();
-
- $ex = new Compta\Exercices;
- $ex->add([
- 'libelle' => 'Premier exercice',
- 'debut' => date('Y-01-01'),
- 'fin' => date('Y-12-31')
- ]);
-
- $config->save();
-
- Utils::redirect('/admin/login.php');
+ Install::install(Utils::post('nom_asso'), Utils::post('adresse_asso'), Utils::post('email_asso'),
+ Utils::post('cat_membre'), Utils::post('nom_membre'), Utils::post('email_membre'), Utils::post('passe_membre'),
+ WWW_URL);
+
+ Utils::redirect('/admin/login.php');
}
catch (UserException $e)
{
@unlink(DB_FILE);