/** * @see Tx_PtExtbase_Tree_TreeWalkerVisitorInterface::doFirstVisit() * * @param Tx_PtExtbase_Tree_NodeInterface $node * @param integer &$index Holds the visitation index of treewalker * @param integer &$level Holds level of visitation in tree, starting at 1 */ public function doFirstVisit(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level) { $nodeUid = $node->getUid(); $metadata = ''; $arrayForNode = array('data' => $node->getLabel(), 'attr' => array('id' => $node->getUid(), 'data-meta' => trim($metadata), 'disabled' => !$node->isAccessible()), 'children' => array()); $this->nodeStack->push($arrayForNode); }
/** * Updates a given node if it has already been added to repository or adds it. * * @param Tx_PtExtbase_Tree_NodeInterface $node */ public function updateOrAdd(Tx_PtExtbase_Tree_NodeInterface $node) { if ($node->getUid() === null || $node->getUid() < 0) { // UID of node < 0 means, node has not yet been persisted! $node->markAsNew(); $this->add($node); } else { // UID of node > 0 means, node has been persisted before! $this->update($node); } }
/** * @see Tx_PtExtbase_Tree_TreeWalkerVisitorInterface::doFirstVisit() * * @param Tx_PtExtbase_Tree_NodeInterface $node * @param integer &$index Holds the visitation index of treeWalker * @param integer &$level Holds level of visitation in tree, starting at 1 * @throws Exception */ public function doFirstVisit(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level) { $arrayForNode = array('id' => $node->getUid(), 'text' => $node->getLabel(), 'children' => array(), 'leaf' => !$node->hasChildren(), 'cls' => $node->isAccessible() ? '' : 'disabled'); $this->setSelectionOnNodeArray($node, $arrayForNode); if ($this->firstVisitCallback) { $return = call_user_func(array($this->firstVisitCallback['target'], $this->firstVisitCallback['method']), $node, $arrayForNode); if ($return === false) { throw new Exception('It was not possible to call ' . get_class($this->firstVisitCallback['target']) . '::' . $this->firstVisitCallback['method'], 1328468070); } else { $arrayForNode = $return; } } $this->nodeStack->push($arrayForNode); }
/** * @see Tx_PtExtbase_Tree_TreeWalkerVisitorInterface::doFirstVisit() * * @param Tx_PtExtbase_Tree_NodeInterface $node * @param integer &$index Holds the visitation index of treewalker * @param integer &$level Holds level of visitation in tree, starting at 1 */ public function doFirstVisit(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level) { $arrayForNode = array('uid' => $node->getUid(), 'label' => $node->getLabel(), 'children' => array(), 'disabled' => !$node->isAccessible()); $this->nodeStack->push($arrayForNode); }
/** * Helper method for doing a depth-first search on a node * * @param Tx_PtExtbase_Tree_NodeInterface $node * @param integer &$index Referenced value of visitation index. Will be increased with every node visitation. * @param integer &$level Current level of visit in the tree starting at 1 */ protected function dfs(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level = 1) { if ($node->isAccessible() || $this->treeContext->isWritable()) { $this->doFirstVisit($node, $index, $level); $index = $index + 1; if ($node->getChildrenCount() > 0) { $level = $level + 1; if ($this->restrictedDepth === -1 || $level <= $this->restrictedDepth) { foreach ($node->getChildren() as $child) { /* @var $child Tx_PtExtbase_Tree_NodeInterface */ $this->dfs($child, $index, $level); } } $level = $level - 1; } $this->doLastVisit($node, $index, $level); $index = $index + 1; } }
/** * Sets namespace of given tree on given node * * @param Tx_PtExtbase_Tree_NestedSetTreeInterface $tree * @param Tx_PtExtbase_Tree_NodeInterface $node * @throws Exception */ protected function setTreeNamespaceOnNode(Tx_PtExtbase_Tree_NestedSetTreeInterface $tree, Tx_PtExtbase_Tree_NodeInterface $node) { $namespace = $tree->getNamespace(); if ($namespace !== null && $namespace !== '') { $node->setNamespace($namespace); } else { throw new Exception('Trying to store a node of a tree that has no namespace set! Namespace is required on a tree to be stored! 1327756309'); } }
/** * @see Tx_PtExtbase_Tree_TreeWalkerVisitorInterface::doLastVisit() * * @param Tx_PtExtbase_Tree_NodeInterface $node * @param integer &$index Holds the visitation index of treewalker * @param integer &$level Holds level of visitation in tree, starting at 1 */ public function doLastVisit(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level) { $node->setRgt($index); $this->visitedNodes[] = $node; }