Zeta Components Manual :: Docs For Class ezcTreeDbMaterializedPath
TreeDatabaseTiein::ezcTreeDbMaterializedPath
Class ezcTreeDbMaterializedPath
ezcTreeDbMaterializedPath implements a tree backend which stores parent/child information in a path like string (such as /1/4/6/8).
The table that stores the index (configured using the $indexTableName argument of the __construct method) should contain at least three fields. The first one 'id' will contain the node's ID, the second one 'parent_id' the ID of the node's parent. Both fields should be of the same database field type. Supported field types are either integer or a string type. The third field 'path' will contain the path string. This should be a text field. The size of the field determines the maximum depth the tree can have. In order to use auto-generated IDs, the 'id' field needs to be an auto-incrementing integer field, by using either an auto-increment field, or a sequence.
Source for this file: /TreeDatabaseTiein/src/backends/db_materialized_path.php
ezcTree | --ezcTreeDb | --ezcTreeDbMaterializedPath
Version: | //autogentag// |
Properties
string | read/write |
$nodeClassName
Which class is used as tree node - this class *must* inherit the ezcTreeNode class. |
string | read |
$separationChar
The character that is used to separate node IDs internally. This character can then *not* be part of a node ID. |
ezcTreeDbDataStore | read |
$store
The data store that is used for retrieving/storing data. |
Inherited Member Variables
From ezcTreeDb | |
---|---|
protected |
ezcTreeDb::$dbh
|
protected |
ezcTreeDb::$indexTableName
|
From ezcTree | |
protected |
ezcTree::$inTransaction
|
protected |
ezcTree::$inTransactionCommit
|
protected |
ezcTree::$properties
|
Method Summary
public static void |
create(
$dbh
, $indexTableName
, $store
, [ $separationChar
= '/'] )
Creates a new ezcTreeDbMaterializedPath object. |
public ezcTreeDbMaterializedPath |
__construct(
$dbh
, $indexTableName
, $store
, [ $separationChar
= '/'] )
Constructs a new ezcTreeDbMaterializedPath object. |
public void |
addChild(
$parentId
, $childNode
)
Adds the node $childNode as child of the node with ID $parentId. |
protected void |
addChildNodesBreadthFirst(
$list
, $nodeId
)
Adds the children nodes of the node with ID $nodeId to the ezcTreeNodeList $list. |
protected void |
checkNodeId(
$nodeId
)
This method checks whether a node ID is valid to be used in a backend. |
protected ezcQueryInsert |
createAddEmptyNodeQuery(
)
Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained. |
public void |
delete(
$nodeId
)
Deletes the node with ID $nodeId from the tree, including all its children. |
protected PDOStatement |
fetchChildRecords(
$nodeId
)
Runs SQL to get all the children of the node with ID $nodeId as a PDO result set. |
public ezcTreeNodeList |
fetchChildren(
$nodeId
)
Returns all the children of the node with ID $nodeId. |
protected array(int) |
fetchNodeInformation(
$nodeId
)
Returns the parent id and path the node with ID $nodeId as an array. |
public ezcTreeNodeList |
fetchPath(
$nodeId
)
Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes. |
public ezcTreeNodeList |
fetchSubtree(
$nodeId
)
Alias for fetchSubtreeDepthFirst(). |
public ezcTreeNodeList |
fetchSubtreeBreadthFirst(
$nodeId
)
Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm. |
public ezcTreeNodeList |
fetchSubtreeDepthFirst(
$nodeId
)
Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm. |
public void |
fixateTransaction(
)
Fixates the transaction. |
public int |
getChildCount(
$nodeId
)
Returns the number of direct children of the node with ID $nodeId. |
public int |
getChildCountRecursive(
$nodeId
)
Returns the number of children of the node with ID $nodeId, recursively. |
public int |
getPathLength(
$nodeId
)
Returns the distance from the root node to the node with ID $nodeId. |
public bool |
hasChildNodes(
$nodeId
)
Returns whether the node with ID $nodeId has children. |
public bool |
isChildOf(
$childId
, $parentId
)
Returns whether the node with ID $childId is a direct child of the node with ID $parentId. |
public bool |
isDescendantOf(
$childId
, $parentId
)
Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId. |
public bool |
isSiblingOf(
$child1Id
, $child2Id
)
Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent). |
public void |
move(
$nodeId
, $targetParentId
)
Moves the node with ID $nodeId as child to the node with ID $targetParentId. |
public void |
setRootNode(
$node
)
Sets a new node as root node, this also wipes out the whole tree. |
Inherited Methods
From ezcTreeDb | |
---|---|
public ezcTreeDb |
ezcTreeDb::__construct()
Constructs a new ezcTreeDb object. |
protected abstract ezcQueryInsert |
ezcTreeDb::createAddEmptyNodeQuery()
Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained. |
protected ezcQuery |
ezcTreeDb::createAddNodeQuery()
Creates the query to insert/update an empty node in the database. |
public ezcTreeNode |
ezcTreeDb::fetchParent()
Returns the parent node of the node with ID $id. |
protected integer |
ezcTreeDb::generateNodeID()
This method generates the next node ID. |
protected string |
ezcTreeDb::getParentId()
Returns the ID of parent of the node with ID $childId. |
public ezcTreeNode |
ezcTreeDb::getRootNode()
Returns the root node. |
public bool |
ezcTreeDb::nodeExists()
Returns whether the node with ID $id exists as tree node. |
From ezcTree | |
public void |
ezcTree::accept()
Implements the accept method for visiting. |
public abstract void |
ezcTree::addChild()
Adds the node $childNode as child of the node with ID $parentId. |
protected void |
ezcTree::addTransactionItem()
Adds a new transaction item to the list. |
public void |
ezcTree::beginTransaction()
Starts an transaction in which all tree modifications are queued until the transaction is committed with the commit() method. |
protected void |
ezcTree::checkNodeId()
This method checks whether a node ID is valid to be used in a backend. |
public void |
ezcTree::commit()
Commits the transaction by running the stored instructions to modify the tree structure. |
public static void |
ezcTree::copy()
Copies the tree in $from to the empty tree in $to. |
public ezcTreeNode |
ezcTree::createNode()
Creates a new tree node with node ID $nodeId and $data. |
public abstract void |
ezcTree::delete()
Deletes the node with ID $nodeId from the tree, including all its children. |
public abstract ezcTreeNodeList |
ezcTree::fetchChildren()
Returns all the children of the node with ID $nodeId. |
public ezcTreeNode |
ezcTree::fetchNodeById()
Returns the node identified by the ID $nodeId. |
public abstract ezcTreeNode |
ezcTree::fetchParent()
Returns the parent node of the node with ID $nodeId. |
public abstract ezcTreeNodeList |
ezcTree::fetchPath()
Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes. |
public abstract ezcTreeNodeList |
ezcTree::fetchSubtree()
Alias for fetchSubtreeDepthFirst(). |
public abstract ezcTreeNodeList |
ezcTree::fetchSubtreeBreadthFirst()
Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm. |
public abstract ezcTreeNodeList |
ezcTree::fetchSubtreeDepthFirst()
Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm. |
protected abstract integer |
ezcTree::generateNodeID()
This method generates the next node ID. |
public abstract int |
ezcTree::getChildCount()
Returns the number of direct children of the node with ID $nodeId. |
public abstract int |
ezcTree::getChildCountRecursive()
Returns the number of children of the node with ID $nodeId, recursively. |
public abstract int |
ezcTree::getPathLength()
Returns the distance from the root node to the node with ID $nodeId. |
public abstract ezcTreeNode |
ezcTree::getRootNode()
Returns the root node. |
public abstract bool |
ezcTree::hasChildNodes()
Returns whether the node with ID $nodeId has children. |
public bool |
ezcTree::inTransaction()
Returns whether we are currently in a transaction or not |
public bool |
ezcTree::inTransactionCommit()
Returns whether we are currently in a transaction commit state or not |
public abstract bool |
ezcTree::isChildOf()
Returns whether the node with ID $childId is a direct child of the node with ID $parentId. |
public abstract bool |
ezcTree::isDescendantOf()
Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId. |
public abstract bool |
ezcTree::isSiblingOf()
Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent). |
public abstract void |
ezcTree::move()
Moves the node with ID $nodeId as child to the node with ID $targetParentId. |
public abstract bool |
ezcTree::nodeExists()
Returns whether the node with ID $nodeId exists. |
public void |
ezcTree::rollback()
Rolls back the transaction by clearing all stored instructions. |
public abstract void |
ezcTree::setRootNode()
Sets a new node as root node, this also wipes out the whole tree. |
Methods
create
Creates a new ezcTreeDbMaterializedPath object.
The different arguments to the method configure which database connection ($dbh) is used to access the database and the $indexTableName argument which table is used to retrieve the relation data from. The $store argument configure which data store is used with this tree.
The $separationChar argument defaults to / and is used to separate node IDs internally. This character can *not* be part of a node ID, and the same character should be used when re-opening the tree upon instantiation.
It is up to the user to create the database table and make sure it is empty.
Parameters:
Name | Type | Description |
---|---|---|
$dbh |
ezcDbHandler | |
$indexTableName |
string | |
$store |
ezcTreeDbDataStore | |
$separationChar |
string |
__construct
Constructs a new ezcTreeDbMaterializedPath object.
The different arguments to the constructor configure which database connection ($dbh) is used to access the database and the $indexTableName argument which table is used to retrieve the relation data from. The $store argument configure which data store is used with this tree.
The $separationChar argument defaults to / and is used to separate node IDs internally. This character can *not* be part of a node ID, and should be the same character that was used when creating the tree.
Just like the others, this database backend requires the index table to at least define the field 'id', which can either be a string or an integer field.
Parameters:
Name | Type | Description |
---|---|---|
$dbh |
ezcDbHandler | |
$indexTableName |
string | |
$store |
ezcTreeDbDataStore | |
$separationChar |
string |
Redefinition of:
Method | Description |
---|---|
ezcTreeDb::__construct() |
Constructs a new ezcTreeDb object. |
addChild
Adds the node $childNode as child of the node with ID $parentId.
Parameters:
Name | Type | Description |
---|---|---|
$parentId |
string | |
$childNode |
ezcTreeNode |
Redefinition of:
Method | Description |
---|---|
ezcTree::addChild() |
Adds the node $childNode as child of the node with ID $parentId. |
addChildNodesBreadthFirst
Adds the children nodes of the node with ID $nodeId to the ezcTreeNodeList $list.
Parameters:
Name | Type | Description |
---|---|---|
$list |
ezcTreeNodeList | |
$nodeId |
string |
checkNodeId
This method checks whether a node ID is valid to be used in a backend.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Exceptions:
Type | Description |
---|---|
ezcTreeInvalidNodeIDException |
if the node is not valid. |
Redefinition of:
Method | Description |
---|---|
ezcTree::checkNodeId() |
This method checks whether a node ID is valid to be used in a backend. |
createAddEmptyNodeQuery
Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained.
Redefinition of:
Method | Description |
---|---|
ezcTreeDb::createAddEmptyNodeQuery() |
Creates the query to insert an empty node into the database, so that the last-inserted ID can be obtained. |
delete
Deletes the node with ID $nodeId from the tree, including all its children.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::delete() |
Deletes the node with ID $nodeId from the tree, including all its children. |
fetchChildRecords
Runs SQL to get all the children of the node with ID $nodeId as a PDO result set.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
fetchChildren
Returns all the children of the node with ID $nodeId.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::fetchChildren() |
Returns all the children of the node with ID $nodeId. |
fetchNodeInformation
Returns the parent id and path the node with ID $nodeId as an array.
The format of the array is:
- 0: parent id
- 1: path
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
fetchPath
Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::fetchPath() |
Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes. |
fetchSubtree
Alias for fetchSubtreeDepthFirst().
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::fetchSubtree() |
Alias for fetchSubtreeDepthFirst(). |
fetchSubtreeBreadthFirst
Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::fetchSubtreeBreadthFirst() |
Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm. |
fetchSubtreeDepthFirst
Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::fetchSubtreeDepthFirst() |
Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm. |
fixateTransaction
Fixates the transaction.
getChildCount
Returns the number of direct children of the node with ID $nodeId.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::getChildCount() |
Returns the number of direct children of the node with ID $nodeId. |
getChildCountRecursive
Returns the number of children of the node with ID $nodeId, recursively.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::getChildCountRecursive() |
Returns the number of children of the node with ID $nodeId, recursively. |
getPathLength
Returns the distance from the root node to the node with ID $nodeId.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::getPathLength() |
Returns the distance from the root node to the node with ID $nodeId. |
hasChildNodes
Returns whether the node with ID $nodeId has children.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::hasChildNodes() |
Returns whether the node with ID $nodeId has children. |
isChildOf
Returns whether the node with ID $childId is a direct child of the node with ID $parentId.
Parameters:
Name | Type | Description |
---|---|---|
$childId |
string | |
$parentId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::isChildOf() |
Returns whether the node with ID $childId is a direct child of the node with ID $parentId. |
isDescendantOf
Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId.
Parameters:
Name | Type | Description |
---|---|---|
$childId |
string | |
$parentId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::isDescendantOf() |
Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId. |
isSiblingOf
Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent).
Parameters:
Name | Type | Description |
---|---|---|
$child1Id |
string | |
$child2Id |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::isSiblingOf() |
Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent). |
move
Moves the node with ID $nodeId as child to the node with ID $targetParentId.
Parameters:
Name | Type | Description |
---|---|---|
$nodeId |
string | |
$targetParentId |
string |
Redefinition of:
Method | Description |
---|---|
ezcTree::move() |
Moves the node with ID $nodeId as child to the node with ID $targetParentId. |
setRootNode
Sets a new node as root node, this also wipes out the whole tree.
Parameters:
Name | Type | Description |
---|---|---|
$node |
ezcTreeNode |
Redefinition of:
Method | Description |
---|---|
ezcTree::setRootNode() |
Sets a new node as root node, this also wipes out the whole tree. |