/** * ADD block to stack. * * @param EiTestSetBlockStack $parentStack * @return EiTestSetBlockStack */ public function addToStack(EiTestSetBlockStack $parentStack = null) { $dataSetStr = null; $position = 1; if ($parentStack != null) { $position = $parentStack->getPosition() + 1; $dataSetStr = $this->getTable()->getDataFromDataSet($this, $parentStack); } else { $dataSetStr = $this->getTable()->getDataFromDataSet($this); } $stack = new EiTestSetBlockStack(); $stack->setEiTestSet($this->getEiTestSet()); $stack->setEiVersionStructure($this->getEiVersionStructure()); $stack->setEiTestSetBlockParam($this); $stack->setEiTestSetDataSet($dataSetStr); $stack->setPath($this->getPath()); $stack->setPosition($position); $stack->save(); return $stack; }
/** * TODO: A vérifier * ADD block to stack. * * @param EiTestSet $testSet * @param EiVersionStructure $block * @param EiTestSetBlockStack $previousStack * @param EiTestSetBlockStack $parentStack * @param int $position * @param Doctrine_Connection $conn * @return EiTestSetBlockStack */ public function addToStack(EiTestSet $testSet, EiVersionStructure $block, EiTestSetBlockStack $previousStack = null, EiTestSetBlockStack $parentStack = null, $position = 1, Doctrine_Connection $conn = null) { $conn = $conn == null ? Doctrine_Manager::connection() : $conn; $parStrId = $parentStack != null ? $parentStack->getEiVersionStructureId() : ""; $prevStrId = $previousStack != null ? $previousStack->getEiVersionStructureId() : ""; $strId = $block->getId(); $dataSetStr = null; // var_dump($block->toArray(false));exit; // On définit l'index du précédent ainsi que sa fragmentation if ($previousStack != null) { $prevIndex = $previousStack->getRepetitionIndex(); $prevPartsCount = $previousStack->getPartsCount(); $prevPartsIndex = $previousStack->getPartIndex(); } else { $prevIndex = $prevPartsCount = $prevPartsIndex = 0; } // On définit l'index du père ainsi que sa fragmentation if ($parentStack != null) { $parIndex = $parentStack->getRepetitionIndex(); $parPartsCount = $parentStack->getPartsCount(); $parPartsIndex = $parentStack->getPartIndex(); } else { $parIndex = $parPartsCount = $parPartsIndex = 0; } //***********************************************************// //********** GESTION ASSOCIATION STACK/JDD **********// //***********************************************************// if ($parentStack != null) { $dataSetStr = $this->getDataFromDataSet($testSet, $block, $previousStack, $parentStack); } else { $dataSetStr = $this->getDataFromDataSet($testSet, $block); } //*********************************************************// //********** AJOUT ELEMENT DANS LA STACK **********// //*********************************************************// // On crée le nouvel élément de la pile. $stack = new EiTestSetBlockStack(); $stack->setEiTestSet($testSet); $stack->setEiVersionStructure($block); $stack->setEiTestSetDataSet($dataSetStr); $stack->setPosition($position); if ($parentStack != null && $parentStack->getEiVersionStructure()->isEiLoop() && $block->getId() == $parStrId) { $stack->setEiTestSetBlockStackParent($parentStack->getEiTestSetBlockStackParent()); } else { $stack->setEiTestSetBlockStackParent($parentStack); } // Vérification de la fragmentation du block. $stack->setPartsCount($this->getFragmentsCount($stack)); // var_dump($strId . " VS " . $parStrId); // var_dump($parPartsIndex . " VS " . $parPartsCount); // Récupération de l'index. // Cas où il y a un précédent de même type que le suivant et que le précédent est terminé. if ($previousStack != null && $strId == $prevStrId && !($prevPartsIndex < $prevPartsCount)) { // var_dump("CAS INDEX PART 1"); // On incrémente alors son index car cela signifie que l'on passe à la boucle suivante. $stack->setRepetitionIndex($prevIndex + 1); } elseif ($previousStack != null && $strId == $prevStrId && $prevPartsIndex < $prevPartsCount) { // var_dump("CAS INDEX PART 2"); // On n'incrémente pas l'index car cela signifie que nous sommes dans la même boucle. $stack->setRepetitionIndex($prevIndex); // Et on incrémente la partie. $stack->setPartIndex($prevPartsIndex + 1); } elseif ($parentStack != null && $strId == $parStrId && !($parPartsIndex < $parPartsCount)) { // var_dump("CAS INDEX PART 3"); $stack->setRepetitionIndex($parIndex + 1); } elseif ($parentStack != null && $strId == $parStrId && $parPartsIndex < $parPartsCount) { // var_dump("CAS INDEX PART 4"); $stack->setRepetitionIndex($parIndex); $stack->setPartIndex($parPartsIndex + 1); } else { // var_dump("CAS INDEX PART 5"); } $stack->save($conn); return $stack; }