ADD #143 (80%)
[cl7.git] / php / update_db.php
1 <?php # encoding:utf-8
2 /**
3 * Met à jour la base de données en fonction de la version courante de celle ci.
4 * Si des tables n'existes pas elles sont automatiquement créées.
5 */
6
7 include_once("connexion.php");
8
9 $connexion = new Connexion();
10
11 function creer_db()
12 {
13 pg_query("
14 CREATE TABLE config (
15 nom varchar(50) NOT NULL,
16 valeur varchar(255) NOT NULL,
17 PRIMARY KEY (nom)
18 );
19 ");
20 pg_query("
21 CREATE TABLE pizzas (
22 id serial NOT NULL,
23 nom varchar(40) NOT NULL,
24 composition varchar(255) NOT NULL,
25 prix smallint NOT NULL,
26 PRIMARY KEY (id)
27 );
28 ");
29 // participants.password est un hash calculé à l'aide de sha1().
30 pg_query("
31 CREATE TABLE participants (
32 id int NOT NULL,
33 pseudo varchar(50) DEFAULT NULL,
34 clan_nom varchar(30) DEFAULT NULL,
35 clan_tag varchar(10) DEFAULT NULL,
36 password char(40) DEFAULT NULL,
37 nom varchar(30) DEFAULT NULL,
38 prenom varchar(30) DEFAULT NULL,
39 age varchar(30) DEFAULT NULL,
40 e_mail varchar(50) DEFAULT NULL,
41 remarques varchar(255) DEFAULT NULL,
42 admin boolean NOT NULL default FALSE,
43 a_paye boolean NOT NULL default FALSE,
44 pizza int DEFAULT NULL,
45 pizza_paye boolean NOT NULL default FALSE,
46 PRIMARY KEY (id),
47 UNIQUE (pseudo),
48 FOREIGN KEY (pizza) REFERENCES pizzas (id) ON DELETE SET NULL ON UPDATE SET NULL
49 );
50 ");
51 pg_query("
52 CREATE TABLE jeux (
53 id serial NOT NULL,
54 participant_id int default NULL,
55 nom varchar(200) NOT NULL,
56 type varchar(100) DEFAULT NULL,
57 url varchar(200) DEFAULT NULL,
58 PRIMARY KEY (id),
59 UNIQUE (nom),
60 FOREIGN KEY (participant_id) REFERENCES participants (id) ON DELETE SET NULL ON UPDATE SET NULL
61 );
62 ");
63 pg_query("
64 CREATE TABLE jeux_choisis (
65 participant_id int NOT NULL,
66 jeu_id int NOT NULL,
67 PRIMARY KEY (participant_id, jeu_id),
68 FOREIGN KEY (participant_id) REFERENCES participants (id) ON DELETE CASCADE ON UPDATE CASCADE,
69 FOREIGN KEY (jeu_id) REFERENCES jeux (id) ON DELETE CASCADE ON UPDATE CASCADE
70 );
71 ");
72 pg_query("
73 CREATE TABLE periodes (
74 id serial NOT NULL,
75 nom varchar(200) NOT NULL,
76 nom_abrege varchar(20) NOT NULL DEFAULT '',
77 PRIMARY KEY (id)
78 );
79 ");
80 pg_query("
81 CREATE TABLE participations (
82 participant_id serial NOT NULL,
83 periode_id int NOT NULL,
84 PRIMARY KEY (participant_id, periode_id),
85 FOREIGN KEY (participant_id) REFERENCES participants (id) ON DELETE CASCADE ON UPDATE CASCADE,
86 FOREIGN KEY (periode_id) REFERENCES periodes (id) ON DELETE CASCADE ON UPDATE CASCADE
87 );
88 ");
89 }
90
91 function initialiser_db()
92 {
93 pg_query("INSERT INTO config (nom, valeur) VALUES ('version', 1)");
94
95 pg_query("INSERT INTO config (nom, valeur) VALUES ('cout_periode', '15')");
96 pg_query("INSERT INTO config (nom, valeur) VALUES ('cout_total', '40')");
97 pg_query("INSERT INTO config (nom, valeur) VALUES ('nb_max_participant', '25')");
98 pg_query("INSERT INTO config (nom, valeur) VALUES ('nb_votes_jeux', '3')");
99 pg_query("INSERT INTO config (nom, valeur) VALUES ('inscription_terminees', 'FALSE')");
100 pg_query("INSERT INTO config (nom, valeur) VALUES ('pizza_visible', 'FALSE')");
101 pg_query("INSERT INTO config (nom, valeur) VALUES ('pizza_peut_commander', 'TRUE')");
102
103 pg_query("INSERT INTO periodes (nom, nom_abrege) VALUES ('vendredi soir à samedi', 'v->s')");
104 pg_query("INSERT INTO periodes (nom, nom_abrege) VALUES ('samedi à dimanche', 's->d')");
105 pg_query("INSERT INTO periodes (nom, nom_abrege) VALUES ('dimanche à lundi', 'd->l')");
106 }
107
108 function update_db()
109 {
110 # si la table 'config' n'existe pas alors on suppose qu'aucune table n'existe
111 $version = 0;
112 $res = @pg_fetch_object(pg_query("SELECT valeur FROM config WHERE nom = 'version'"));
113 if (pg_result_status($res) != PGSQL_TUPLES_OK)
114 $version = $res->valeur;
115
116 if($version == 0)
117 {
118 echo "Création de la base de donnée, version = 1\n";
119 pg_query("BEGIN");
120 creer_db();
121 initialiser_db();
122 pg_query("COMMIT");
123 $version = 1;
124 }
125
126 # version 1 -> 2 (à utiliser pour une utilisation future)
127 /*
128 if ($version == 1)
129 {
130 pg_query("BEGIN");
131
132 # queries...
133 pg_query("UPDATE config SET valeur = '2' WHERE nom = 'version'");
134
135 pg_query("COMMIT");
136 }*/
137 }
138
139 update_db();
140
141 ?>