Overview
Comment:Gestion à l'upgrade/install
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 911be190ea4e88727a71140d3dbc33fff34d7c8e
User & Date: bohwaz on 2012-12-23 13:10:06
Other Links: manifest | tags
Context
2012-12-29
02:37
Catégorie de recette "subventions" check-in: 768605f340 user: bohwaz tags: trunk
2012-12-23
13:10
Gestion à l'upgrade/install check-in: 911be190ea user: bohwaz tags: trunk
12:51
Début des champs modifiables et personnalisables check-in: b8cd499be0 user: bohwaz tags: trunk
Changes

Modified include/class.champs_membres.php from [9192892681] to [a1455f1902].

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
..
60
61
62
63
64
65
66






67
68
69
70
71
72
73
..
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
...
141
142
143
144
145
146
147
148

149


150



151

152
153
154
155
156
157
158
159
160
161
		return json_encode($this->champs);
	}

	static public function import()
	{
		$json = file_get_contents(GARRADIN_ROOT . '/include/data/champs_membres.json');
		$json = preg_replace('!/[*].*?[*]/!s', '', $json);
		$champs = new Champs_Membres($json);

		$config = Config::getInstance();
		$config->set('champs_membres', $champs);
		$config->save();
	}

	public function __construct($champs)
	{
		if ($champs instanceOf Champs_Membres)
		{
			$this->champs = $champs->getAll();
................................................................................
		return $this->champs[$key];
	}

	public function getAll()
	{
		return $this->champs;
	}







    public function setAll($champs)
    {
        if (!array_key_exists('email', $champs))
        {
            throw new UserException('Le champ E-Mail ne peut être supprimé des fiches membres.');
        }
................................................................................

    public function diff()
    {
    	$db = DB::getInstance();
    	//$config
    }

    public function save()
    {
    	$db = DB::getInstance();
    	$config = Config::getInstance();

    	// Champs à créer
    	$create = array(
    		'id INTEGER PRIMARY KEY, -- Numéro attribué automatiquement',
................................................................................

    	$last = count($create) - 1;
    	$create[$last] = str_replace(',', '', $create[$last]);

    	$create = 'CREATE TABLE membres_tmp (' . "\n\t" . implode("\n\t", $create) . "\n);";
    	$copy = 'INSERT INTO membres_tmp (' . implode(', ', $copy) . ') SELECT ' . implode(', ', $copy) . ' FROM membres;';

    	$db->exec('PRAGMA foreign_keys = OFF; BEGIN;');

    	$db->exec($create);


    	$db->exec($copy);



    	$db->exec('DROP TABLE membres; ALTER TABLE membres_tmp RENAME TO membres;');

    	$db->exec('END; PRAGMA foreign_keys = ON;');

    	$config->set('champs_membres', $this);
    	$config->save();

    	return true;
    }
}

?>







|
<
<
<
<







 







>
>
>
>
>
>







 







|







 







|
>

>
>
|
>
>
>
|
>
|









27
28
29
30
31
32
33
34




35
36
37
38
39
40
41
..
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
..
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
...
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
		return json_encode($this->champs);
	}

	static public function import()
	{
		$json = file_get_contents(GARRADIN_ROOT . '/include/data/champs_membres.json');
		$json = preg_replace('!/[*].*?[*]/!s', '', $json);
		return new Champs_Membres($json);




	}

	public function __construct($champs)
	{
		if ($champs instanceOf Champs_Membres)
		{
			$this->champs = $champs->getAll();
................................................................................
		return $this->champs[$key];
	}

	public function getAll()
	{
		return $this->champs;
	}

	public function set($champ, $key, $value)
	{
		$this->champs[$champs][$key] = $value;
		return true;
	}

    public function setAll($champs)
    {
        if (!array_key_exists('email', $champs))
        {
            throw new UserException('Le champ E-Mail ne peut être supprimé des fiches membres.');
        }
................................................................................

    public function diff()
    {
    	$db = DB::getInstance();
    	//$config
    }

    public function save($copy = true)
    {
    	$db = DB::getInstance();
    	$config = Config::getInstance();

    	// Champs à créer
    	$create = array(
    		'id INTEGER PRIMARY KEY, -- Numéro attribué automatiquement',
................................................................................

    	$last = count($create) - 1;
    	$create[$last] = str_replace(',', '', $create[$last]);

    	$create = 'CREATE TABLE membres_tmp (' . "\n\t" . implode("\n\t", $create) . "\n);";
    	$copy = 'INSERT INTO membres_tmp (' . implode(', ', $copy) . ') SELECT ' . implode(', ', $copy) . ' FROM membres;';

    	$db->exec('PRAGMA foreign_keys = OFF;');
    	$db->exec('BEGIN;');
    	$db->exec($create);
    	
    	if ($copy) {
    		$db->exec($copy);
    	}
    	
    	$db->exec('DROP TABLE membres;');
    	$db->exec('ALTER TABLE membres_tmp RENAME TO membres;');
    	$db->exec('END;');
    	$db->exec('PRAGMA foreign_keys = ON;');

    	$config->set('champs_membres', $this);
    	$config->save();

    	return true;
    }
}

?>

Modified www/admin/config/membres.php from [86c2b807a2] to [cff9032192].

5
6
7
8
9
10
11






12
13
14
15
16
17
18

if ($user['droits']['config'] < Membres::DROIT_ADMIN)
{
    throw new UserException("Vous n'avez pas le droit d'accéder à cette page.");
}

$error = false;






$champs = new Champs_Membres($config->get('champs_membres'));

if (isset($_GET['ok']))
{
    $error = 'OK';
}








>
>
>
>
>
>







5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

if ($user['droits']['config'] < Membres::DROIT_ADMIN)
{
    throw new UserException("Vous n'avez pas le droit d'accéder à cette page.");
}

$error = false;

// Il est nécessaire de créer une nouvelle instance ici, sinon
// l'enregistrement des modifs ne marchera pas car les deux instances seront identiques.
// Càd si on utilise directement l'instance de $config, elle sera modifiée directement
// du coup quand on essaiera de comparer si ça a changé ça comparera deux fois la même chose
// donc ça n'aura pas changé forcément.
$champs = new Champs_Membres($config->get('champs_membres'));

if (isset($_GET['ok']))
{
    $error = 'OK';
}

Modified www/admin/install.php from [91c497d948] to [45d33d3c32].

75
76
77
78
79
80
81
82
83
84
85
86





87
88
89
90
91
92
93
                $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', utils::post('site_asso'));
                $config->set('monnaie', '€');
                $config->set('pays', 'FR');
                $config->set('email_envoi_automatique', utils::post('email_asso'));
                $config->set('champs_obligatoires', array('passe', 'email'));
                $config->set('champs_modifiables_membre', array('passe', 'email', 'adresse',
                    'code_postal', 'ville', 'pays', 'telephone', 'date_naissance'));
                $config->setVersion(garradin_version());






                // Création catégories
                $cats = new Membres_Categories;
                $id = $cats->add(array(
                    'nom' => 'Membres actifs',
                    'montant_cotisation' => 10));
                $config->set('categorie_membres', $id);








<
<
<


>
>
>
>
>







75
76
77
78
79
80
81



82
83
84
85
86
87
88
89
90
91
92
93
94
95
                $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', utils::post('site_asso'));
                $config->set('monnaie', '€');
                $config->set('pays', 'FR');
                $config->set('email_envoi_automatique', utils::post('email_asso'));



                $config->setVersion(garradin_version());

                $champs = Champs_Membres::import();
                $champs->save(false); // Pas de copie car pas de table membres existante

                $config->set('champs_membres', $champs);

                // Création catégories
                $cats = new Membres_Categories;
                $id = $cats->add(array(
                    'nom' => 'Membres actifs',
                    'montant_cotisation' => 10));
                $config->set('categorie_membres', $id);

Modified www/admin/upgrade.php from [7e21d1bf49] to [9f60cf9682].

89
90
91
92
93
94
95
96

















97
98
99
100
101
102
103
    // Récupération de l'ancienne config
    $champs_modifiables_membre = $db->querySingle('SELECT valeur FROM config WHERE cle = "champs_modifiables_membre";');
    $champs_modifiables_membre = explode($champs_modifiables_membre);

    $champs_obligatoires = $db->querySingle('SELECT valeur FROM config WHERE cle = "champs_obligatoires";');
    $champs_obligatoires = explode($champs_obligatoires);

    // Application à la nouvelle config (TODO)


















    // Suppression de l'ancienne config
    $db->exec('DELETE FROM config WHERE cle IN ("champs_obligatoires", "champs_modifiables_membre");');
}

utils::clearCaches();








|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
    // Récupération de l'ancienne config
    $champs_modifiables_membre = $db->querySingle('SELECT valeur FROM config WHERE cle = "champs_modifiables_membre";');
    $champs_modifiables_membre = explode($champs_modifiables_membre);

    $champs_obligatoires = $db->querySingle('SELECT valeur FROM config WHERE cle = "champs_obligatoires";');
    $champs_obligatoires = explode($champs_obligatoires);

    // Import des champs membres par défaut
    $champs = Champs_Membres::import();

    // Application de l'ancienne config aux nouveaux champs membres
    foreach ($champs_obligatoires as $name)
    {
        $champs->set($name, 'mandatory', true);
    }

    foreach ($champs_modifiables_membre as $name)
    {
        $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");');
}

utils::clearCaches();