示例#1
0
 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;
 }
示例#2
0
 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;
 }