public function Modifier()
 {
     // Ouverture de la transaction si on ne l'ai pas déjà.
     $dejaEnTransaction = GBase::EstEnTransaction();
     if ($dejaEnTransaction === false) {
         GBase::DemarrerTransaction();
     }
     $retour = true;
     $ancienOrdre = NULL;
     $nouvelOrdre = $this->Ordre();
     if ($nouvelOrdre !== NULL) {
         // On récupère l'ordre de l'élément.
         $this->AjouterColSelection(COL_ORDRE);
         $retour = $this->Charger();
         $ancienOrdre = $this->Ordre();
         $this->Ordre($nouvelOrdre);
     }
     if ($ancienOrdre === NULL && $nouvelOrdre !== NULL) {
         GLog::LeverException(EXM_0234, $this->GetNom() . '::Modifier, impossible de récupérer l\'ordre de l\'élément d\'id [' . $this->Id() . '].');
         $retour = false;
     }
     $log = true;
     // On modifie l'élément.
     if ($retour !== false) {
         $retour = parent::Modifier();
         // Si l'ordre de l'élément à changé, on modifie les éléments qui en sont impactés.
         if ($retour !== false && $nouvelOrdre !== NULL && $nouvelOrdre !== $ancienOrdre) {
             // On récupère la liste relative au type d'élément afin de modifier l'ordre si besoin.
             $mListe = $this->GetNouvelleListe();
             if ($mListe === NULL) {
                 GLog::LeverException(EXM_0233, $this->GetNom() . '::Modifier, impossible de récupérer un objet liste.');
                 $retour = false;
             } else {
                 // Si l'ancien ordre est supérieur au nouveau.
                 if ($nouvelOrdre < $ancienOrdre) {
                     $mListe->AjouterColModificationExt(0, COL_ORDRE, COL_ORDRE, 1);
                     $mListe->AjouterFiltreEntre(COL_ORDRE, $nouvelOrdre, $ancienOrdre - 1);
                     $mListe->AjouterFiltreDifferent(COL_ID, $this->Id());
                     $retour = $mListe->Modifier();
                 } else {
                     $mListe->AjouterColModificationExt(0, COL_ORDRE, COL_ORDRE, -1);
                     $mListe->AjouterFiltreEntre(COL_ORDRE, $ancienOrdre + 1, $nouvelOrdre);
                     $mListe->AjouterFiltreDifferent(COL_ID, $this->Id());
                     $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_0235, $this->GetNom() . '::Modification, échec de la modification en base.');
     }
     return $retour;
 }
Exemplo n.º 2
0
 public function Modifier()
 {
     // On modifie le menu.
     $retour = parent::Modifier();
     $retourDroit = true;
     // On modifie la liste des fonctionnalités auxquelles le supergrade a accès.
     $listeDroitsSuperGrades = $this->ListeDroitsSuperGrades();
     if ($listeDroitsSuperGrades !== NULL) {
         $retourFonc = $listeDroitsSuperGrades->Supprimer();
         if ($retourFonc !== false) {
             $listeDroitsSuperGrades->SetListeChampValeur(COL_SUPERGRADE, $this->Id());
             $retourDroit = $listeDroitsSuperGrades->Ajouter();
         }
     }
     return $retour && $retourDroit;
 }