Exemplo n.º 1
0
 /**
  * Méthode permettant de vérifier puis compléter un jeu de données s'il manque des attributs.
  */
 public function completeDataSet()
 {
     /** @var EiDataSetStructureTable $dsTable */
     $dsTable = Doctrine_Core::getTable("EiDataSetStructure");
     /** @var EiDataLineTable $dlTable */
     $dlTable = Doctrine_Core::getTable("EiDataLine");
     // Récupération des éléments manquants.
     $eltsMqts = $dsTable->findMissingElementsInDataSet($this->getId(), $this->getEiNode()->getEiScenarioNode()->getObjId());
     if ($eltsMqts != null && $eltsMqts->count() > 0) {
         // On parcourt la liste d'éléments manquants.
         /** @var EiDataSetStructure $elt */
         foreach ($eltsMqts as $elt) {
             // CAS ATTRIBUT.
             if ($elt->getType() == EiDataSetStructure::$TYPE_LEAF) {
                 $lignesConcernees = $dsTable->getRelatedDataSetLines($this->getId(), $elt->getEiDatasetStructureParentId());
                 if (count($lignesConcernees) > 0) {
                     foreach ($lignesConcernees as $ligneConcernee) {
                         $parent = $dlTable->find($ligneConcernee["id"]);
                         $ligne = new EiDataLine();
                         $ligne->setEiDataSetId($this->getId());
                         $ligne->setEiDataSetStructureId($elt->getId());
                         $ligne->setRootId($elt->getRootId());
                         $ligne->save();
                         $ligne->getNode()->insertAsLastChildOf($parent);
                     }
                 }
             }
         }
     }
 }