Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1877 → Rev 1878

/trunk/jrest/services/InventoryKeyWordList.php
132,7 → 132,7
}
} else if ($action == 'deplacement') {
$this->commencerTransaction();
self::commencerTransaction();
$transaction_reussie_1 = true;
$id_pere = $pairs['parent'];
171,10 → 171,10
if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false &&
$transaction_reussie_3 !== false && $transaction_reussie_4 !== false &&
$transaction_reussie_5 !== false && $transaction_reussie_6 !== false) {
$this->completerTransaction();
self::completerTransaction();
return true;
} else {
$this->annulerTransaction();
self::annulerTransaction();
return false;
}
}
196,8 → 196,6
 
$this->ajouterMotCleRacine($id_utilisateur);
 
$this->commencerTransaction();
 
$bornes = $this->calculerBornesEtNiveau($id_parent, $id_utilisateur);
$borne_pere = $bornes['bd'];
$niveau = $bornes['niveau'] + 1;
204,6 → 202,9
$bg = $bornes['bd'];
$bd = $bg + 1;
 
if(!$borne_pere) return false;
 
self::commencerTransaction();
$transaction_reussie_1 = $this->decalerBornesPlusDeux($borne_pere,$id_utilisateur) ? true : false;
$requete = 'INSERT INTO cel_mots_cles'.$this->suffixe_table.' '.
220,11 → 221,18
$transaction_reussie_2 = Cel::db()->executer($requete);
 
if ($transaction_reussie_1 && $transaction_reussie_2) {
$this->completerTransaction();
return true;
// on sort de self::createElement ==> JRest::(get|post) ==> JRest->created() qui fait header().
// or si nous dépassons ini_get(output_buffering) nous ne pouvons plus réécrire le code de retour
// HTTP, de plus, si ini_get(output_buffering) == off, nous enverrions un warning.
// d'où ce clone de JRest::created();
header('HTTP/1.0 201 Created');
self::completerTransaction();
exit;
} else {
$this->annulerTransaction();
return false;
// cf ci-dessus: JRest::badRequest
header('HTTP/1.0 400 Bad Request');
self::annulerTransaction();
exit;
}
return true;
}
239,7 → 247,7
$tableau_ids_mots_cles[] = $id_mot_cle;
 
$this->controleUtilisateur($id_utilisateur);
$this->commencerTransaction();
self::commencerTransaction();
 
$bornes = $this->calculerBornesEtNiveau($id_mot_cle, $id_utilisateur);
if($bornes) {
265,9 → 273,9
$transaction_reussie_2 = $this->decalerBornesMoinsIntervalle($bg, $bd, $id_utilisateur) ? true : false;
if ($transaction_reussie_1 !== false && $transaction_reussie_2 !== false) {
$this->completerTransaction();
self::completerTransaction();
} else {
$this->annulerTransaction();
self::annulerTransaction();
}
}
// Suppression des liaisons associées à ce mot clé
318,44 → 326,33
/**
* Désactive l'auto-commit puis débute la transaction
*/
private function commencerTransaction() {
static function commencerTransaction() {
// Désactive l'autocommit le temps de la manipulation de l'arbre
$requete = 'SET AUTOCOMMIT = 0 ';
$reussite_autocommit = Cel::db()->executer($requete);
 
$reussite_autocommit = Cel::db()->executer("SET AUTOCOMMIT = 0");
// Débute une nouvelle transaction
$requete = 'BEGIN ';
$reussite_begin = Cel::db()->executer($requete);
$reussite_begin = Cel::db()->executer("BEGIN");
}
 
/**
* Termine la transaction puis réactive l'auto-commit
*/
private function completerTransaction() {
static function completerTransaction() {
// Complète la transaction
$requete = 'COMMIT ';
$reussite_commit = Cel::db()->executer($requete);
 
$reussite_commit = Cel::db()->executer("COMMIT");
// Réactive l'autocommit le temps de la manipulation de l'arbre
$requete = 'SET AUTOCOMMIT = 1 ';
$reussite_autocommit = Cel::db()->executer($requete);
$reussite_autocommit = Cel::db()->executer("SET AUTOCOMMIT = 1");
 
echo 'OK';
// on sort de self::(create|update)Element ==> JRest::(get|post) ==> JRest->created() qui fait header().
// TODO: si updateElement(): die();
}
/**
* Annule la transaction et réactive l'auto-commit
*/
private function annulerTransaction() {
static function annulerTransaction() {
// Annule la transaction
$requete = 'ROLLBACK ';
$reussite_rollback = Cel::db()->executer($requete);
 
$reussite_rollback = Cel::db()->executer("ROLLBACK");
// Réactive l'autocommit le temps de la manipulation de l'arbre
$requete = 'SET AUTOCOMMIT = 1 ';
$reussite_autocommit = Cel::db()->executer($requete);
$reussite_autocommit = Cel::db()->executer("SET AUTOCOMMIT = 1");
 
echo 'ERROR';
}