element = new \PSC\Library\Calc\Option\Type\Select(); parent::__construct($node); } public function parse() { parent::parse(); if(isset($this->node['mode']) && (string)$this->node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modePaperDb) { $this->parseModePapierDb(); }else{ $this->parseModeNormal(); } return $this->element; } private function parseModePapierDb() { /** @var PaperContainer\Container $container */ $container = $this->getPaperContainer()->getContainerById((string)$this->node['container']); /** @var PaperContainer\Item $papier */ foreach ($container->getItems() as $papier) { /** @var Paper $papierDb */ $papierDb = $this->getPaperRepository()->findOneBy(array('artNr' => $papier->getId())); if($papierDb) { $optPapier = new \PSC\Library\Calc\Option\Type\Select\Opt(); $optPapier->setId($papierDb->getArtNr()); $optPapier->setLabel($papierDb->getDescription1()); $this->element->addOption($optPapier); } } } private function parseModeNormal() { foreach ($this->node->opt as $opt) { $optParser = new Opt($opt); $this->element->addOption($optParser->parse()); } } /** * @return PaperContainer */ public function getPaperContainer() { return $this->paperContainer; } /** * @param PaperContainer $paperContainer */ public function setPaperContainer($paperContainer) { $this->paperContainer = $paperContainer; } /** * @param ObjectRepository $repostory */ public function setPaperRepository($repository) { $this->paperRepository = $repository; } /** * @return ObjectRepository */ public function getPaperRepository() { return $this->paperRepository; } }