/** * @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); } } } }