/** * @param $node NodeInterface * @param string $areaId * * @return null|AreaInterface */ public function findAreaInNodeByAreaId(NodeInterface $node, $areaId) { foreach ($node->getAreas() as $key => $area) { if ($areaId === $key) { return $area; } } return null; }
/** * @param NodeInterface $node * @param BlockNodePattern|Constraint $constraint */ public function validate($node, Constraint $constraint) { if ($node->getStatus() instanceof StatusInterface && $node->getStatus()->isPublished()) { $areas = $node->getAreas(); $routePattern = $node->getRoutePattern(); foreach ($areas as $area) { $blocks = $area->getBlocks(); foreach ($blocks as $block) { $blockLabel = $block->getLabel(); $parameters = $this->generateFormManager->getRequiredUriParameter($block); foreach ($parameters as $parameter) { if (false === strpos($routePattern, '{' . $parameter . '}')) { $this->context->buildViolation($constraint->message)->setParameters(array('%blockLabel%' => $blockLabel, '%parameter%' => $parameter))->atPath('routePattern')->addViolation(); } } } } } }
/** * @param NodeInterface $node * @param NodeInterface $newNode * * @return NodeInterface */ protected function duplicateBlockAndArea(NodeInterface $node, NodeInterface $newNode) { foreach ($node->getAreas() as $areaId => $area) { $newArea = clone $area; $newNode->setArea($areaId, $newArea); foreach ($area->getBlocks() as $block) { if (!$block->isTransverse()) { $newBlock = clone $block; $this->blockRepository->getDocumentManager()->persist($newBlock); $newArea->addBlock($newBlock); } } } return $newNode; }
/** * @param FacadeInterface $facade * @param NodeInterface $node * * @return FacadeInterface */ protected function addAreas(FacadeInterface $facade, NodeInterface $node) { if ($this->hasGroup(CMSGroupContext::AREAS)) { foreach ($node->getAreas() as $key => $area) { $facade->setAreas($this->getTransformer('area')->transform($area, $node, $key), $key); } } return $facade; }