Subversion Repositories eFlore/Applications.cel

Rev

Rev 821 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 821 Rev 856
Line 1... Line 1...
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
-
 
3
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
3
/**
4
/**
4
 * Service de recherche et modification de l'arbre des mots clés associés à un id.
5
 * Service de recherche et modification de l'arbre des mots clés associés à un id.
5
 * 1: Le service recoit un mot clé à ajouter à l'arbre
6
 * 1: Le service recoit un mot clé à ajouter à l'arbre
6
 * 2: Le service recherche l'arbre ou sous arbre correspondant au critères demandé
7
 * 2: Le service recherche l'arbre ou sous arbre correspondant au critères demandé
7
 * 3: Le service renvoie l'arbre au format json
8
 * 3: Le service renvoie l'arbre au format json
Line 15... Line 16...
15
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
16
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
16
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
17
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
17
 * @version $Id$
18
 * @version $Id$
18
 * @copyright © 2011, Tela-Botanica
19
 * @copyright © 2011, Tela-Botanica
19
 */
20
 */
20
class InventoryKeyWordList extends DBAccessor {
21
class InventoryKeyWordList extends Cel {
21
	public $config ;
-
 
22
	protected $suffix = '';
-
 
Line 23... Line -...
23
 
-
 
24
	public function InventoryKeyWordList($config) {
22
 
25
		$this->config = $config;
-
 
Line 26... Line 23...
26
	}
23
	protected $suffix = '';
27
 
24
 
28
	public function getElement($uid) {
25
	public function getElement($uid) {
29
		// Controle detournement utilisateur
26
		// Controle detournement utilisateur
30
		session_start();
27
		session_start();
31
		$this->suffix = '_'.$uid[0];
28
		$this->suffix = '_'.$uid[0];
Line 32... Line 29...
32
		$id_utilisateur = $uid[1] ;
29
		$id_utilisateur = $uid[1] ;
33
		$this->controleUtilisateur($uid[1]);
30
		$this->controleUtilisateur($uid[1]);
34
		
31
		
35
		$requete = 	'SELECT cmc_mot_cle, cmc_id_mot_cle_utilisateur, cmc_id_parent '.
32
		$requete = 	'SELECT mot_cle, id_mot_cle_utilisateur, ce_mot_cle_utilisateur_parent '.
Line 36... Line 33...
36
					'FROM cel_mots_cles'.$this->suffix.' '.
33
					'FROM cel_mots_cles'.$this->suffix.' '.
-
 
34
					'WHERE ce_utilisateur = '.$this->proteger($id_utilisateur).' '.
37
					'WHERE cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" '.
35
					'ORDER BY niveau ';
38
					'ORDER BY cmc_niveau ';
36
		
39
		
37
		$resultats_mots_cles = $this->requeter($requete);
40
		$resultat = $this->recupererResultat($requete);
38
		
41
		if ($resultat) {
39
		if (is_array($resultats_mots_cles)) {
-
 
40
			$mots_cles = array();
42
			$mots_cles = array();
41
			foreach($resultats_mots_cles as $mot_cle) {
43
			while($mot_cle = $resultat->fetchrow(DB_FETCHMODE_ASSOC)) {
-
 
44
				$mots_cles[] = $mot_cle;
42
				$mots_cles[] = $mot_cle;
45
			}
43
			}
46
			$infos = json_encode($mots_cles);
44
			
47
 
45
			$infos = json_encode($mots_cles);
48
			header('content-type: text/json');
46
			header('content-type: application/json');
Line 63... Line 61...
63
		if ($action == 'modification') {
61
		if ($action == 'modification') {
64
			$nouveau_nom = $pairs['motcle'];
62
			$nouveau_nom = $pairs['motcle'];
65
			$nouvel_id_general = md5(strtolower($nouveau_nom));
63
			$nouvel_id_general = md5(strtolower($nouveau_nom));
Line 66... Line 64...
66
 
64
 
67
			$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
65
			$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
68
						'SET cmc_mot_cle = "'.$DB->escapeSimple($nouveau_nom).'" , '.
66
						'SET mot_cle = '.$this->proteger($nouveau_nom).' , '.
69
						'	cmc_id_mot_cle_general = "'.$DB->escapeSimple($nouvel_id_general).'" '.
67
						'	md5 = '.$this->proteger($nouvel_id_general).' '.
70
						'WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" '.
68
						'WHERE id_mot_cle_utilisateur = '.$this->proteger($id_mot_cle).' '.
71
						'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'"' ;
69
						'	AND ce_utilisateur = '.$this->proteger($id_utilisateur) ;
72
			$reussite = $this->executerRequete($requete);
70
			$reussite = $this->executer($requete);
73
			if ($reussite) {
71
			if ($reussite) {
74
				echo 'OK';
72
				echo 'OK';
75
			}
73
			}
-
 
74
		} else if ($action == 'deplacement') {
76
		} else if ($action == 'deplacement') {
75
			
77
			$this->commencerTransaction();
76
			$this->commencerTransaction();
78
 
77
			
79
			$transaction_reussie_1 = true;
78
			$transaction_reussie_1 = true;
80
			$id_pere = $pairs['parent'];
79
			$id_pere = $pairs['parent'];
81
			$bornes = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
80
			$bornes = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
82
			$bg = $bornes['cmc_bg'];
81
			$bg = $bornes['bg'];
83
			$bd = $bornes['cmc_bd'];
82
			$bd = $bornes['bd'];
Line 84... Line 83...
84
			$niveau = $bornes['cmc_niveau'];
83
			$niveau = $bornes['niveau'];
85
 
84
 
Line 86... Line 85...
86
			// on inverse l'intervalle de l'élément déplacé et du sous arbre
85
			// on inverse l'intervalle de l'élément déplacé et du sous arbre
87
			$transaction_reussie_2 = $this->exclureIntervalle($bg, $bd, $id_utilisateur) ? true : false;
86
			$transaction_reussie_2 = $this->exclureIntervalle($bg, $bd, $id_utilisateur);
Line 88... Line 87...
88
 
87
 
89
			$bg_negative = $bg - $bd - 1;
88
			$bg_negative = $bg - $bd - 1;
Line 90... Line 89...
90
			$bd_negative = $bd - $bd - 1;
89
			$bd_negative = $bd - $bd - 1;
91
 
90
 
92
			// on recalcule les intervalles de l'arbre privé de ce sous arbre
91
			// on recalcule les intervalles de l'arbre privé de ce sous arbre
Line 93... Line 92...
93
			$transaction_reussie_3 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) ? true : false;
92
			$transaction_reussie_3 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur);
Line 94... Line 93...
94
 
93
 
Line 95... Line 94...
95
			$bornes_pere = $this->calculerBornesEtNiveau($id_pere, $id_utilisateur);
94
			$bornes_pere = $this->calculerBornesEtNiveau($id_pere, $id_utilisateur);
96
			$bg_pere = $bornes_pere['cmc_bg'];
95
			$bg_pere = $bornes_pere['bg'];
Line 97... Line 96...
97
			$bd_pere = $bornes_pere['cmc_bd'];
96
			$bd_pere = $bornes_pere['bd'];
98
 
97
 
Line 99... Line 98...
99
			$niveau_pere = $bornes_pere['cmc_niveau'];
98
			$niveau_pere = $bornes_pere['niveau'];
100
 
99
 
101
			$decalage = $bd - $bg + 1;
100
			$decalage = $bd - $bg + 1;
Line 102... Line 101...
102
 
101
 
103
			// on decale les bornes droite du pere pour préparer l'insertion
102
			// on decale les bornes droite du pere pour préparer l'insertion
104
			$transaction_reussie_4 = $this->decalerBornesPlusIntervalle($bd_pere, $decalage, $id_utilisateur) ? true : false;
103
			$transaction_reussie_4 = $this->decalerBornesPlusIntervalle($bd_pere, $decalage, $id_utilisateur);
105
			
104
			
Line 120... Line 119...
120
	}
119
	}
Line 121... Line 120...
121
 
120
 
122
	public function createElement($pairs) {
121
	public function createElement($pairs) {
123
		// Controle detournement utilisateur
122
		// Controle detournement utilisateur
124
		session_start();
123
		session_start();
Line 125... Line 124...
125
		$this->controleUtilisateur($pairs['identifiant']);
124
		$this->controleUtilisateur($pairs['ce_utilisateur']);
126
 
125
 
127
		$this->suffix = '_'.$pairs['mode'];
126
		$this->suffix = '_'.$pairs['mode'];
Line 128... Line 127...
128
		$id_utilisateur = $pairs['identifiant'];
127
		$id_utilisateur = $pairs['ce_utilisateur'];
129
		$mot_cle = $pairs['motcle'];
128
		$mot_cle = $pairs['motcle'];
130
 
129
 
131
		// TODO supprimer accents et majuscules
130
		// TODO supprimer accents
Line 132... Line 131...
132
		$id_mot_cle_general = md5(mb_strtolower($mot_cle));
131
		$id_mot_cle_general = md5(mb_strtolower($mot_cle));
Line 133... Line 132...
133
		$id_mot_cle = $pairs['id'];
132
		$id_mot_cle = $pairs['id'];
Line 134... Line 133...
134
		$id_parent = $pairs['parent'];
133
		$id_parent = $pairs['parent'];
135
 
134
 
136
		$this->ajouterMotCleRacine($id_utilisateur);
135
		$this->ajouterMotCleRacine($id_utilisateur);
137
 
136
 
138
		$this->commencerTransaction();
137
		$this->commencerTransaction();
Line 139... Line 138...
139
 
138
 
Line 140... Line 139...
140
		$bornes = $this->calculerBornesEtNiveau($id_parent, $id_utilisateur);
139
		$bornes = $this->calculerBornesEtNiveau($id_parent, $id_utilisateur);
141
		$borne_pere = $bornes['cmc_bd'];
140
		$borne_pere = $bornes['bd'];
142
		$niveau = $bornes['cmc_niveau'] + 1;
141
		$niveau = $bornes['niveau'] + 1;
143
		$bg = $bornes['cmc_bd'];
142
		$bg = $bornes['bd'];
144
		$bd = $bg + 1;
143
		$bd = $bg + 1;
145
 
144
 
146
		$transaction_reussie_1 = $this->decalerBornesPlusDeux($borne_pere,$id_utilisateur) ? true : false;
145
		$transaction_reussie_1 = $this->decalerBornesPlusDeux($borne_pere,$id_utilisateur) ? true : false;
147
		
146
		
148
		$requete = 	'INSERT INTO  cel_mots_cles'.$this->suffix.' '.
147
		$requete = 	'INSERT INTO  cel_mots_cles'.$this->suffix.' '.
149
					'VALUES ( '.
148
					'VALUES ( '.
-
 
149
					$this->proteger($id_mot_cle).', '.
150
					'"'.$DB->escapeSimple($mot_cle).'", '.
150
					$this->proteger($id_utilisateur).', '.
Line 151... Line 151...
151
					'"'.$DB->escapeSimple($bg).'", '.
151
					$this->proteger($mot_cle).', '.
152
					'"'.$DB->escapeSimple($bd).'", '.
152
					$this->proteger($id_mot_cle_general).', '.
153
					'"'.$DB->escapeSimple($id_mot_cle_general).'", '.
153
					$this->proteger($bg).', '.
154
					'"'.$DB->escapeSimple($id_mot_cle).'", '.
154
					$this->proteger($bd).', '.
Line 174... Line 174...
174
 
174
 
175
		$this->controleUtilisateur($id_utilisateur);		
175
		$this->controleUtilisateur($id_utilisateur);		
Line 176... Line 176...
176
		$this->commencerTransaction();
176
		$this->commencerTransaction();
177
 
177
 
178
		$bornes  = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
178
		$bornes  = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
Line 179... Line 179...
179
		$bg = $bornes['cmc_bg'];
179
		$bg = $bornes['bg'];
180
		$bd = $bornes['cmc_bd'];
180
		$bd = $bornes['bd'];
181
 
181
 
182
		$requete = 	'DELETE FROM cel_mots_cles'.$this->suffix.' '.
182
		$requete = 	'DELETE FROM cel_mots_cles'.$this->suffix.' '.
183
					'WHERE cmc_bg >= "'.$DB->escapeSimple($bg).'" '.
-
 
184
					'	AND cmc_bd <= "'.$DB->escapeSimple($bd).'" '.
183
					'WHERE bg >= '.$this->proteger($bg).' '.
-
 
184
					'	AND bd <= '.$this->proteger($bd).' '.
185
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
185
					'	AND ce_utilisateur = '.$this->proteger($id_utilisateur).' ';
Line 186... Line 186...
186
		$transaction_reussie_1 = $this->verifierLignesAffectees($requete);
186
					
187
 
187
		$transaction_reussie_1 = $this->executer($requete);
188
		$transaction_reussie_2 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) ? true : false;
188
		$transaction_reussie_2 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) ? true : false;
189
 
189
 
190
		if ($transaction_reussie_1 && $transaction_reussie_2) {
190
		if ($transaction_reussie_1 && $transaction_reussie_2) {
191
			$this->completerTransaction();
191
			$this->completerTransaction();
Line 192... Line 192...
192
		} else {
192
		} else {
193
			$this->annulerTransaction();
193
			$this->annulerTransaction();
194
		}
194
		}
195
	}
195
	}
196
	
196
	
Line 197... Line 197...
197
	private function ajouterMotCleRacine($id) {
197
	private function ajouterMotCleRacine($id) {
198
		$requete = 	'SELECT COUNT(*) '.
198
		$requete = 	'SELECT COUNT(*) as nb_mc '.
Line 199... Line 199...
199
					'FROM cel_mots_cles'.$this->suffix.' '.
199
					'FROM cel_mots_cles'.$this->suffix.' '.
200
					'WHERE cmc_id_proprietaire = "'.$DB->escapeSimple($id).'" ';
200
					'WHERE ce_utilisateur = '.$this->proteger($id).' ';
201
		$resultat = $this->recupererResultat($requete);
201
		$resultat = $this->requeter($requete);
202
 
202
 
Line 215... Line 215...
215
				default:
215
				default:
216
					$nom_racine = $this->suffix;
216
					$nom_racine = $this->suffix;
217
					$id_racine = $this->suffix;
217
					$id_racine = $this->suffix;
218
			}
218
			}
Line 219... Line 219...
219
 
219
 
220
			if ($valeurs[0] == 0) {
220
			if ($valeurs == 0) {
221
				$requete = 	'INSERT INTO cel_mots_cles'.$this->suffix.' '.
221
				$requete = 	'INSERT INTO cel_mots_cles'.$this->suffix.' '.
222
							'VALUES ("'.$nom_racine.'", 1, 2, "'.$id_racine.'", "'.$id_racine.'", "'.$DB->escapeSimple($id).'", "", 0) ';
222
							'VALUES ("'.$nom_racine.'", 1, 2, "'.$id_racine.'", "'.$id_racine.'", '.$this->proteger($id).', "", 0) ';
223
				$this->executerRequete($requete);
223
				$this->executer($requete);
224
			}
224
			}
225
		}
225
		}
Line 226... Line 226...
226
	}
226
	}
227
 
227
 
228
	/**
228
	/**
229
	 * Désactive l'auto-commit puis débute la transaction
229
	 * Désactive l'auto-commit puis débute la transaction
230
	 */
230
	 */
231
	private function commencerTransaction() {
231
	private function commencerTransaction() {
232
		// Désactive l'autocommit le temps de la manipulation de l'arbre
232
		// Désactive l'autocommit le temps de la manipulation de l'arbre
Line 233... Line 233...
233
		$requete = 'SET AUTOCOMMIT = 0 ';
233
		$requete = 'SET AUTOCOMMIT = 0 ';
234
		$reussite_autocommit = $this->executerRequete($requete);
234
		$reussite_autocommit = $this->executer($requete);
235
 
235
 
236
		// Débute une nouvelle transaction
236
		// Débute une nouvelle transaction
Line 237... Line 237...
237
		$requete = 'BEGIN ';
237
		$requete = 'BEGIN ';
238
		$reussite_begin = $this->executerRequete($requete);
238
		$reussite_begin = $this->executer($requete);
239
	}
239
	}
240
 
240
 
241
	/**
241
	/**
242
	 * Termine la transaction puis réactive l'auto-commit
242
	 * Termine la transaction puis réactive l'auto-commit
243
	 */
243
	 */
Line 244... Line 244...
244
	private function completerTransaction() {
244
	private function completerTransaction() {
245
		// Complète la transaction
245
		// Complète la transaction
246
		$requete = 'COMMIT ';
246
		$requete = 'COMMIT ';
Line 247... Line 247...
247
		$reussite_commit = $this->executerRequete($requete);
247
		$reussite_commit = $this->executer($requete);
248
 
248
 
Line 249... Line 249...
249
		// Réactive l'autocommit le temps de la manipulation de l'arbre
249
		// Réactive l'autocommit le temps de la manipulation de l'arbre
250
		$requete = 'SET AUTOCOMMIT = 1 ';
250
		$requete = 'SET AUTOCOMMIT = 1 ';
251
		$reussite_autocommit = $this->executerRequete($requete);
251
		$reussite_autocommit = $this->executer($requete);
252
 
252
 
253
		echo 'OK';
253
		echo 'OK';
254
	}
254
	}
255
	
255
	
Line 256... Line 256...
256
	/**
256
	/**
257
	 * Annule la transaction et réactive l'auto-commit
257
	 * Annule la transaction et réactive l'auto-commit
258
	 */
258
	 */
Line 259... Line 259...
259
	private function annulerTransaction() {
259
	private function annulerTransaction() {
260
		// Annule la transaction
260
		// Annule la transaction
Line 261... Line 261...
261
		$requete = 'ROLLBACK ';
261
		$requete = 'ROLLBACK ';
262
		$reussite_rollback = $this->executerRequete($requete);
262
		$reussite_rollback = $this->executer($requete);
263
 
263
 
264
		// Réactive l'autocommit le temps de la manipulation de l'arbre
264
		// Réactive l'autocommit le temps de la manipulation de l'arbre
265
		$requete = 'SET AUTOCOMMIT = 1 ';
265
		$requete = 'SET AUTOCOMMIT = 1 ';
266
		$reussite_autocommit = $this->executerRequete($requete);
266
		$reussite_autocommit = $this->executer($requete);
267
 
267
 
268
		echo 'ERROR';
268
		echo 'ERROR';
269
	}
269
	}
-
 
270
 
-
 
271
	/** 
270
 
272
	 * Renvoie les bornes d'un noeud de l'arbre des mots clés
-
 
273
	 */
-
 
274
	private function calculerBornesEtNiveau($id_mot_cle,$id_utilisateur) {
271
	/** 
275
		$requete = 	'SELECT bd, bg, niveau '.
272
	 * Renvoie les bornes d'un noeud de l'arbre des mots clés
276
					'FROM cel_mots_cles'.$this->suffix.' '.
Line 273... Line 277...
273
	 */
277
					'WHERE id_mot_cle_utilisateur = '.$this->proteger($id_mot_cle).' '.
274
	private function calculerBornesEtNiveau($id_mot_cle,$id_utilisateur) {
278
					'	AND ce_utilisateur = '.$this->proteger($id_utilisateur).' ';
275
		$requete = 	'SELECT cmc_bd, cmc_bg, cmc_niveau '.
279
		$resultat = $this->requeter($requete);
276
					'FROM cel_mots_cles'.$this->suffix.' '.
280
		
277
					'WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" '.
281
		if(is_array($resultat) && count($resultat) > 0) {
278
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
282
			$valeurs = $resultat[0];
279
		$resultat = $this->recupererResultat($requete);
283
		}
280
		$valeurs = $resultat->fetchrow(DB_FETCHMODE_ASSOC);
284
		
281
		return $valeurs;
285
		return $valeurs;
Line 282... Line 286...
282
	}
286
	}
283
 
287
 
284
	/**
288
	/**
285
	 * Décale les bornes de deux pour insérer un nouvel élément
289
	 * Décale les bornes de deux pour insérer un nouvel élément
286
	 */ 
290
	 */ 
287
	private function decalerBornesPlusDeux($valeur, $id_utilisateur) {
291
	private function decalerBornesPlusDeux($valeur, $id_utilisateur) {
Line 288... Line 292...
288
		// Décalage borne droite
292
		// Décalage borne droite
289
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
293
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
Line 290... Line 294...
290
					'SET cmc_bd = cmc_bd + 2 WHERE cmc_bd >= "'.$DB->escapeSimple($valeur).'" '.
294
					'SET bd = bd + 2 WHERE bd >= '.$this->proteger($valeur).' '.
Line 307... Line 311...
307
	private function decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) {
311
	private function decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) {
308
		$decalage = $bd - $bg + 1;
312
		$decalage = $bd - $bg + 1;
Line 309... Line 313...
309
 
313
 
310
		// Décalage borne droite
314
		// Décalage borne droite
311
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
315
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
312
					'SET cmc_bd = cmc_bd - "'.$DB->escapeSimple($decalage).'" '.
316
					'SET bd = bd - '.$this->proteger($decalage).' '.
313
					'WHERE cmc_bd >=  "'.$DB->escapeSimple($bg).'" '.
317
					'WHERE bd >=  '.$this->proteger($bg).' '.
314
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
318
					'	AND ce_utilisateur = '.$this->proteger($id_utilisateur).' ';
Line 315... Line 319...
315
		$reussi_1 = $this->executerRequete($requete);
319
		$reussi_1 = $this->executer($requete);
316
 
320
 
317
		// Décalage borne gauche
321
		// Décalage borne gauche
318
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
322
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
319
					'SET cmc_bg = cmc_bg - "'.$DB->escapeSimple($decalage).'" '.
323
					'SET bg = bg - '.$this->proteger($decalage).' '.
320
					'WHERE cmc_bg >  "'.$DB->escapeSimple($bg).'" '.
324
					'WHERE bg >  '.$this->proteger($bg).' '.
Line 321... Line 325...
321
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
325
					'	AND ce_utilisateur = '.$this->proteger($id_utilisateur).' ';
322
		$reussi_2 = $this->executerRequete($requete);
326
		$reussi_2 = $this->executer($requete);
Line 323... Line 327...
323
		
327
		
Line 330... Line 334...
330
	private function decalerBornesPlusIntervalle($valeur_bornes, $largeur, $id_utilisateur) {
334
	private function decalerBornesPlusIntervalle($valeur_bornes, $largeur, $id_utilisateur) {
331
		$decalage = $largeur;
335
		$decalage = $largeur;
Line 332... Line 336...
332
 
336
 
333
		// decalage borne droite
337
		// decalage borne droite
334
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
338
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
335
					'SET cmc_bd = cmc_bd + "'.$DB->escapeSimple($decalage).'" '.
339
					'SET bd = bd + '.$this->proteger($decalage).' '.
336
					'WHERE cmc_bd >=  "'.$DB->escapeSimple($valeur_bornes).'" '.
340
					'WHERE bd >=  '.$this->proteger($valeur_bornes).' '.
337
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
341
					'	AND ce_utilisateur = '.$this->proteger($id_utilisateur).' ';
Line 338... Line 342...
338
		$reussi_1 = $this->executerRequete($requete);
342
		$reussi_1 = $this->executer($requete);
339
 
343
 
340
		// decalage borne gauche
344
		// decalage borne gauche
341
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
345
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
342
					'SET cmc_bg = cmc_bg + "'.$DB->escapeSimple($decalage).'" '.
346
					'SET bg = bg + '.$this->proteger($decalage).' '.
343
					'WHERE cmc_bg >=  "'.$DB->escapeSimple($valeur_bornes).'" '.
347
					'WHERE bg >=  '.$this->proteger($valeur_bornes).' '.
Line 344... Line 348...
344
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
348
					'	AND ce_utilisateur = '.$this->proteger($id_utilisateur).' ';
345
		$reussi_2 = $this->executerRequete($requete);
349
		$reussi_2 = $this->executer($requete);
Line 346... Line 350...
346
 
350
 
347
		return $reussi_1 && $reussi_2;
351
		return $reussi_1 && $reussi_2;
348
	}
352
	}
349
 
353
 
350
	/**
354
	/**
351
	 * Inverse les bornes d'un intervalle pour l'exclure des modifications sur l'arbre sans changer la hiérarchie.
355
	 * Inverse les bornes d'un intervalle pour l'exclure des modifications sur l'arbre sans changer la hiérarchie.
352
	 */
356
	 */
353
	private function exclureIntervalle($bg, $bd, $id_utilisateur) {
357
	private function exclureIntervalle($bg, $bd, $id_utilisateur) {
354
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
358
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
355
					'SET cmc_bd = cmc_bd - "'.$DB->escapeSimple($bd).'" - 1 , '.
359
					'SET bd = bd - '.$this->proteger($bd).' - 1 , '.
Line 356... Line 360...
356
					'	cmc_bg =  cmc_bg -  "'.$DB->escapeSimple($bd).'" - 1 '.
360
					'	bg =  bg -  '.$this->proteger($bd).' - 1 '.
357
					'WHERE cmc_bd <=  "'.$DB->escapeSimple($bd).'" '.
361
					'WHERE bd <=  '.$this->proteger($bd).' '.
Line 358... Line 362...
358
					'	AND cmc_bg >=  "'.$DB->escapeSimple($bg).'" '.
362
					'	AND bg >=  '.$this->proteger($bg).' '.
359
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
363
					'	AND ce_utilisateur = '.$this->proteger($id_utilisateur).' ';
360
 
364
 
361
		return $this->executerRequete($requete);
365
		return $this->executer($requete);
362
	}
366
	}
Line 363... Line 367...
363
 
367
 
364
	/** 
368
	/** 
365
	 * Recale les bornes dun intervalle pour l'inclure dans l'arbre à la bonne place.
369
	 * Recale les bornes dun intervalle pour l'inclure dans l'arbre à la bonne place.
366
	 * Décalage borne droite
370
	 * Décalage borne droite
367
	 */
371
	 */
368
	private function inclureIntervalle($bg, $bd, $decalage,$modif_niveau, $id_utilisateur) {
372
	private function inclureIntervalle($bg, $bd, $decalage,$modif_niveau, $id_utilisateur) {
369
 
373
 
Line 370... Line 374...
370
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
374
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
371
					'SET cmc_bg =  cmc_bg + "'.$DB->escapeSimple($decalage).'" , '.
375
					'SET bg =  bg + '.$this->proteger($decalage).' , '.
Line 372... Line 376...
372
					'	cmc_bd = cmc_bd + "'.$DB->escapeSimple($decalage).'", '.
376
					'	bd = bd + '.$this->proteger($decalage).', '.
373
					'	cmc_niveau = cmc_niveau + "'.$modif_niveau.'" '.
377
					'	niveau = niveau + '.$modif_niveau.' '.
374
					'WHERE cmc_bg >=  "'.$DB->escapeSimple($bg).'" '.
378
					' WHERE bg >=  '.$this->proteger($bg).' '.
375
					'	AND cmc_bd <=  "'.$DB->escapeSimple($bd).'" '.
379
					'	AND bd <=  '.$this->proteger($bd).' '.
376
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
380
					'	AND ce_utilisateur = '.$this->proteger($id_utilisateur).' ';
Line 377... Line 381...
377
 
381
 
378
		return $this->executerRequete($requete);
-
 
379
	}
-
 
380
 
-
 
381
	private function changerPere($id_mot_cle, $id_pere, $id_utilisateur) {
-
 
382
		$requete = 	'UPDATE cel_mots_cles'.$this->suffix.' '.
-
 
383
					'SET cmc_id_parent = "'.$DB->escapeSimple($id_pere).'" '.
-
 
384
					'WHERE cmc_id_mot_cle_utilisateur = "'.$DB->escapeSimple($id_mot_cle).'" '.
-
 
385
					'	AND cmc_id_proprietaire = "'.$DB->escapeSimple($id_utilisateur).'" ';
-
 
386
		
-
 
387
		return $this->executerRequete($requete);
-
 
388
	}
-
 
389
	
-
 
390
	private function executerRequete($requete) {
-
 
391
		$DB = $this->connectDB($this->config, 'cel_db');
-
 
392
		$resultat =& $DB->query($requete);
-
 
393
		$execution = true;
-
 
394
		if (PEAR::isError($resultat)) {
-
 
395
			die($res->getMessage());
-
 
396
			$execution = false;
-
 
397
		}
-
 
398
		return $execution;
-
 
399
	}
-
 
400
	
-
 
401
	private function recupererResultat($requete) {
-
 
402
		$DB = $this->connectDB($this->config, 'cel_db');
-
 
403
		$resultat =& $DB->query($requete);
-
 
404
		if (PEAR::isError($resultat)) {
-
 
405
			die($res->getMessage());
-
 
406
			$resultat = false;
-
 
407
		}
-
 
408
		return $resultat;
-
 
409
	}
-
 
410
	
-
 
411
	private function verifierLignesAffectees($requete) {
-
 
412
		$DB = $this->connectDB($this->config, 'cel_db');
-
 
413
		$resultat =& $DB->query($requete);
-
 
414
		$execution = true;
382
		return $this->executer($requete);
415
		if (PEAR::isError($resultat)) {
383
	}
416
			die($res->getMessage());
384
 
417
			$execution = false;
385
	private function changerPere($id_mot_cle, $id_pere, $id_utilisateur) {