public function getTopicLink(\Concrete\Core\Tree\Node\Node $topic = null) { if ($this->cParentID) { $c = \Page::getByID($this->cParentID); } else { $c = \Page::getCurrentPage(); } if ($topic) { $nodeName = $topic->getTreeNodeName(); $nodeName = strtolower($nodeName); // convert to lowercase $nodeName = Core::make('helper/text')->encodePath($nodeName); // urlencode return \URL::page($c, 'topic', $topic->getTreeNodeID(), $nodeName); } else { return \URL::page($c); } }
public function move(Node $newParent) { $db = Loader::db(); $treeNodeDisplayOrder = $db->GetOne('select count(treeNodeDisplayOrder) from TreeNodes where treeNodeParentID = ?', array($newParent->getTreeNodeID())); if (!$treeNodeDisplayOrder) { $treeNodeDisplayOrder = 0; } $db->Execute('update TreeNodes set treeNodeParentID = ?, treeNodeDisplayOrder = ? where treeNodeID = ?', array($newParent->getTreeNodeID(), $treeNodeDisplayOrder, $this->treeNodeID)); if (!$this->overrideParentTreeNodePermissions()) { $db->Execute('update TreeNodes set inheritPermissionsFromTreeNodeID = ? where treeNodeID = ?', array($newParent->getTreeNodePermissionsNodeID(), $this->treeNodeID)); } $oldParent = $this->getTreeNodeParentObject(); if (is_object($oldParent)) { $oldParent->rescanChildrenDisplayOrder(); } $newParent->rescanChildrenDisplayOrder(); $this->treeNodeParentID = $newParent->getTreeNodeID(); $this->treeNodeDisplayOrder = $treeNodeDisplayOrder; }
protected static function create(TreeNode $rootNode) { $app = Application::getFacadeApplication(); $db = $app->make('database')->connection(); $date = $app->make('date')->getOverridableNow(); $treeTypeHandle = uncamelcase(strrchr(get_called_class(), '\\')); $type = TreeType::getByHandle($treeTypeHandle); $db->executeQuery('insert into Trees (treeDateAdded, rootTreeNodeID, treeTypeID) values (?, ?, ?)', [$date, $rootNode->getTreeNodeID(), $type->getTreeTypeID()]); $treeID = $db->lastInsertId(); $rootNode->setTreeNodeTreeID($treeID); return $treeID; }
protected static function create(\Concrete\Core\Tree\Node\Node $rootNode) { $db = Database::connection(); $date = Core::make('helper/date')->getOverridableNow(); $treeTypeHandle = Core::make('helper/text')->uncamelcase(strrchr(get_called_class(), '\\')); $type = TreeType::getByHandle($treeTypeHandle); $db->Execute('insert into Trees (treeDateAdded, rootTreeNodeID, treeTypeID) values (?, ?, ?)', array($date, $rootNode->getTreeNodeID(), $type->getTreeTypeID())); $treeID = $db->Insert_ID(); $rootNode->setTreeNodeTreeID($treeID); return $treeID; }
/** * Check if this node can be moved under another parent. * * @param Node $newParent The new parent node. * * @return MoveException|null Return a MoveException in case of problems, null in case of success. */ public function checkMove(Node $newParent) { $result = null; if ($this->getTreeNodeParentID() != $newParent->getTreeNodeID()) { if ($this->getTreeNodeID() == $newParent->getTreeNodeID()) { $result = new MoveException(t("It's not possible to move a node under itself")); } else { foreach ($newParent->getTreeNodeParentArray() as $newParentAncestor) { if ($newParentAncestor->getTreeNodeID() == $this->getTreeNodeID()) { $result = MoveException(t("It's not possible to move a node under one of its descending nodes")); break; } } } } return $result; }