Subversion Repositories eFlore/Applications.cel

Rev

Rev 1869 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
821 jpm 2
// declare(encoding='UTF-8');
856 aurelien 3
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
416 aurelien 4
/**
821 jpm 5
 * Service de recherche et modification de l'arbre des mots clés associés à un id.
6
 * 1: Le service recoit un mot clé à ajouter à l'arbre
7
 * 2: Le service recherche l'arbre ou sous arbre correspondant au critères demandé
8
 * 3: Le service renvoie l'arbre au format json
9
 *
10
 * Encodage en entrée : utf8
11
 * Encodage en sortie : utf8
416 aurelien 12
 *
13
 * Cas d'utilisation :
14
 *
821 jpm 15
 * @author Aurélien PERONNET <aurelien@tela-botanica.org>
16
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
17
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
18
 * @version $Id$
19
 * @copyright © 2011, Tela-Botanica
416 aurelien 20
 */
856 aurelien 21
class InventoryKeyWordList extends Cel {
22
 
1298 aurelien 23
	protected $suffixe = '';
24
	protected $suffixe_table = null;
25
	protected $suffixe_champ = null;
26
 
27
	private function setChampsEtTablePourSuffixe($suffixe) {
28
		$this->suffixe = $suffixe;
29
		switch($suffixe) {
30
			case 'obs':
31
				$this->suffixe_table = '_obs';
32
				$this->suffixe_champ = '_obs';
33
			break;
34
			case 'images':
35
				$this->suffixe_table = '_images';
36
				$this->suffixe_champ = '_image';
37
			break;
38
		}
39
	}
416 aurelien 40
 
821 jpm 41
	public function getElement($uid) {
42
		// Controle detournement utilisateur
43
		$id_utilisateur = $uid[1] ;
44
		$this->controleUtilisateur($uid[1]);
1298 aurelien 45
		$this->setChampsEtTablePourSuffixe($uid[0]);
46
 
1872 raphael 47
		$this->envoyerJson(self::getMotsClefs($uid[1], $uid[0]));
48
		return TRUE; // compat: pourquoi renvoyer true si vide ?
49
	}
50
 
51
 
52
	static function getMotsClefs($uid, $type) {
53
		if($type == 'obs') {
54
			return Cel::db()->requeter(sprintf(
55
				'SELECT mot_cle, id_mot_cle_obs, ce_mot_cle_obs_parent'.
56
				' FROM cel_mots_cles_obs'.
57
				' WHERE id_utilisateur = %s'.
58
				' ORDER BY niveau',
59
				Cel::db()->proteger($uid)));
416 aurelien 60
		}
1872 raphael 61
 
62
		if($type == 'images') {
63
			return Cel::db()->requeter(sprintf(
64
				'SELECT mot_cle, id_mot_cle_image, ce_mot_cle_image_parent'.
65
				' FROM cel_mots_cles_images'.
66
				' WHERE id_utilisateur = %s'.
67
				' ORDER BY niveau',
68
				Cel::db()->proteger($uid)));
69
		}
70
		/* pour extraire un mot-clef en particulier (bien que getMotsClefId() soit plus adapté:
71
		array_walk($ret,
72
				   create_function('&$val, $k, $keyword',
73
								   'if($val["mot_cle"] != $keyword) $val = NULL;' .
74
								   'else $val = $val["id_mot_cle_obs"];'),
75
				   'XXX');
76
		$obsKeywordIdToDetach = array_filter($ret);
77
		$obsKeywordIdToDetach = array_pop($obsKeywordIdToDetach); */
78
 
79
		return array();
416 aurelien 80
	}
81
 
1872 raphael 82
 
83
	static function getMotsClefId($uid, $type, $keyword) {
84
		if($type == 'obs') {
85
			$ret = Cel::db()->requeter(sprintf(
86
				'SELECT mot_cle, id_mot_cle_obs, ce_mot_cle_obs_parent'.
87
				' FROM cel_mots_cles_obs'.
88
				' WHERE id_utilisateur = %s'.
89
				' AND mot_cle = %s'.
90
				' ORDER BY niveau',
91
				Cel::db()->proteger($uid),
92
				Cel::db()->proteger($keyword) ));
93
		}
94
 
95
		if($type == 'images') {
96
			$ret = Cel::db()->requeter(sprintf(
97
				'SELECT mot_cle, id_mot_cle_image, ce_mot_cle_image_parent'.
98
				' FROM cel_mots_cles_images'.
99
				' WHERE id_utilisateur = %s'.
100
				' AND mot_cle = %s'.
101
				' ORDER BY niveau',
102
				Cel::db()->proteger($uid),
103
				Cel::db()->proteger($keyword) ));
104
		}
105
		return @$ret[0]['id_mot_cle_obs'];
106
	}
107
 
821 jpm 108
	public function updateElement($uid, $pairs) {
109
		$id_utilisateur = $uid[1];
110
		$this->controleUtilisateur($uid[1]);
1298 aurelien 111
 
112
		$this->setChampsEtTablePourSuffixe($uid[0]);
416 aurelien 113
 
821 jpm 114
		$id_mot_cle = $pairs['id'];
115
		$action = $pairs['action'];
416 aurelien 116
 
821 jpm 117
		if ($action == 'modification') {
118
			$nouveau_nom = $pairs['motcle'];
1268 aurelien 119
			$nouvel_id_general = md5(mb_strtolower($nouveau_nom));
416 aurelien 120
 
1298 aurelien 121
			$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
1765 raphael 122
						'SET mot_cle = '.Cel::db()->proteger($nouveau_nom).' , '.
123
						'	md5 = '.Cel::db()->proteger($nouvel_id_general).' '.
124
						'WHERE id_mot_cle'.$this->suffixe_champ.' = '.Cel::db()->proteger($id_mot_cle).' '.
125
						'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur) ;
126
			$reussite = Cel::db()->executer($requete);
1298 aurelien 127
			if ($reussite !== false) {
821 jpm 128
				echo 'OK';
1834 aurelien 129
				return true;
130
			} else {
131
				return false;
821 jpm 132
			}
133
		} else if ($action == 'deplacement') {
856 aurelien 134
 
821 jpm 135
			$this->commencerTransaction();
856 aurelien 136
 
821 jpm 137
			$transaction_reussie_1 = true;
138
			$id_pere = $pairs['parent'];
139
			$bornes = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
856 aurelien 140
			$bg = $bornes['bg'];
141
			$bd = $bornes['bd'];
142
			$niveau = $bornes['niveau'];
416 aurelien 143
 
821 jpm 144
			// on inverse l'intervalle de l'élément déplacé et du sous arbre
856 aurelien 145
			$transaction_reussie_2 = $this->exclureIntervalle($bg, $bd, $id_utilisateur);
416 aurelien 146
 
821 jpm 147
			$bg_negative = $bg - $bd - 1;
148
			$bd_negative = $bd - $bd - 1;
416 aurelien 149
 
821 jpm 150
			// on recalcule les intervalles de l'arbre privé de ce sous arbre
856 aurelien 151
			$transaction_reussie_3 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur);
416 aurelien 152
 
821 jpm 153
			$bornes_pere = $this->calculerBornesEtNiveau($id_pere, $id_utilisateur);
856 aurelien 154
			$bg_pere = $bornes_pere['bg'];
155
			$bd_pere = $bornes_pere['bd'];
416 aurelien 156
 
856 aurelien 157
			$niveau_pere = $bornes_pere['niveau'];
416 aurelien 158
 
821 jpm 159
			$decalage = $bd - $bg + 1;
416 aurelien 160
 
821 jpm 161
			// on decale les bornes droite du pere pour préparer l'insertion
856 aurelien 162
			$transaction_reussie_4 = $this->decalerBornesPlusIntervalle($bd_pere, $decalage, $id_utilisateur);
821 jpm 163
 
164
			$nouvelle_bd = $bd_pere + $decalage;
165
			$modif_niveau = $niveau_pere - $niveau + 1;
416 aurelien 166
 
856 aurelien 167
			$transaction_reussie_5 = $this->inclureIntervalle($bg_negative, $bd_negative, $nouvelle_bd, $modif_niveau, $id_utilisateur);
168
 
169
			$transaction_reussie_6 = $this->changerPere($id_mot_cle, $id_pere, $id_utilisateur);
416 aurelien 170
 
1298 aurelien 171
			if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false &&
172
				$transaction_reussie_3 !== false && $transaction_reussie_4 !== false &&
173
				$transaction_reussie_5 !== false && $transaction_reussie_6 !== false) {
821 jpm 174
				$this->completerTransaction();
1834 aurelien 175
				return true;
821 jpm 176
			} else {
177
				$this->annulerTransaction();
1834 aurelien 178
				return false;
821 jpm 179
			}
180
		}
1841 raphael 181
		return true;
821 jpm 182
	}
416 aurelien 183
 
821 jpm 184
	public function createElement($pairs) {
185
		// Controle detournement utilisateur
1014 aurelien 186
		$this->controleUtilisateur($pairs['identifiant']);
416 aurelien 187
 
1298 aurelien 188
		$this->setChampsEtTablePourSuffixe($pairs['mode']);
1014 aurelien 189
		$id_utilisateur = $pairs['identifiant'];
821 jpm 190
		$mot_cle = $pairs['motcle'];
416 aurelien 191
 
856 aurelien 192
		// TODO supprimer accents
821 jpm 193
		$id_mot_cle_general = md5(mb_strtolower($mot_cle));
194
		$id_mot_cle = $pairs['id'];
195
		$id_parent = $pairs['parent'];
416 aurelien 196
 
821 jpm 197
		$this->ajouterMotCleRacine($id_utilisateur);
416 aurelien 198
 
821 jpm 199
		$this->commencerTransaction();
416 aurelien 200
 
821 jpm 201
		$bornes = $this->calculerBornesEtNiveau($id_parent, $id_utilisateur);
856 aurelien 202
		$borne_pere = $bornes['bd'];
203
		$niveau = $bornes['niveau'] + 1;
204
		$bg = $bornes['bd'];
821 jpm 205
		$bd = $bg + 1;
416 aurelien 206
 
821 jpm 207
		$transaction_reussie_1 = $this->decalerBornesPlusDeux($borne_pere,$id_utilisateur) ? true : false;
208
 
1298 aurelien 209
		$requete = 	'INSERT INTO  cel_mots_cles'.$this->suffixe_table.' '.
821 jpm 210
					'VALUES ( '.
1765 raphael 211
					Cel::db()->proteger($id_mot_cle).', '.
212
					Cel::db()->proteger($id_utilisateur).', '.
213
					Cel::db()->proteger($mot_cle).', '.
214
					Cel::db()->proteger($id_mot_cle_general).', '.
215
					Cel::db()->proteger($bg).', '.
216
					Cel::db()->proteger($bd).', '.
217
					Cel::db()->proteger($niveau).', '.
218
					Cel::db()->proteger($id_parent).') ' ;
856 aurelien 219
 
1765 raphael 220
		$transaction_reussie_2 = Cel::db()->executer($requete);
416 aurelien 221
 
821 jpm 222
		if ($transaction_reussie_1 && $transaction_reussie_2) {
223
			$this->completerTransaction();
1834 aurelien 224
			return true;
821 jpm 225
		} else {
226
			$this->annulerTransaction();
1834 aurelien 227
			return false;
416 aurelien 228
		}
1841 raphael 229
		return true;
416 aurelien 230
	}
231
 
821 jpm 232
	public function deleteElement($uid) {
233
 
1298 aurelien 234
		$this->setChampsEtTablePourSuffixe($uid[0]);
821 jpm 235
		$id_utilisateur = $uid[1];
236
		$id_mot_cle = $uid[2];
1300 aurelien 237
 
238
		$tableau_ids_mots_cles = array();
239
		$tableau_ids_mots_cles[] = $id_mot_cle;
416 aurelien 240
 
821 jpm 241
		$this->controleUtilisateur($id_utilisateur);
242
		$this->commencerTransaction();
416 aurelien 243
 
821 jpm 244
		$bornes  = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
1300 aurelien 245
		if($bornes) {
246
			$bg = $bornes['bg'];
247
			$bd = $bornes['bd'];
248
 
249
			$requete_mots_cles_fils = 'SELECT id_mot_cle'.$this->suffixe_champ.' as id FROM cel_mots_cles'.$this->suffixe_table.' '.
1765 raphael 250
						'WHERE bg >= '.Cel::db()->proteger($bg).' '.
251
						'	AND bd <= '.Cel::db()->proteger($bd).' '.
252
						'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
416 aurelien 253
 
1765 raphael 254
			$mots_cles_fils = Cel::db()->requeter($requete_mots_cles_fils);
1300 aurelien 255
			foreach ($mots_cles_fils as $fils) {
256
				$tableau_ids_mots_cles[] = $fils['id'];
257
			}
258
 
259
			$requete = 	'DELETE FROM cel_mots_cles'.$this->suffixe_table.' '.
1765 raphael 260
						'WHERE bg >= '.Cel::db()->proteger($bg).' '.
261
						'	AND bd <= '.Cel::db()->proteger($bd).' '.
262
						'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
1300 aurelien 263
 
1765 raphael 264
			$transaction_reussie_1 = Cel::db()->executer($requete);
1300 aurelien 265
			$transaction_reussie_2 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) ? true : false;
266
 
267
			if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false) {
268
				$this->completerTransaction();
269
			} else {
270
				$this->annulerTransaction();
271
			}
416 aurelien 272
		}
1300 aurelien 273
		// Suppression des liaisons associées à ce mot clé
274
		$gestion_liaisons = new LiaisonMotsCles($this->config, $this->suffixe);
275
		$gestion_liaisons->supprimerToutesLiaisonsPourIdMotCle($id_utilisateur, $tableau_ids_mots_cles);
1834 aurelien 276
 
277
		return true;
416 aurelien 278
	}
821 jpm 279
 
280
	private function ajouterMotCleRacine($id) {
856 aurelien 281
		$requete = 	'SELECT COUNT(*) as nb_mc '.
1298 aurelien 282
					'FROM cel_mots_cles'.$this->suffixe_table.' '.
1765 raphael 283
					'WHERE id_utilisateur = '.Cel::db()->proteger($id).' ';
284
		$resultat = Cel::db()->requeter($requete);
416 aurelien 285
 
856 aurelien 286
		if (is_array($resultat) && count($resultat) > 0) {
287
			$valeurs = $resultat[0]['nb_mc'];
416 aurelien 288
 
1298 aurelien 289
			switch ($this->suffixe) {
290
				case 'obs' :
821 jpm 291
					$nom_racine = 'Projets';
292
					$id_racine = 'racine_obs';
293
					break;
1298 aurelien 294
				case 'images' :
821 jpm 295
					$nom_racine = 'Mots clés';
296
					$id_racine = 'racine';
297
					break;
298
				default:
1298 aurelien 299
					$nom_racine = $this->suffixe;
300
					$id_racine = $this->suffixe;
821 jpm 301
			}
1425 aurelien 302
 
1765 raphael 303
			$md5_racine = Cel::db()->proteger(md5($nom_racine));
304
			$id_racine = Cel::db()->proteger($id_racine);
305
			$nom_racine = Cel::db()->proteger($nom_racine);
306
			$id_utilisateur = Cel::db()->proteger($id);
416 aurelien 307
 
1425 aurelien 308
			if ($valeurs == 0) {
309
				$requete = "INSERT INTO cel_mots_cles{$this->suffixe_table} ".
310
						   "VALUES ($id_racine, $id_utilisateur, $nom_racine, $md5_racine, ".
311
						   "1, 2, 0, '') ";
312
 
1765 raphael 313
				Cel::db()->executer($requete);
821 jpm 314
			}
416 aurelien 315
		}
821 jpm 316
	}
416 aurelien 317
 
821 jpm 318
	/**
319
	 * Désactive l'auto-commit puis débute la transaction
320
	 */
321
	private function commencerTransaction() {
322
		// Désactive l'autocommit le temps de la manipulation de l'arbre
323
		$requete = 'SET AUTOCOMMIT = 0 ';
1765 raphael 324
		$reussite_autocommit = Cel::db()->executer($requete);
416 aurelien 325
 
821 jpm 326
		// Débute une nouvelle transaction
327
		$requete = 'BEGIN ';
1765 raphael 328
		$reussite_begin = Cel::db()->executer($requete);
416 aurelien 329
	}
330
 
821 jpm 331
	/**
332
	 * Termine la transaction puis réactive l'auto-commit
333
	 */
334
	private function completerTransaction() {
335
		// Complète la transaction
336
		$requete = 'COMMIT ';
1765 raphael 337
		$reussite_commit = Cel::db()->executer($requete);
416 aurelien 338
 
821 jpm 339
		// Réactive l'autocommit le temps de la manipulation de l'arbre
340
		$requete = 'SET AUTOCOMMIT = 1 ';
1765 raphael 341
		$reussite_autocommit = Cel::db()->executer($requete);
416 aurelien 342
 
821 jpm 343
		echo 'OK';
1869 raphael 344
		// on sort de self::(create|update)Element ==> JRest::(get|post) ==> JRest->created() qui fait header().
345
		// TODO: si updateElement(): die();
416 aurelien 346
	}
821 jpm 347
 
348
	/**
349
	 * Annule la transaction et réactive l'auto-commit
350
	 */
351
	private function annulerTransaction() {
352
		// Annule la transaction
353
		$requete = 'ROLLBACK ';
1765 raphael 354
		$reussite_rollback = Cel::db()->executer($requete);
416 aurelien 355
 
821 jpm 356
		// Réactive l'autocommit le temps de la manipulation de l'arbre
357
		$requete = 'SET AUTOCOMMIT = 1 ';
1765 raphael 358
		$reussite_autocommit = Cel::db()->executer($requete);
416 aurelien 359
 
821 jpm 360
		echo 'ERROR';
361
	}
416 aurelien 362
 
821 jpm 363
	/**
364
	 * Renvoie les bornes d'un noeud de l'arbre des mots clés
365
	 */
366
	private function calculerBornesEtNiveau($id_mot_cle,$id_utilisateur) {
856 aurelien 367
		$requete = 	'SELECT bd, bg, niveau '.
1298 aurelien 368
					'FROM cel_mots_cles'.$this->suffixe_table.' '.
1765 raphael 369
					'WHERE id_mot_cle'.$this->suffixe_champ.' = '.Cel::db()->proteger($id_mot_cle).' '.
370
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
1300 aurelien 371
 
1765 raphael 372
		$resultat = Cel::db()->requeter($requete);
856 aurelien 373
 
1300 aurelien 374
		$valeurs = null;
856 aurelien 375
		if(is_array($resultat) && count($resultat) > 0) {
376
			$valeurs = $resultat[0];
377
		}
378
 
821 jpm 379
		return $valeurs;
380
	}
416 aurelien 381
 
821 jpm 382
	/**
383
	 * Décale les bornes de deux pour insérer un nouvel élément
384
	 */
385
	private function decalerBornesPlusDeux($valeur, $id_utilisateur) {
386
		// Décalage borne droite
1298 aurelien 387
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
388
					'SET bd = bd + 2 WHERE bd >= '.$valeur.' '.
1765 raphael 389
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
390
		$reussi_1 = Cel::db()->executer($requete);
821 jpm 391
 
392
		// Décalage borne gauche
1298 aurelien 393
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
856 aurelien 394
					'SET bg = bg + 2 '.
1298 aurelien 395
					'WHERE bg >= '.$valeur.' '.
1765 raphael 396
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
397
		$reussi_2 = Cel::db()->executer($requete);
821 jpm 398
 
1298 aurelien 399
		return $reussi_1 !== false && $reussi_2 !== false;
416 aurelien 400
	}
401
 
821 jpm 402
	/**
403
	 * Décale les bornes d'un intervalle negatif donne (pour la suppression d'un sous arbre).
404
	 */
405
	private function decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) {
406
		$decalage = $bd - $bg + 1;
416 aurelien 407
 
821 jpm 408
		// Décalage borne droite
1298 aurelien 409
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
410
					'SET bd = bd - '.$decalage.' '.
411
					'WHERE bd >=  '.$bg.' '.
1765 raphael 412
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
413
		$reussi_1 = Cel::db()->executer($requete);
416 aurelien 414
 
821 jpm 415
		// Décalage borne gauche
1298 aurelien 416
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
417
					'SET bg = bg - '.$decalage.' '.
418
					'WHERE bg >  '.$bg.' '.
1765 raphael 419
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
420
		$reussi_2 = Cel::db()->executer($requete);
821 jpm 421
 
1298 aurelien 422
		return $reussi_1 !== false && $reussi_2 !== false;
416 aurelien 423
	}
424
 
821 jpm 425
	/**
426
	 * Décale à droite des bornes donées d'un intervalle positif donne (pour l'ajout d'un sous arbre).
427
	 */
428
	private function decalerBornesPlusIntervalle($valeur_bornes, $largeur, $id_utilisateur) {
429
		$decalage = $largeur;
416 aurelien 430
 
821 jpm 431
		// decalage borne droite
1298 aurelien 432
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
433
					'SET bd = bd + '.$decalage.' '.
434
					'WHERE bd >=  '.$valeur_bornes.' '.
1765 raphael 435
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
436
		$reussi_1 = Cel::db()->executer($requete);
416 aurelien 437
 
821 jpm 438
		// decalage borne gauche
1298 aurelien 439
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
440
					'SET bg = bg + '.$decalage.' '.
441
					'WHERE bg >=  '.$valeur_bornes.' '.
1765 raphael 442
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
443
		$reussi_2 = Cel::db()->executer($requete);
416 aurelien 444
 
1298 aurelien 445
		return $reussi_1 !== false && $reussi_2 !== false;
821 jpm 446
	}
416 aurelien 447
 
821 jpm 448
	/**
449
	 * Inverse les bornes d'un intervalle pour l'exclure des modifications sur l'arbre sans changer la hiérarchie.
450
	 */
451
	private function exclureIntervalle($bg, $bd, $id_utilisateur) {
1298 aurelien 452
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
453
					'SET bd = bd - '.$bd.' - 1 , '.
454
					'	bg =  bg -  '.$bd.' - 1 '.
455
					'WHERE bd <=  '.$bd.' '.
456
					'	AND bg >=  '.$bg.' '.
1765 raphael 457
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
416 aurelien 458
 
1765 raphael 459
		return Cel::db()->executer($requete);
416 aurelien 460
	}
461
 
821 jpm 462
	/**
463
	 * Recale les bornes dun intervalle pour l'inclure dans l'arbre à la bonne place.
464
	 * Décalage borne droite
465
	 */
466
	private function inclureIntervalle($bg, $bd, $decalage,$modif_niveau, $id_utilisateur) {
416 aurelien 467
 
1298 aurelien 468
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
469
					'SET bg =  bg + '.$decalage.' , '.
470
					'	bd = bd + '.$decalage.', '.
856 aurelien 471
					'	niveau = niveau + '.$modif_niveau.' '.
1298 aurelien 472
					' WHERE bg >=  '.$bg.' '.
473
					'	AND bd <=  '.$bd.' '.
1765 raphael 474
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
416 aurelien 475
 
1765 raphael 476
		return Cel::db()->executer($requete);
821 jpm 477
	}
416 aurelien 478
 
821 jpm 479
	private function changerPere($id_mot_cle, $id_pere, $id_utilisateur) {
1298 aurelien 480
		$requete = 	'UPDATE cel_mots_cles'.$this->suffixe_table.' '.
1765 raphael 481
					'SET ce_mot_cle'.$this->suffixe_champ.'_parent = '.Cel::db()->proteger($id_pere).' '.
482
					'WHERE id_mot_cle'.$this->suffixe_champ.' = '.Cel::db()->proteger($id_mot_cle).' '.
483
					'	AND id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' ';
1300 aurelien 484
 
1765 raphael 485
		return Cel::db()->executer($requete);
821 jpm 486
	}
416 aurelien 487
 }
488
?>