/** * @param \Orm\Zed\Category\Persistence\SpyCategoryNode $node * * @return string */ protected function buildPath(SpyCategoryNode $node) { $pathTokens = $this->categoryQueryContainer->queryPath($node->getIdCategoryNode(), $this->locale->getIdLocale(), false, true)->find(); $formattedPath = []; foreach ($pathTokens as $path) { $formattedPath[] = $path['name']; } return '/' . implode('/', $formattedPath); }
/** * @param \Generated\Shared\Transfer\NodeTransfer $categoryNode * * @return int */ public function create(NodeTransfer $categoryNode) { $nodeEntity = new SpyCategoryNode(); $nodeEntity->fromArray($categoryNode->toArray()); $nodeEntity->save(); $nodeId = $nodeEntity->getIdCategoryNode(); $categoryNode->setIdCategoryNode($nodeId); return $nodeId; }
/** * @param \Orm\Zed\Category\Persistence\SpyCategoryNode $nodeEntity * * @return \Generated\Shared\Transfer\NodeTransfer */ public function convertCategoryNode(SpyCategoryNode $nodeEntity) { return (new NodeTransfer())->fromArray($nodeEntity->toArray()); }
/** * @param \Generated\Shared\Transfer\LocaleTransfer $localeTransfer * @param \Orm\Zed\Category\Persistence\SpyCategoryNode|null $node * @param bool $isRoot * * @return array */ protected function getTreeNodesRecursively(LocaleTransfer $localeTransfer, SpyCategoryNode $node = null, $isRoot = false) { $tree = []; if ($node === null) { $children = $this->getRootNodes(); } else { $children = $this->getChildren($node->getIdCategoryNode(), $localeTransfer); } if ($isRoot) { $idParent = 0; } else { $idParent = $node->getIdCategoryNode(); } foreach ($children as $child) { $text = $child->getCategory()->getLocalisedAttributes($localeTransfer->getIdLocale())->getFirst()->getName(); $tree[] = [self::ID => $child->getIdCategoryNode(), self::ID_CATEGORY => $child->getFkCategory(), self::ID_PARENT => $idParent, self::TEXT => $text, self::IS_MAIN => $child->getIsMain(), self::IS_ACTIVE => $child->getCategory()->isActive(), self::IS_IN_MENU => $child->getCategory()->getIsInMenu(), self::IS_CLICKABLE => $child->getCategory()->getIsClickable()]; if ($child->countDescendants() > 0) { $tree = array_merge($tree, $this->getTreeNodesRecursively($localeTransfer, $child)); } } return $tree; }
/** * @param \Orm\Zed\Category\Persistence\SpyCategory $category * @param \Orm\Zed\Category\Persistence\SpyCategoryNode $node * * @return array */ protected function getBlockDataForView(SpyCategory $category, SpyCategoryNode $node) { $blockList = []; $blocks = $this->getFactory()->getCmsFacade()->getCmsBlocksByIdCategoryNode($node->getIdCategoryNode()); foreach ($blocks as $blockTransfer) { $blockData = $blockTransfer->toArray(); $blockData['view_node_name'] = 'child'; if ((int) $category->getIdCategory() === (int) $node->getFkCategory()) { $blockData['view_node_name'] = 'parent'; } $blockList[] = $blockData; } return $blockList; }
/** * @param \Orm\Zed\Category\Persistence\SpyCategoryNode $node * * @return void */ protected function addClosureConnections(SpyCategoryNode $node) { $descendantPaths = $this->queryContainer->queryDescendant($node->getPrimaryKey())->find(); foreach ($descendantPaths as $path) { $attributes = ['color' => '#ff0000']; $this->graph->addEdge($this->getNodeHash($node), $this->getNodeHash($path->getDescendantNode()), $attributes); } }