/**
  * @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);
 }
예제 #2
0
 /**
  * @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;
 }
예제 #3
0
 /**
  * @param \Orm\Zed\Category\Persistence\SpyCategoryNode $nodeEntity
  *
  * @return \Generated\Shared\Transfer\NodeTransfer
  */
 public function convertCategoryNode(SpyCategoryNode $nodeEntity)
 {
     return (new NodeTransfer())->fromArray($nodeEntity->toArray());
 }
예제 #4
0
 /**
  * @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;
 }
예제 #5
0
 /**
  * @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;
 }
예제 #6
0
 /**
  * @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);
     }
 }