Exemplo n.º 1
0
 /**
  * @param Doctrine_Connection $conn
  */
 public function createAutoMapping(Doctrine_Connection $conn = null)
 {
     /** @var EiBlockForeach $block */
     $block = $this;
     /** @var EiDataSetStructure $node */
     $node = $this->getIteratorMapping()->getEiDataSetStructureMapping();
     // Si le block est nouveau, on crée automatiquement les paramètres et le mapping avec le jeu de données.
     if ($block->isEiBlock() && count($block->getParams()) == 0) {
         // Récupération des paramètres de la structure mappée.
         $nodeParams = $node->getEiDataSetStructures();
         /** @var EiDataSetStructure $param => Pour chaque noeud, on crée le paramètre pour le block. */
         foreach ($nodeParams as $param) {
             if ($param->isLeaf() && $node->getNode()->getLevel() == $param->getNode()->getLevel() - 1) {
                 // Création du paramètre pour le block.
                 $paramBlock = new EiBlockParam();
                 $paramBlock->setName($param->getName());
                 $paramBlock->setEiVersionId($block->getEiVersionId());
                 $paramBlock->setEiVersionStructureParent($block);
                 // Création du mapping IN.
                 $paramBlockSyncIn = new EiMappingStructureSyncIn();
                 $paramBlockSyncIn->setEiDataSetStructureMapping($param);
                 $paramBlockSyncIn->setEiVersionStructureMapping($paramBlock);
                 // Création du mapping OUT.
                 $paramBlockSyncOut = new EiMappingStructureSyncOut();
                 $paramBlockSyncOut->setEiDataSetStructureMapping($param);
                 $paramBlockSyncOut->setEiVersionStructureMapping($paramBlock);
                 // Persistence.
                 $block->getNode()->addChild($paramBlock);
                 $paramBlockSyncIn->save($conn);
                 $paramBlockSyncOut->save($conn);
             }
         }
     }
 }