protected function recursiveBuildArrayWithoutId(TreeBase $item) { $ret = []; if ($item->hasChildren()) { foreach ($item->getChildren() as $child) { $ret[$child->getTitle() . '.' . $child->getNodeId() . '.' . $child->getSiteId()] = $this->recursiveBuildArrayWithoutId($child); } } return $ret; }
/** * Internal recursion for clone tree * * @param int $menuId * @param TreeBase $item * @param TreeBase $parent */ private function cloneTreeRecursion($menuId, TreeBase $item, $parentId = null) { if ($item->hasChildren()) { $previous = null; foreach ($item->getChildren() as $child) { if ($previous) { $previous = $this->itemStorage->insertAfter($previous, $child->getNodeId(), $child->getTitle(), $child->getDescription()); } else { if ($parentId) { $previous = $this->itemStorage->insertAsChild($parentId, $child->getNodeId(), $child->getTitle(), $child->getDescription()); } else { $previous = $this->itemStorage->insert($menuId, $child->getNodeId(), $child->getTitle(), $child->getDescription()); } } $this->cloneTreeRecursion($menuId, $child, $previous); } } }