Subversion Repositories eFlore/Applications.cel

Rev

Rev 1872 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1872 Rev 1878
Line 130... Line 130...
130
			} else {
130
			} else {
131
				return false;
131
				return false;
132
			}
132
			}
133
		} else if ($action == 'deplacement') {
133
		} else if ($action == 'deplacement') {
Line 134... Line 134...
134
			
134
			
Line 135... Line 135...
135
			$this->commencerTransaction();
135
			self::commencerTransaction();
136
			
136
			
137
			$transaction_reussie_1 = true;
137
			$transaction_reussie_1 = true;
138
			$id_pere = $pairs['parent'];
138
			$id_pere = $pairs['parent'];
Line 169... Line 169...
169
			$transaction_reussie_6 = $this->changerPere($id_mot_cle, $id_pere, $id_utilisateur);
169
			$transaction_reussie_6 = $this->changerPere($id_mot_cle, $id_pere, $id_utilisateur);
Line 170... Line 170...
170
 
170
 
171
			if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false && 
171
			if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false && 
172
				$transaction_reussie_3 !== false && $transaction_reussie_4 !== false && 
172
				$transaction_reussie_3 !== false && $transaction_reussie_4 !== false && 
173
				$transaction_reussie_5 !== false && $transaction_reussie_6 !== false) {
173
				$transaction_reussie_5 !== false && $transaction_reussie_6 !== false) {
174
				$this->completerTransaction();
174
				self::completerTransaction();
175
				return true;
175
				return true;
176
			} else {
176
			} else {
177
				$this->annulerTransaction();
177
				self::annulerTransaction();
178
				return false;
178
				return false;
179
			}
179
			}
180
		}
180
		}
181
		return true;
181
		return true;
Line 194... Line 194...
194
		$id_mot_cle = $pairs['id'];
194
		$id_mot_cle = $pairs['id'];
195
		$id_parent = $pairs['parent'];
195
		$id_parent = $pairs['parent'];
Line 196... Line 196...
196
 
196
 
Line 197... Line -...
197
		$this->ajouterMotCleRacine($id_utilisateur);
-
 
198
 
-
 
199
		$this->commencerTransaction();
197
		$this->ajouterMotCleRacine($id_utilisateur);
200
 
198
 
201
		$bornes = $this->calculerBornesEtNiveau($id_parent, $id_utilisateur);
199
		$bornes = $this->calculerBornesEtNiveau($id_parent, $id_utilisateur);
202
		$borne_pere = $bornes['bd'];
200
		$borne_pere = $bornes['bd'];
203
		$niveau = $bornes['niveau'] + 1;
201
		$niveau = $bornes['niveau'] + 1;
Line -... Line 202...
-
 
202
		$bg = $bornes['bd'];
-
 
203
		$bd = $bg + 1;
-
 
204
 
204
		$bg = $bornes['bd'];
205
        if(!$borne_pere) return false;
Line 205... Line 206...
205
		$bd = $bg + 1;
206
 
206
 
207
		self::commencerTransaction();
207
		$transaction_reussie_1 = $this->decalerBornesPlusDeux($borne_pere,$id_utilisateur) ? true : false;
208
		$transaction_reussie_1 = $this->decalerBornesPlusDeux($borne_pere,$id_utilisateur) ? true : false;
Line 218... Line 219...
218
					Cel::db()->proteger($id_parent).') ' ;
219
					Cel::db()->proteger($id_parent).') ' ;
Line 219... Line 220...
219
							
220
							
Line 220... Line 221...
220
		$transaction_reussie_2 = Cel::db()->executer($requete);
221
		$transaction_reussie_2 = Cel::db()->executer($requete);
-
 
222
 
-
 
223
		if ($transaction_reussie_1 && $transaction_reussie_2) {
-
 
224
            // on sort de self::createElement ==> JRest::(get|post) ==> JRest->created() qui fait header().
-
 
225
            // or si nous dépassons ini_get(output_buffering) nous ne pouvons plus réécrire le code de retour
-
 
226
            // HTTP, de plus, si ini_get(output_buffering) == off, nous enverrions un warning.
221
 
227
            // d'où ce clone de JRest::created();
222
		if ($transaction_reussie_1 && $transaction_reussie_2) {
228
            header('HTTP/1.0 201 Created');
223
			$this->completerTransaction();
229
			self::completerTransaction();
-
 
230
            exit;
-
 
231
		} else {
224
			return true;
232
            // cf ci-dessus: JRest::badRequest
225
		} else {
233
            header('HTTP/1.0 400 Bad Request');
226
			$this->annulerTransaction();
234
			self::annulerTransaction();
227
			return false;
235
            exit;
228
		}
236
		}
Line 229... Line 237...
229
		return true;
237
		return true;
Line 237... Line 245...
237
		
245
		
238
		$tableau_ids_mots_cles = array();
246
		$tableau_ids_mots_cles = array();
Line 239... Line 247...
239
		$tableau_ids_mots_cles[] = $id_mot_cle;
247
		$tableau_ids_mots_cles[] = $id_mot_cle;
240
 
248
 
Line 241... Line 249...
241
		$this->controleUtilisateur($id_utilisateur);		
249
		$this->controleUtilisateur($id_utilisateur);		
242
		$this->commencerTransaction();
250
		self::commencerTransaction();
243
 
251
 
244
		$bornes  = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
252
		$bornes  = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
Line 263... Line 271...
263
						
271
						
264
			$transaction_reussie_1 = Cel::db()->executer($requete);
272
			$transaction_reussie_1 = Cel::db()->executer($requete);
Line 265... Line 273...
265
			$transaction_reussie_2 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) ? true : false;
273
			$transaction_reussie_2 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) ? true : false;
266
	
274
	
267
			if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false) {
275
			if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false) {
268
				$this->completerTransaction();
276
				self::completerTransaction();
269
			} else {
277
			} else {
270
				$this->annulerTransaction();
278
				self::annulerTransaction();
271
			}
279
			}
272
		}
280
		}
273
		// Suppression des liaisons associées à ce mot clé
281
		// Suppression des liaisons associées à ce mot clé
Line 316... Line 324...
316
	}
324
	}
Line 317... Line 325...
317
 
325
 
318
	/**
326
	/**
319
	 * Désactive l'auto-commit puis débute la transaction
327
	 * Désactive l'auto-commit puis débute la transaction
320
	 */
328
	 */
321
	private function commencerTransaction() {
329
	static function commencerTransaction() {
322
		// Désactive l'autocommit le temps de la manipulation de l'arbre
-
 
323
		$requete = 'SET AUTOCOMMIT = 0 ';
330
		// Désactive l'autocommit le temps de la manipulation de l'arbre
324
		$reussite_autocommit = Cel::db()->executer($requete);
-
 
325
 
331
		$reussite_autocommit = Cel::db()->executer("SET AUTOCOMMIT = 0");
326
		// Débute une nouvelle transaction
-
 
327
		$requete = 'BEGIN ';
332
		// Débute une nouvelle transaction
328
		$reussite_begin = Cel::db()->executer($requete);
333
		$reussite_begin = Cel::db()->executer("BEGIN");
Line 329... Line 334...
329
	}
334
	}
330
 
335
 
331
	/**
336
	/**
332
	 * Termine la transaction puis réactive l'auto-commit
337
	 * Termine la transaction puis réactive l'auto-commit
333
	 */
338
	 */
334
	private function completerTransaction() {
-
 
335
		// Complète la transaction
339
	static function completerTransaction() {
336
		$requete = 'COMMIT ';
-
 
337
		$reussite_commit = Cel::db()->executer($requete);
340
		// Complète la transaction
338
 
-
 
339
		// Réactive l'autocommit le temps de la manipulation de l'arbre
341
		$reussite_commit = Cel::db()->executer("COMMIT");
Line 340... Line 342...
340
		$requete = 'SET AUTOCOMMIT = 1 ';
342
		// Réactive l'autocommit le temps de la manipulation de l'arbre
341
		$reussite_autocommit = Cel::db()->executer($requete);
-
 
342
 
-
 
343
		echo 'OK';
343
		$reussite_autocommit = Cel::db()->executer("SET AUTOCOMMIT = 1");
Line 344... Line 344...
344
		// on sort de self::(create|update)Element ==> JRest::(get|post) ==> JRest->created() qui fait header().
344
 
345
		// TODO: si updateElement(): die();
345
		echo 'OK';
346
	}
346
	}
347
	
347
	
348
	/**
348
	/**
349
	 * Annule la transaction et réactive l'auto-commit
-
 
350
	 */
349
	 * Annule la transaction et réactive l'auto-commit
351
	private function annulerTransaction() {
-
 
352
		// Annule la transaction
350
	 */
353
		$requete = 'ROLLBACK ';
-
 
354
		$reussite_rollback = Cel::db()->executer($requete);
351
	static function annulerTransaction() {
Line 355... Line 352...
355
 
352
		// Annule la transaction
356
		// Réactive l'autocommit le temps de la manipulation de l'arbre
353
		$reussite_rollback = Cel::db()->executer("ROLLBACK");
Line 357... Line 354...
357
		$requete = 'SET AUTOCOMMIT = 1 ';
354
		// Réactive l'autocommit le temps de la manipulation de l'arbre