Subversion Repositories eFlore/Applications.cel

Rev

Rev 1110 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1110 Rev 1267
1
<?php
1
<?php
2
 
2
 
3
/**
3
/**
4
 
4
 
5
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
5
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
6
 
6
 
7
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
7
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
8
 respectant les principes de diffusion des logiciels libres. Vous pouvez
8
 respectant les principes de diffusion des logiciels libres. Vous pouvez
9
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
9
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
10
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
10
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
11
 sur le site "http://www.cecill.info".
11
 sur le site "http://www.cecill.info".
12
 En contrepartie de l'accessibilit? au code source et des droits de copie,
12
 En contrepartie de l'accessibilit? au code source et des droits de copie,
13
 de modification et de redistribution accord?s par cette licence, il n'est
13
 de modification et de redistribution accord?s par cette licence, il n'est
14
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
14
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
15
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
15
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
16
 titulaire des droits patrimoniaux et les conc?dants successifs.
16
 titulaire des droits patrimoniaux et les conc?dants successifs.
17
 
17
 
18
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
18
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
19
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
19
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
20
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
20
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
21
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
21
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
22
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
22
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
23
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
23
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
24
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
24
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
25
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
25
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
26
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
26
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
27
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
27
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
28
 
28
 
29
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
29
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
30
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
30
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
31
 termes.
31
 termes.
32
 
32
 
33
 */
33
 */
34
 
34
 
35
 
35
 
36
// in : utf8
36
// in : utf8
37
// out : utf8
37
// out : utf8
38
/*
38
/*
39
 * InventoryKeyWordList.php
39
 * InventoryKeyWordList.php
40
 *
40
 *
41
 * Cas d'utilisation :
41
 * Cas d'utilisation :
42
 * Service recherche et modifie l'arbre des mots cl�s associ�s � un id
42
 * Service recherche et modifie l'arbre des mots cl�s associ�s � un id
43
 *
43
 *
44
 * 1: Le service recoit un mot cl� � ajouter � l'arbre
44
 * 1: Le service recoit un mot cl� � ajouter � l'arbre
45
 * 2: Le service recherche l'arbre ou sous arbre correspondant au crit�res demand�
45
 * 2: Le service recherche l'arbre ou sous arbre correspondant au crit�res demand�
46
 * 3: Le service renvoie l'arbre au format json
46
 * 3: Le service renvoie l'arbre au format json
47
 */
47
 */
48
 
48
 
49
 Class InventoryKeyWordList extends DBAccessor {
49
 Class InventoryKeyWordList extends DBAccessor {
50
 
50
 
51
	var $config ;
51
	var $config ;
52
 
52
 
53
	protected $suffix = "";
53
	protected $suffix = "";
54
 
54
 
55
	function InventoryKeyWordList($config) {
55
	function InventoryKeyWordList($config) {
56
 
56
 
57
		$this->config=$config;
57
		$this->config=$config;
58
	}
58
	}
59
 
59
 
60
	function verifierPresenceRacine($id)
60
	function verifierPresenceRacine($id)
61
	{
61
	{
62
		$DB=$this->connectDB($this->config,'cel_db');
62
		$DB=$this->connectDB($this->config,'cel_db');
63
 
63
 
64
		$query = 'SELECT COUNT(*) FROM cel_mots_cles'.$this->suffix.' WHERE cmc_id_proprietaire = "'.$DB->escapeSimple($id).'"' ;
64
		$query = 'SELECT COUNT(*) FROM cel_mots_cles'.$this->suffix.' WHERE cmc_id_proprietaire = "'.$DB->escapeSimple($id).'"' ;
65
		$res =& $DB->query($query);
65
		$res =& $DB->query($query);
66
 
66
 
67
		if (PEAR::isError($res)) {
67
		if (PEAR::isError($res)) {
68
 
68
 
69
                	die($res->getMessage());
69
                	die($res->getMessage());
70
                }
70
                }
71
		else
71
		else
72
		{
72
		{
73
			$valeurs = $res->fetchrow(DB_FETCHMODE_ORDERED) ;
73
			$valeurs = $res->fetchrow(DB_FETCHMODE_ORDERED) ;
74
 
74
 
75
			switch ($this->suffix) {
75
			switch ($this->suffix) {
76
				case "_obs":
76
				case "_obs":
77
					$nom_racine = 'Projets';
77
					$nom_racine = 'Projets';
78
					$id_racine = 'racine_obs';
78
					$id_racine = 'racine_obs';
79
				break;
79
				break;
80
 
80
 
81
				case "_images":
81
				case "_images":
82
					$nom_racine = 'Mots clés';
82
					$nom_racine = 'Mots clés';
83
					$id_racine = 'racine';
83
					$id_racine = 'racine';
84
				break;
84
				break;
85
 
85
 
86
				default:
86
				default:
87
					$nom_racine = $this->suffix;
87
					$nom_racine = $this->suffix;
88
					$id_racine = $this->suffix;
88
					$id_racine = $this->suffix;
89
			}
89
			}
90
 
90
 
91
			if($valeurs[0] == 0)
91
			if($valeurs[0] == 0)
92
			{
92
			{
93
				$query = 'INSERT INTO cel_mots_cles'.$this->suffix.' VALUES ("'.$nom_racine.'",1,2,"'.$id_racine.'","'.$id_racine.'","'.$DB->escapeSimple($id).'","",0) ' ;
93
				$query = 'INSERT INTO cel_mots_cles'.$this->suffix.' VALUES ("'.$nom_racine.'",1,2,"'.$id_racine.'","'.$id_racine.'","'.$DB->escapeSimple($id).'","",0) ' ;
94
				$res =& $DB->query($query);
94
				$res =& $DB->query($query);
95
 
95
 
96
				if (PEAR::isError($res)) {
96
				if (PEAR::isError($res)) {
97
 
97
 
98
					die($res->getMessage());
98
					die($res->getMessage());
99
				}
99
				}
100
			}
100
			}
101
		}
101
		}
102
	}
102
	}
103
 
103
 
104
	function desactiverAutoCommitEtCommencerTransaction()
104
	function desactiverAutoCommitEtCommencerTransaction()
105
	{
105
	{
106
		$DB=$this->connectDB($this->config,'cel_db');
106
		$DB=$this->connectDB($this->config,'cel_db');
107
 
107
 
108
		// desactive l'autocommit le temps de la maniulation de l'arbre
108
		// desactive l'autocommit le temps de la maniulation de l'arbre
109
		$query = "SET AUTOCOMMIT = 0" ;
109
		$query = "SET AUTOCOMMIT = 0" ;
110
		$res =& $DB->query($query);
110
		$res =& $DB->query($query);
111
 
111
 
112
		// et debute une nouvelle transaction
112
		// et debute une nouvelle transaction
113
		$query = "BEGIN " ;
113
		$query = "BEGIN " ;
114
		$res =& $DB->query($query);
114
		$res =& $DB->query($query);
115
	}
115
	}
116
 
116
 
117
	function reactiverAutoCommitEtCompleterTransaction()
117
	function reactiverAutoCommitEtCompleterTransaction()
118
	{
118
	{
119
		$DB=$this->connectDB($this->config,'cel_db');
119
		$DB=$this->connectDB($this->config,'cel_db');
120
 
120
 
121
		// complete la transaction
121
		// complete la transaction
122
		$query = "COMMIT " ;
122
		$query = "COMMIT " ;
123
		$res =& $DB->query($query);
123
		$res =& $DB->query($query);
124
 
124
 
125
		// reactive l'autocommit le temps de la maniulation de l'arbre
125
		// reactive l'autocommit le temps de la maniulation de l'arbre
126
		$query = "SET AUTOCOMMIT = 1" ;
126
		$query = "SET AUTOCOMMIT = 1" ;
127
		$res =& $DB->query($query);
127
		$res =& $DB->query($query);
128
 
128
 
129
		echo "OK" ;
129
		echo "OK" ;
130
	}
130
	}
131
 
131
 
132
	function reactiverAutoCommitEtAnnulerTransaction()
132
	function reactiverAutoCommitEtAnnulerTransaction()
133
	{
133
	{
134
		$DB=$this->connectDB($this->config,'cel_db');
134
		$DB=$this->connectDB($this->config,'cel_db');
135
 
135
 
136
		// annule la transaction
136
		// annule la transaction
137
		$query = "ROLLBACK " ;
137
		$query = "ROLLBACK " ;
138
		$res =& $DB->query($query);
138
		$res =& $DB->query($query);
139
 
139
 
140
		// reactive l'autocommit le temps de la maniulation de l'arbre
140
		// reactive l'autocommit le temps de la maniulation de l'arbre
141
		$query = "SET AUTOCOMMIT = 1" ;
141
		$query = "SET AUTOCOMMIT = 1" ;
142
		$res =& $DB->query($query);
142
		$res =& $DB->query($query);
143
 
143
 
144
		echo "ERROR" ;
144
		echo "ERROR" ;
145
	}
145
	}
146
 
146
 
147
	// renvoie les bornes d'un noeud de l'arbre des mots cl�s
147
	// renvoie les bornes d'un noeud de l'arbre des mots cl�s
148
	function calculerBornesEtNiveau($id_mot_cle,$id_utilisateur)
148
	function calculerBornesEtNiveau($id_mot_cle,$id_utilisateur)
149
	{
149
	{
150
		$DB=$this->connectDB($this->config,'cel_db');
150
		$DB=$this->connectDB($this->config,'cel_db');
151
 
151
 
152
		$query = 'SELECT cmc_bd, cmc_bg, cmc_niveau FROM cel_mots_cles'.$this->suffix.' WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
152
		$query = 'SELECT cmc_bd, cmc_bg, cmc_niveau FROM cel_mots_cles'.$this->suffix.' WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
153
 
153
 
154
		$res =& $DB->query($query);
154
		$res =& $DB->query($query);
155
                if (PEAR::isError($res)) {
155
                if (PEAR::isError($res)) {
156
 
156
 
157
                	die($res->getMessage());
157
                	die($res->getMessage());
158
                }
158
                }
159
 
159
 
160
		$results = array() ;
160
		$results = array() ;
161
		$valeurs = $res->fetchrow(DB_FETCHMODE_ASSOC) ;
161
		$valeurs = $res->fetchrow(DB_FETCHMODE_ASSOC) ;
162
 
162
 
163
 
163
 
164
		return $valeurs ;
164
		return $valeurs ;
165
 
165
 
166
	}
166
	}
167
 
167
 
168
	// decale les bornes de deux pour inserer un nouvel element
168
	// decale les bornes de deux pour inserer un nouvel element
169
	function decalerBornesPlusDeux($valeur,$id_utilisateur)
169
	function decalerBornesPlusDeux($valeur,$id_utilisateur)
170
	{
170
	{
171
		$DB=$this->connectDB($this->config,'cel_db');
171
		$DB=$this->connectDB($this->config,'cel_db');
172
 
172
 
173
		// decalage borne droite
173
		// decalage borne droite
174
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bd = cmc_bd + 2 WHERE cmc_bd >=  "'.$DB->escapeSimple($valeur).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
174
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bd = cmc_bd + 2 WHERE cmc_bd >=  "'.$DB->escapeSimple($valeur).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
175
		$res =& $DB->query($query);
175
		$res =& $DB->query($query);
176
                if (PEAR::isError($res)) {
176
                if (PEAR::isError($res)) {
177
 
177
 
178
                	die($res->getMessage());
178
                	die($res->getMessage());
179
			$reussi_1 = false ;
179
			$reussi_1 = false ;
180
                }
180
                }
181
		else
181
		else
182
		{
182
		{
183
			$reussi_1 = true ;
183
			$reussi_1 = true ;
184
		}
184
		}
185
 
185
 
186
		// decalage borne gauche
186
		// decalage borne gauche
187
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bg = cmc_bg + 2 WHERE cmc_bg >=  "'.$DB->escapeSimple($valeur).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
187
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bg = cmc_bg + 2 WHERE cmc_bg >=  "'.$DB->escapeSimple($valeur).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
188
		$res =& $DB->query($query);
188
		$res =& $DB->query($query);
189
                  if (PEAR::isError($res)) {
189
                  if (PEAR::isError($res)) {
190
 
190
 
191
                	die($res->getMessage());
191
                	die($res->getMessage());
192
			$reussi_2 = false ;
192
			$reussi_2 = false ;
193
                }
193
                }
194
		else
194
		else
195
		{
195
		{
196
			$reussi_2 = true ;
196
			$reussi_2 = true ;
197
		}
197
		}
198
 
198
 
199
		$reussi = $reussi_1 && $reussi_2  ;
199
		$reussi = $reussi_1 && $reussi_2  ;
200
 
200
 
201
		return $reussi ;
201
		return $reussi ;
202
	}
202
	}
203
 
203
 
204
	// decale les bornes d'un intervalle negatif donne (pour la suppression d'un sous arbre)
204
	// decale les bornes d'un intervalle negatif donne (pour la suppression d'un sous arbre)
205
	function decalerBornesMoinsIntervalle($bg, $bd,$id_utilisateur)
205
	function decalerBornesMoinsIntervalle($bg, $bd,$id_utilisateur)
206
	{
206
	{
207
		$DB=$this->connectDB($this->config,'cel_db');
207
		$DB=$this->connectDB($this->config,'cel_db');
208
 
208
 
209
 
209
 
210
		$decalage = $bd - $bg + 1 ;
210
		$decalage = $bd - $bg + 1 ;
211
 
211
 
212
		// decalage borne droite
212
		// decalage borne droite
213
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bd = cmc_bd - "'.$DB->escapeSimple($decalage).'" WHERE cmc_bd >=  "'.$DB->escapeSimple($bg).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
213
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bd = cmc_bd - "'.$DB->escapeSimple($decalage).'" WHERE cmc_bd >=  "'.$DB->escapeSimple($bg).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
214
		$res =& $DB->query($query);
214
		$res =& $DB->query($query);
215
                 if (PEAR::isError($res)) {
215
                 if (PEAR::isError($res)) {
216
 
216
 
217
                	die($res->getMessage());
217
                	die($res->getMessage());
218
			$reussi_1 = false ;
218
			$reussi_1 = false ;
219
                }
219
                }
220
		else
220
		else
221
		{
221
		{
222
			$reussi_1 = true ;
222
			$reussi_1 = true ;
223
		}
223
		}
224
 
224
 
225
		// decalage borne gauche
225
		// decalage borne gauche
226
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bg = cmc_bg - "'.$DB->escapeSimple($decalage).'" WHERE cmc_bg >  "'.$DB->escapeSimple($bg).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
226
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bg = cmc_bg - "'.$DB->escapeSimple($decalage).'" WHERE cmc_bg >  "'.$DB->escapeSimple($bg).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
227
		$res =& $DB->query($query);
227
		$res =& $DB->query($query);
228
                 if (PEAR::isError($res)) {
228
                 if (PEAR::isError($res)) {
229
 
229
 
230
                	die($res->getMessage());
230
                	die($res->getMessage());
231
			$reussi_2 = false ;
231
			$reussi_2 = false ;
232
                }
232
                }
233
		else
233
		else
234
		{
234
		{
235
			$reussi_2 = true ;
235
			$reussi_2 = true ;
236
		}
236
		}
237
 
237
 
238
		$reussi = $reussi_1 && $reussi_2 ;
238
		$reussi = $reussi_1 && $reussi_2 ;
239
 
239
 
240
		return $reussi ;
240
		return $reussi ;
241
	}
241
	}
242
 
242
 
243
	// decale � droite des bornes don�es d'un intervalle positif donne (pour l'ajout d'un sous arbre)
243
	// decale � droite des bornes don�es d'un intervalle positif donne (pour l'ajout d'un sous arbre)
244
	function decalerBornesPlusIntervalle($valeur_bornes, $largeur,$id_utilisateur)
244
	function decalerBornesPlusIntervalle($valeur_bornes, $largeur,$id_utilisateur)
245
	{
245
	{
246
		$DB=$this->connectDB($this->config,'cel_db');
246
		$DB=$this->connectDB($this->config,'cel_db');
247
 
247
 
248
		$decalage = $largeur ;
248
		$decalage = $largeur ;
249
 
249
 
250
		// decalage borne droite
250
		// decalage borne droite
251
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bd = cmc_bd + "'.$DB->escapeSimple($decalage).'" WHERE cmc_bd >=  "'.$DB->escapeSimple($valeur_bornes).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
251
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bd = cmc_bd + "'.$DB->escapeSimple($decalage).'" WHERE cmc_bd >=  "'.$DB->escapeSimple($valeur_bornes).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
252
		$res =& $DB->query($query);
252
		$res =& $DB->query($query);
253
                 if (PEAR::isError($res)) {
253
                 if (PEAR::isError($res)) {
254
 
254
 
255
                	die($res->getMessage());
255
                	die($res->getMessage());
256
			$reussi_1 = false ;
256
			$reussi_1 = false ;
257
                }
257
                }
258
		else
258
		else
259
		{
259
		{
260
			$reussi_1 = true ;
260
			$reussi_1 = true ;
261
		}
261
		}
262
 
262
 
263
		// decalage borne gauche
263
		// decalage borne gauche
264
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bg = cmc_bg + "'.$DB->escapeSimple($decalage).'" WHERE cmc_bg >=  "'.$DB->escapeSimple($valeur_bornes).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
264
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bg = cmc_bg + "'.$DB->escapeSimple($decalage).'" WHERE cmc_bg >=  "'.$DB->escapeSimple($valeur_bornes).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
265
		$res =& $DB->query($query);
265
		$res =& $DB->query($query);
266
		if (PEAR::isError($res)) {
266
		if (PEAR::isError($res)) {
267
 
267
 
268
                	die($res->getMessage());
268
                	die($res->getMessage());
269
			$reussi_2 = false ;
269
			$reussi_2 = false ;
270
                }
270
                }
271
		else
271
		else
272
		{
272
		{
273
			$reussi_2 = true ;
273
			$reussi_2 = true ;
274
		}
274
		}
275
 
275
 
276
		$reussi = $reussi_1 && $reussi_2 ;
276
		$reussi = $reussi_1 && $reussi_2 ;
277
 
277
 
278
		return $reussi ;
278
		return $reussi ;
279
	}
279
	}
280
 
280
 
281
	// inverse les bornes dun intervalle pour l'exclure des modifications sur l'arbre sans changer la hierarchie
281
	// inverse les bornes dun intervalle pour l'exclure des modifications sur l'arbre sans changer la hierarchie
282
	function exclureIntervalle($bg, $bd, $id_utilisateur)
282
	function exclureIntervalle($bg, $bd, $id_utilisateur)
283
	{
283
	{
284
		$DB=$this->connectDB($this->config,'cel_db');
284
		$DB=$this->connectDB($this->config,'cel_db');
285
 
285
 
286
		// decalage bornes
286
		// decalage bornes
287
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bd = cmc_bd - "'.$DB->escapeSimple($bd).'" - 1 ,  cmc_bg =  cmc_bg -  "'.$DB->escapeSimple($bd).'" - 1 WHERE cmc_bd <=  "'.$DB->escapeSimple($bd).'" AND cmc_bg >=  "'.$DB->escapeSimple($bg).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
287
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bd = cmc_bd - "'.$DB->escapeSimple($bd).'" - 1 ,  cmc_bg =  cmc_bg -  "'.$DB->escapeSimple($bd).'" - 1 WHERE cmc_bd <=  "'.$DB->escapeSimple($bd).'" AND cmc_bg >=  "'.$DB->escapeSimple($bg).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
288
 
288
 
289
		$res =& $DB->query($query);
289
		$res =& $DB->query($query);
290
                 if (PEAR::isError($res)) {
290
                 if (PEAR::isError($res)) {
291
 
291
 
292
                	die($res->getMessage());
292
                	die($res->getMessage());
293
			return false ;
293
			return false ;
294
                }
294
                }
295
		else
295
		else
296
		{
296
		{
297
			return true ;
297
			return true ;
298
		}
298
		}
299
	}
299
	}
300
 
300
 
301
	// recale les bornes dun intervalle pour l'inclure dans l'arbre � la bonne place
301
	// recale les bornes dun intervalle pour l'inclure dans l'arbre � la bonne place
302
	function inclureIntervalle($bg, $bd, $decalage,$modif_niveau, $id_utilisateur)
302
	function inclureIntervalle($bg, $bd, $decalage,$modif_niveau, $id_utilisateur)
303
	{
303
	{
304
		$DB=$this->connectDB($this->config,'cel_db');
304
		$DB=$this->connectDB($this->config,'cel_db');
305
 
305
 
306
		// decalage borne droite
306
		// decalage borne droite
307
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bg =  cmc_bg + "'.$DB->escapeSimple($decalage).'" , cmc_bd = cmc_bd + "'.$DB->escapeSimple($decalage).'", cmc_niveau = cmc_niveau + "'.$modif_niveau.'" WHERE cmc_bg >=  "'.$DB->escapeSimple($bg).'" AND cmc_bd <=  "'.$DB->escapeSimple($bd).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
307
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_bg =  cmc_bg + "'.$DB->escapeSimple($decalage).'" , cmc_bd = cmc_bd + "'.$DB->escapeSimple($decalage).'", cmc_niveau = cmc_niveau + "'.$modif_niveau.'" WHERE cmc_bg >=  "'.$DB->escapeSimple($bg).'" AND cmc_bd <=  "'.$DB->escapeSimple($bd).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
308
 
308
 
309
		$res =& $DB->query($query);
309
		$res =& $DB->query($query);
310
                 if (PEAR::isError($res)) {
310
                 if (PEAR::isError($res)) {
311
 
311
 
312
                	die($res->getMessage());
312
                	die($res->getMessage());
313
			return false ;
313
			return false ;
314
                }
314
                }
315
		else
315
		else
316
		{
316
		{
317
			return true ;
317
			return true ;
318
		}
318
		}
319
	}
319
	}
320
 
320
 
321
	function changerPere($id_mot_cle, $id_pere, $id_utilisateur)
321
	function changerPere($id_mot_cle, $id_pere, $id_utilisateur)
322
	{
322
	{
323
		$DB=$this->connectDB($this->config,'cel_db');
323
		$DB=$this->connectDB($this->config,'cel_db');
324
 
324
 
325
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_id_parent = "'.$DB->escapeSimple($id_pere).'" WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
325
		$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_id_parent = "'.$DB->escapeSimple($id_pere).'" WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
326
 
326
 
327
		$res =& $DB->query($query);
327
		$res =& $DB->query($query);
328
                 if (PEAR::isError($res)) {
328
                 if (PEAR::isError($res)) {
329
 
329
 
330
                	die($res->getMessage());
330
                	die($res->getMessage());
331
			return false ;
331
			return false ;
332
                }
332
                }
333
		else
333
		else
334
		{
334
		{
335
			return true ;
335
			return true ;
336
		}
336
		}
337
	}
337
	}
338
 
338
 
339
	function getElement($uid)
339
	function getElement($uid)
340
	{
340
	{
341
		// Controle detournement utilisateur
341
		// Controle detournement utilisateur
342
		if(!isset($_SESSION)) {session_start();}
342
		if(!isset($_SESSION)) {session_start();}
343
		$this->controleUtilisateur($uid[1]);
343
		$this->controleUtilisateur($uid[1]);
344
		$DB=$this->connectDB($this->config,'cel_db');
344
		$DB=$this->connectDB($this->config,'cel_db');
345
 
345
 
346
		$this->suffix = '_'.$uid[0];
346
		$this->suffix = '_'.$uid[0];
347
		$id_utilisateur = $uid[1] ;
347
		$id_utilisateur = $uid[1] ;
348
 
348
 
349
		$query = 'SELECT cmc_mot_cle, cmc_id_mot_cle_utilisateur, cmc_id_parent FROM cel_mots_cles'.$this->suffix.' WHERE cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ORDER BY cmc_niveau' ;
349
		$query = 'SELECT cmc_mot_cle, cmc_id_mot_cle_utilisateur, cmc_id_parent FROM cel_mots_cles'.$this->suffix.' WHERE cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ORDER BY cmc_niveau' ;
350
 
350
 
351
		$result = array() ;
351
		$result = array() ;
352
 
352
 
353
		$res =& $DB->query($query);
353
		$res =& $DB->query($query);
354
		if (PEAR::isError($res))
354
		if (PEAR::isError($res))
355
		{
355
		{
356
			die($res->getMessage());
356
			die($res->getMessage());
357
		}
357
		}
358
		else
358
		else
359
		{
359
		{
360
			while($motcle = $res->fetchrow(DB_FETCHMODE_ASSOC))
360
			while($motcle = $res->fetchrow(DB_FETCHMODE_ASSOC))
361
			{
361
			{
362
				$result[] = $motcle ;
362
				$result[] = $motcle ;
363
			}
363
			}
364
 
364
 
365
			$res = json_encode($result) ;
365
			$res = json_encode($result) ;
366
 
366
 
367
			header("content-type: text/json") ;
367
			header("content-type: application/json") ;
368
			print $res ;
368
			print $res ;
369
			exit() ;
369
			exit() ;
370
		}
370
		}
371
	}
371
	}
372
 
372
 
373
	// met � jour les mots clés d'une image
373
	// met � jour les mots clés d'une image
374
	function updateElement($uid,$pairs)
374
	function updateElement($uid,$pairs)
375
	{
375
	{
376
		// Controle detournement utilisateur
376
		// Controle detournement utilisateur
377
		if(!isset($_SESSION)) {session_start();}
377
		if(!isset($_SESSION)) {session_start();}
378
		$this->controleUtilisateur($uid[1]);
378
		$this->controleUtilisateur($uid[1]);
379
 
379
 
380
		$this->suffix = '_'.$uid[0];
380
		$this->suffix = '_'.$uid[0];
381
 
381
 
382
		$id_utilisateur = $uid[1] ;
382
		$id_utilisateur = $uid[1] ;
383
		$id_mot_cle = $pairs['id'] ;
383
		$id_mot_cle = $pairs['id'] ;
384
		$action = $pairs['action'] ;
384
		$action = $pairs['action'] ;
385
 
385
 
386
		if($action == 'modification')
386
		if($action == 'modification')
387
		{
387
		{
388
			$nouveau_nom = $pairs['motcle'] ;
388
			$nouveau_nom = $pairs['motcle'] ;
389
			$nouvel_id_general = md5(strtolower($nouveau_nom)) ;
389
			$nouvel_id_general = md5(mb_strtolower($nouveau_nom)) ;
390
 
390
 
391
			$DB=$this->connectDB($this->config,'cel_db');
391
			$DB=$this->connectDB($this->config,'cel_db');
392
 
392
 
393
			$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_mot_cle = "'.$DB->escapeSimple($nouveau_nom).'" , cmc_id_mot_cle_general = "'.$DB->escapeSimple($nouvel_id_general).'" WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
393
			$query = 'UPDATE cel_mots_cles'.$this->suffix.' SET cmc_mot_cle = "'.$DB->escapeSimple($nouveau_nom).'" , cmc_id_mot_cle_general = "'.$DB->escapeSimple($nouvel_id_general).'" WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
394
 
394
 
395
			$res =& $DB->query($query);
395
			$res =& $DB->query($query);
396
			if (PEAR::isError($res))
396
			if (PEAR::isError($res))
397
			{
397
			{
398
				die($res->getMessage());
398
				die($res->getMessage());
399
				$transaction_reussie_1 = false ;
399
				$transaction_reussie_1 = false ;
400
			}
400
			}
401
			else
401
			else
402
			{
402
			{
403
				$transaction_reussie_1 = true ;
403
				$transaction_reussie_1 = true ;
404
				echo "OK" ;
404
				echo "OK" ;
405
			}
405
			}
406
		}
406
		}
407
 
407
 
408
		if($action == 'deplacement')
408
		if($action == 'deplacement')
409
		{
409
		{
410
			$this->desactiverAutoCommitEtCommencerTransaction() ;
410
			$this->desactiverAutoCommitEtCommencerTransaction() ;
411
 
411
 
412
			$transaction_reussie_1 = true ;
412
			$transaction_reussie_1 = true ;
413
 
413
 
414
			$id_pere = $pairs['parent'] ;
414
			$id_pere = $pairs['parent'] ;
415
 
415
 
416
			$bornes = $this->calculerBornesEtNiveau($id_mot_cle,$id_utilisateur) ;
416
			$bornes = $this->calculerBornesEtNiveau($id_mot_cle,$id_utilisateur) ;
417
			$bg = $bornes['cmc_bg']  ;
417
			$bg = $bornes['cmc_bg']  ;
418
			$bd = $bornes['cmc_bd']  ;
418
			$bd = $bornes['cmc_bd']  ;
419
			$niveau = $bornes['cmc_niveau'] ;
419
			$niveau = $bornes['cmc_niveau'] ;
420
 
420
 
421
			// on inverse l'intervalle de l'�l�ment d�plac� et du sous arbre
421
			// on inverse l'intervalle de l'�l�ment d�plac� et du sous arbre
422
			if($this->exclureIntervalle($bg,$bd,$id_utilisateur))
422
			if($this->exclureIntervalle($bg,$bd,$id_utilisateur))
423
			{
423
			{
424
				$transaction_reussie_2 = true ;
424
				$transaction_reussie_2 = true ;
425
			}
425
			}
426
			else
426
			else
427
			{
427
			{
428
				$transaction_reussie_2 = false ;
428
				$transaction_reussie_2 = false ;
429
			}
429
			}
430
 
430
 
431
			$bg_negative = $bg - $bd - 1 ;
431
			$bg_negative = $bg - $bd - 1 ;
432
			$bd_negative = $bd - $bd - 1 ;
432
			$bd_negative = $bd - $bd - 1 ;
433
 
433
 
434
			// on recalcule les intervalles de l'arbre priv� de ce sous arbre
434
			// on recalcule les intervalles de l'arbre priv� de ce sous arbre
435
			if($this->decalerBornesMoinsIntervalle($bg,$bd,$id_utilisateur))
435
			if($this->decalerBornesMoinsIntervalle($bg,$bd,$id_utilisateur))
436
			{
436
			{
437
				$transaction_reussie_3 = true ;
437
				$transaction_reussie_3 = true ;
438
			}
438
			}
439
			else
439
			else
440
			{
440
			{
441
				$transaction_reussie_3 = false ;
441
				$transaction_reussie_3 = false ;
442
			}
442
			}
443
 
443
 
444
			$bornes_pere = $this->calculerBornesEtNiveau($id_pere,$id_utilisateur) ;
444
			$bornes_pere = $this->calculerBornesEtNiveau($id_pere,$id_utilisateur) ;
445
			$bg_pere = $bornes_pere['cmc_bg']  ;
445
			$bg_pere = $bornes_pere['cmc_bg']  ;
446
			$bd_pere = $bornes_pere['cmc_bd']  ;
446
			$bd_pere = $bornes_pere['cmc_bd']  ;
447
 
447
 
448
			$niveau_pere = $bornes_pere['cmc_niveau'] ;
448
			$niveau_pere = $bornes_pere['cmc_niveau'] ;
449
 
449
 
450
			$decalage = $bd - $bg + 1 ;
450
			$decalage = $bd - $bg + 1 ;
451
 
451
 
452
			// on decale les bornes droite du pere pour pr�parer l'insertion
452
			// on decale les bornes droite du pere pour pr�parer l'insertion
453
			if($this->decalerBornesPlusIntervalle($bd_pere, $decalage, $id_utilisateur))
453
			if($this->decalerBornesPlusIntervalle($bd_pere, $decalage, $id_utilisateur))
454
			{
454
			{
455
				$transaction_reussie_4 = true ;
455
				$transaction_reussie_4 = true ;
456
			}
456
			}
457
			else
457
			else
458
			{
458
			{
459
				$transaction_reussie_4 = false ;
459
				$transaction_reussie_4 = false ;
460
			}
460
			}
461
 
461
 
462
			$nouvelle_bd = $bd_pere + $decalage  ;
462
			$nouvelle_bd = $bd_pere + $decalage  ;
463
 
463
 
464
			$modif_niveau = $niveau_pere - $niveau + 1 ;
464
			$modif_niveau = $niveau_pere - $niveau + 1 ;
465
 
465
 
466
			if($this->inclureIntervalle($bg_negative,$bd_negative,$nouvelle_bd,$modif_niveau,$id_utilisateur))
466
			if($this->inclureIntervalle($bg_negative,$bd_negative,$nouvelle_bd,$modif_niveau,$id_utilisateur))
467
			{
467
			{
468
				$transaction_reussie_5 = true ;
468
				$transaction_reussie_5 = true ;
469
			}
469
			}
470
			else
470
			else
471
			{
471
			{
472
				$transaction_reussie_5 = false ;
472
				$transaction_reussie_5 = false ;
473
			}
473
			}
474
 
474
 
475
			if($this->changerPere($id_mot_cle,$id_pere,$id_utilisateur))
475
			if($this->changerPere($id_mot_cle,$id_pere,$id_utilisateur))
476
			{
476
			{
477
				$transaction_reussie_6 = true ;
477
				$transaction_reussie_6 = true ;
478
			}
478
			}
479
			else
479
			else
480
			{
480
			{
481
				$transaction_reussie_6 = false ;
481
				$transaction_reussie_6 = false ;
482
			}
482
			}
483
 
483
 
484
			if($transaction_reussie_1 && $transaction_reussie_2 && $transaction_reussie_3 && $transaction_reussie_4 && $transaction_reussie_5 && $transaction_reussie_6)
484
			if($transaction_reussie_1 && $transaction_reussie_2 && $transaction_reussie_3 && $transaction_reussie_4 && $transaction_reussie_5 && $transaction_reussie_6)
485
			{
485
			{
486
				$this->reactiverAutoCommitEtCompleterTransaction() ;
486
				$this->reactiverAutoCommitEtCompleterTransaction() ;
487
			}
487
			}
488
			else
488
			else
489
			{
489
			{
490
				$this->reactiverAutoCommitEtAnnulerTransaction() ;
490
				$this->reactiverAutoCommitEtAnnulerTransaction() ;
491
			}
491
			}
492
 
492
 
493
		}
493
		}
494
	}
494
	}
495
 
495
 
496
	function createElement($pairs)
496
	function createElement($pairs)
497
	{
497
	{
498
 
498
 
499
		// Controle detournement utilisateur
499
		// Controle detournement utilisateur
500
		if(!isset($_SESSION)) {session_start();}
500
		if(!isset($_SESSION)) {session_start();}
501
		$this->controleUtilisateur($pairs['identifiant']);
501
		$this->controleUtilisateur($pairs['identifiant']);
502
 
502
 
503
		$this->suffix = '_'.$pairs['mode'];
503
		$this->suffix = '_'.$pairs['mode'];
504
 
504
 
505
		$id_utilisateur = $pairs['identifiant'] ;
505
		$id_utilisateur = $pairs['identifiant'] ;
506
		$mot_cle = $pairs['motcle'] ;
506
		$mot_cle = $pairs['motcle'] ;
507
 
507
 
508
		// TODO supprimer accents et majuscules
508
		// TODO supprimer accents et majuscules
509
		$id_mot_cle_general = md5(mb_strtolower($mot_cle)) ;
509
		$id_mot_cle_general = md5(mb_strtolower($mot_cle)) ;
510
		$id_mot_cle = $pairs['id'] ;
510
		$id_mot_cle = $pairs['id'] ;
511
		$id_parent = $pairs['parent'] ;
511
		$id_parent = $pairs['parent'] ;
512
 
512
 
513
		$this->verifierPresenceRacine($id_utilisateur) ;
513
		$this->verifierPresenceRacine($id_utilisateur) ;
514
 
514
 
515
		$transaction_reussie = false ;
515
		$transaction_reussie = false ;
516
 
516
 
517
		$this->desactiverAutoCommitEtCommencerTransaction() ;
517
		$this->desactiverAutoCommitEtCommencerTransaction() ;
518
 
518
 
519
		$bornes = $this->calculerBornesEtNiveau($id_parent,$id_utilisateur) ;
519
		$bornes = $this->calculerBornesEtNiveau($id_parent,$id_utilisateur) ;
520
 
520
 
521
		$bg = $bornes['cmc_bd']  ;
521
		$bg = $bornes['cmc_bd']  ;
522
		$bd = $bg + 1 ;
522
		$bd = $bg + 1 ;
523
		$borne_pere = $bornes['cmc_bd'] ;
523
		$borne_pere = $bornes['cmc_bd'] ;
524
 
524
 
525
		$niveau = $bornes['cmc_niveau']  + 1;
525
		$niveau = $bornes['cmc_niveau']  + 1;
526
 
526
 
527
		if($this->decalerBornesPlusDeux($borne_pere,$id_utilisateur))
527
		if($this->decalerBornesPlusDeux($borne_pere,$id_utilisateur))
528
		{
528
		{
529
			$transaction_reussie_1 = true ;
529
			$transaction_reussie_1 = true ;
530
		}
530
		}
531
		else
531
		else
532
		{
532
		{
533
			$transaction_reussie_1 = false ;
533
			$transaction_reussie_1 = false ;
534
		}
534
		}
535
 
535
 
536
		$DB=$this->connectDB($this->config,'cel_db');
536
		$DB=$this->connectDB($this->config,'cel_db');
537
				$query = 'INSERT INTO  cel_mots_cles'.$this->suffix.' VALUES (' ;
537
				$query = 'INSERT INTO  cel_mots_cles'.$this->suffix.' VALUES (' ;
538
				$query .= '"'.$DB->escapeSimple($mot_cle).'",' ;
538
				$query .= '"'.$DB->escapeSimple($mot_cle).'",' ;
539
				$query .= '"'.$DB->escapeSimple($bg).'",' ;
539
				$query .= '"'.$DB->escapeSimple($bg).'",' ;
540
				$query .= '"'.$DB->escapeSimple($bd).'",' ;
540
				$query .= '"'.$DB->escapeSimple($bd).'",' ;
541
				$query .= '"'.$DB->escapeSimple($id_mot_cle_general).'",' ;
541
				$query .= '"'.$DB->escapeSimple($id_mot_cle_general).'",' ;
542
				$query .= '"'.$DB->escapeSimple($id_mot_cle).'",' ;
542
				$query .= '"'.$DB->escapeSimple($id_mot_cle).'",' ;
543
				$query .= '"'.$DB->escapeSimple($id_utilisateur).'",' ;
543
				$query .= '"'.$DB->escapeSimple($id_utilisateur).'",' ;
544
				$query .= '"'.$DB->escapeSimple($id_parent).'",' ;
544
				$query .= '"'.$DB->escapeSimple($id_parent).'",' ;
545
				$query .= '"'.$DB->escapeSimple($niveau).'"' ;
545
				$query .= '"'.$DB->escapeSimple($niveau).'"' ;
546
				$query .= ')' ;
546
				$query .= ')' ;
547
 
547
 
548
		$res =& $DB->query($query);
548
		$res =& $DB->query($query);
549
        if (PEAR::isError($res))
549
        if (PEAR::isError($res))
550
		{
550
		{
551
			die($res->getMessage());
551
			die($res->getMessage());
552
			$transaction_reussie_2 = false ;
552
			$transaction_reussie_2 = false ;
553
        }
553
        }
554
		else
554
		else
555
		{
555
		{
556
			$transaction_reussie_2 = true ;
556
			$transaction_reussie_2 = true ;
557
		}
557
		}
558
 
558
 
559
		if($transaction_reussie_1 && $transaction_reussie_2)
559
		if($transaction_reussie_1 && $transaction_reussie_2)
560
		{
560
		{
561
			$this->reactiverAutoCommitEtCompleterTransaction() ;
561
			$this->reactiverAutoCommitEtCompleterTransaction() ;
562
		}
562
		}
563
		else
563
		else
564
		{
564
		{
565
			$this->reactiverAutoCommitEtAnnulerTransaction() ;
565
			$this->reactiverAutoCommitEtAnnulerTransaction() ;
566
		}
566
		}
567
 
567
 
568
	}
568
	}
569
 
569
 
570
	function deleteElement($uid){
570
	function deleteElement($uid){
571
 
571
 
572
		if(!isset($_SESSION)) {session_start();}
572
		if(!isset($_SESSION)) {session_start();}
573
		$this->controleUtilisateur($uid[1]);
573
		$this->controleUtilisateur($uid[1]);
574
		$this->suffix = '_'.$uid[0];
574
		$this->suffix = '_'.$uid[0];
575
 
575
 
576
		$DB=$this->connectDB($this->config,'cel_db');
576
		$DB=$this->connectDB($this->config,'cel_db');
577
 
577
 
578
		$this->desactiverAutoCommitEtCommencerTransaction() ;
578
		$this->desactiverAutoCommitEtCommencerTransaction() ;
579
 
579
 
580
		$id_mot_cle= $uid[2] ;
580
		$id_mot_cle= $uid[2] ;
581
		$id_utilisateur = $uid[1] ;
581
		$id_utilisateur = $uid[1] ;
582
 
582
 
583
		$bornes  = $this->calculerBornesEtNiveau($id_mot_cle,$id_utilisateur) ;
583
		$bornes  = $this->calculerBornesEtNiveau($id_mot_cle,$id_utilisateur) ;
584
 
584
 
585
		$bg = $bornes['cmc_bg'] ;
585
		$bg = $bornes['cmc_bg'] ;
586
		$bd = $bornes['cmc_bd'] ;
586
		$bd = $bornes['cmc_bd'] ;
587
 
587
 
588
		$query = 'DELETE FROM cel_mots_cles'.$this->suffix.' WHERE cmc_bg >= "'.$DB->escapeSimple($bg).'" AND cmc_bd <= "'.$DB->escapeSimple($bd).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
588
		$query = 'DELETE FROM cel_mots_cles'.$this->suffix.' WHERE cmc_bg >= "'.$DB->escapeSimple($bg).'" AND cmc_bd <= "'.$DB->escapeSimple($bd).'" AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
589
 
589
 
590
		$res =& $DB->query($query);
590
		$res =& $DB->query($query);
591
        if (PEAR::isError($res))
591
        if (PEAR::isError($res))
592
		{
592
		{
593
                	die($res->getMessage());
593
                	die($res->getMessage());
594
			$transaction_reussie_1 = false ;
594
			$transaction_reussie_1 = false ;
595
        }
595
        }
596
		else
596
		else
597
		{
597
		{
598
			if($DB->affectedRows() <= 0)
598
			if($DB->affectedRows() <= 0)
599
			{
599
			{
600
				$transaction_reussie_1 = false ;
600
				$transaction_reussie_1 = false ;
601
			}
601
			}
602
			else
602
			else
603
			{
603
			{
604
				$transaction_reussie_1 = true ;
604
				$transaction_reussie_1 = true ;
605
			}
605
			}
606
		}
606
		}
607
 
607
 
608
 
608
 
609
		if($this->decalerBornesMoinsIntervalle($bg,$bd, $id_utilisateur))
609
		if($this->decalerBornesMoinsIntervalle($bg,$bd, $id_utilisateur))
610
		{
610
		{
611
			$transaction_reussie_2 = true ;
611
			$transaction_reussie_2 = true ;
612
		}
612
		}
613
		else
613
		else
614
		{
614
		{
615
			$transaction_reussie_2 = false ;
615
			$transaction_reussie_2 = false ;
616
		}
616
		}
617
 
617
 
618
		if($transaction_reussie_1 && $transaction_reussie_2)
618
		if($transaction_reussie_1 && $transaction_reussie_2)
619
		{
619
		{
620
			$this->reactiverAutoCommitEtCompleterTransaction() ;
620
			$this->reactiverAutoCommitEtCompleterTransaction() ;
621
		}
621
		}
622
		else
622
		else
623
		{
623
		{
624
			$this->reactiverAutoCommitEtAnnulerTransaction() ;
624
			$this->reactiverAutoCommitEtAnnulerTransaction() ;
625
		}
625
		}
626
	}
626
	}
627
 
627
 
628
 }
628
 }
629
?>
629
?>