function &getItemHierarchy($rootItem) { if (!isset($this->hierarchy[$rootItem->getId()])) { $itemFactory = new Docman_ItemFactory($rootItem->getGroupId()); $this->hierarchy[$rootItem->getId()] =& $itemFactory->getItemTree($rootItem, $this->getUser(), false, true); } return $this->hierarchy[$rootItem->getId()]; }
/** * Copy a subtree. */ function cloneItems($srcGroupId, $dstGroupId, $user, $metadataMapping, $ugroupsMapping, $dataRoot, $srcItemId = 0, $dstItemId = 0, $ordering = null) { $itemMapping = array(); $itemFactory = new Docman_ItemFactory($srcGroupId); if ($srcItemId == 0) { $srcItem = $this->getRoot($srcGroupId); } else { $srcItem = $this->getItemFromDb($srcItemId); } $itemTree = $itemFactory->getItemTree($srcItem, $user, false, true); if ($itemTree) { $rank = null; if ($ordering !== null) { $dao =& $this->_getItemDao(); $rank = $dao->_changeSiblingRanking($dstItemId, $ordering); } $cloneItemsVisitor = new Docman_CloneItemsVisitor($dstGroupId); $visitorParams = array('parentId' => $dstItemId, 'user' => $user, 'metadataMapping' => $metadataMapping, 'ugroupsMapping' => $ugroupsMapping, 'data_root' => $dataRoot, 'newRank' => $rank, 'srcRootId' => $srcItemId); $itemTree->accept($cloneItemsVisitor, $visitorParams); $itemMapping = $cloneItemsVisitor->getItemMapping(); } return $itemMapping; }