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'; |
} |