Example #1
0
 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);
     }
 }
Example #2
0
 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;
 }
Example #3
0
 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;
 }
Example #4
0
 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;
 }
Example #5
0
 /**
  * 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;
 }