Beispiel #1
0
 public function save(\Doctrine_Connection $conn = null)
 {
     if ($conn == null) {
         $conn = Doctrine_Manager::connection();
     }
     try {
         $isNew = $this->isNew();
         $conn->beginTransaction();
         parent::save($conn);
         if ($isNew && $this->ei_scenario_str) {
             //création des blocks de la version_structure relativement à
             // la liste correspondant au scenario structure.
             //ei_version_structure utilisé à la précédente itération de boucle.
             $ei_version_str_prec = null;
             if ($conn == null) {
                 $conn = Doctrine_Manager::connection();
             }
             $this->createStructureCopy($this, $conn, $this->getEiScenarioId(), EiVersionStructure::getStructureTypes());
             // Déclaration de la table EiVersionStructure.
             /** @var EiVersionStructureTable $tableVersionStr */
             $tableVersionStr = Doctrine_Core::getTable('EiVersionStructure');
             //***********************************//
             //***   MISE A JOUR DES LFT/RGT   ***//
             //***********************************//
             // On récupère l'arbre de la structure de la copie.
             /** @var Doctrine_Tree_NestedSet $versionStructure */
             $versionStructure = $tableVersionStr->getEiVersionTree($this->getId());
             if ($versionStructure->count() > 0) {
                 $compteur = 1;
                 $index = 0;
                 $listeElts = array();
                 $this->evaluateStructure($listeElts, $compteur, $index, $versionStructure, $versionStructure->getFirst());
                 $tableVersionStr->updateVersionStructureFromTab($listeElts, $this->getId(), $conn);
             }
         }
         $conn->commit();
     } catch (Exception $e) {
         $conn->rollback();
         throw $e;
     }
 }