public function Ajouter() { // Ouverture de la transaction si on ne l'ai pas déjà. $dejaEnTransaction = GBase::EstEnTransaction(); if ($dejaEnTransaction === false) { GBase::DemarrerTransaction(); } // On inscrit le nouveau libellé dans la base avec l'id max + 1 comme id. $mLibelle = $this->LibelleObj(); $mLibelle->AjouterColInsertionMax(COL_ID, 1); $retour = $mLibelle->Ajouter(); if ($retour !== false) { // On récupère l'id max qui est l'id de notre libellé. $mLibelle->AjouterColSelectionMax(COL_ID); $retour = $mLibelle->Charger(); if ($retour !== false) { // Fermeture de la transaction si on ne l'était pas déjà. if ($dejaEnTransaction === false) { GBase::ValiderTransaction(); } // On copie le libellé pour toutes les autres langues. $mListeLibelles = new MListeLibelles(); $mListeLibelles->AjouterJointure(COL_LANGUE, COL_ID, 0, SQL_CROSS_JOIN); $mListeLibelles->AjouterColInsertionExt(0, COL_ID, COL_ID); $mListeLibelles->AjouterColInsertionExt(0, COL_LIBELLE, COL_LIBELLE); $mListeLibelles->AjouterColInsertionExt(0, COL_TYPELIBELLE, COL_TYPELIBELLE); $mListeLibelles->AjouterColInsertionExt(0, COL_LANGUEORIGINELLE, COL_LANGUEORIGINELLE); $mListeLibelles->AjouterColInsertionExt(1, COL_LANGUE, COL_ID); $mListeLibelles->AjouterFiltreEgal(COL_ID, $mLibelle->Id()); $mListeLibelles->AjouterFiltreDifferentPourJointure(1, COL_ID, GSession::Langue(COL_ID)); $mListeLibelles->Ajouter(); $this->Libelle(NULL, $mLibelle->Id()); // On ajoute ensuite l'objet normalement. return parent::Ajouter(); } } if ($dejaEnTransaction === false) { GBase::AnnulerTransaction(); } return $retour; }
public function Supprimer() { // Ouverture de la transaction si on ne l'ai pas déjà. $dejaEnTransaction = GBase::EstEnTransaction(); if ($dejaEnTransaction === false) { GBase::DemarrerTransaction(); } // On récupère l'ordre de l'élément. $this->AjouterColSelection(COL_ORDRE); $retour = $this->Charger(); // On récupère la liste relative au type d'élément afin de décrémenter l'ordre des éléments // possédant un ordre supérieur à celui qui va être supprimé. $mListe = $this->GetNouvelleListe(); if ($mListe === NULL) { GLog::LeverException(EXM_0210, $this->GetNom() . '::Supprimer, impossible de récupérer un objet liste.'); $retour = false; } else { if ($this->Ordre() === NULL) { GLog::LeverException(EXM_0211, $this->GetNom() . '::Supprimer, impossible de récupérer l\'ordre de l\'élément d\'id [' . $this->Id() . '].'); $retour = false; } } $log = true; // On supprime l'élément. if ($retour !== false) { $retour = parent::Supprimer(); // On décrémente l'ordre des éléments possédant un ordre supérieur à celui qui a été supprimé. if ($retour !== false) { $mListe->AjouterColModificationExt(0, COL_ORDRE, COL_ORDRE, -1); $mListe->AjouterFiltreSuperieur(COL_ORDRE, $this->Ordre()); $retour = $mListe->Modifier(); } else { $log = false; } } // Si on a créé nous même la transaction dans cette fonction, on commit ou rollback suivant le résultat. if ($dejaEnTransaction === false) { if ($retour === false) { GBase::AnnulerTransaction(); } else { GBase::ValiderTransaction(); } } if ($retour === false && $log === true) { GLog::LeverException(EXM_0212, $this->GetNom() . '::Supprimer, échec de la suppression en base.'); } return $retour; }