Path

ez components / documentation / api reference / trunk / treedatabasetiein


eZ Components trunk

TreeDatabaseTiein: ezcTreeDbMaterializedPath

[ Tutorial ] [ Class tree ] [ Element index ] [ ChangeLog ] [ Credits ]

Class: ezcTreeDbMaterializedPath

ezcTreeDbMaterializedPath implements a tree backend which stores parent/child information in a path like string (such as /1/4/6/8). [source]
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.

Parents

ezcTree
   |
   --ezcTreeDb
      |
      --ezcTreeDbMaterializedPath

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 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.
public static void create( $dbh, $indexTableName, $store, [$separationChar = '/'] )
Creates a new ezcTreeDbMaterializedPath object.
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

__construct

ezcTreeDbMaterializedPath __construct( $dbh, string $indexTableName, ezcTreeDbDataStore $store, [string $separationChar = '/'] )
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

void addChild( string $parentId, $childNode )
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

void addChildNodesBreadthFirst( $list, string $nodeId )
Adds the children nodes of the node with ID $nodeId to the ezcTreeNodeList $list.

Parameters

Name Type Description
$list ezcTreeNodeList  
$nodeId string  

checkNodeId

void checkNodeId( string $nodeId )
This method checks whether a node ID is valid to be used in a backend.

Parameters

Name Type Description
$nodeId string  

Throws

ClassDescription
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.

create

void create( $dbh, string $indexTableName, ezcTreeDbDataStore $store, [string $separationChar = '/'] )
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  

createAddEmptyNodeQuery

ezcQueryInsert 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

void delete( string $nodeId )
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

PDOStatement fetchChildRecords( string $nodeId )
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

ezcTreeNodeList fetchChildren( string $nodeId )
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

array(int) fetchNodeInformation( string $nodeId )
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

ezcTreeNodeList fetchPath( string $nodeId )
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

ezcTreeNodeList fetchSubtree( string $nodeId )
Alias for fetchSubtreeDepthFirst().

Parameters

Name Type Description
$nodeId string  

Redefinition of

Method Description
ezcTree::fetchSubtree() Alias for fetchSubtreeDepthFirst().

fetchSubtreeBreadthFirst

ezcTreeNodeList fetchSubtreeBreadthFirst( string $nodeId )
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

ezcTreeNodeList fetchSubtreeDepthFirst( string $nodeId )
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

void fixateTransaction( )
Fixates the transaction.

getChildCount

int getChildCount( string $nodeId )
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

int getChildCountRecursive( string $nodeId )
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

int getPathLength( string $nodeId )
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

bool hasChildNodes( string $nodeId )
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

bool isChildOf( string $childId, string $parentId )
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

bool isDescendantOf( string $childId, string $parentId )
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

bool isSiblingOf( string $child1Id, string $child2Id )
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

void move( string $nodeId, string $targetParentId )
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

void setRootNode( $node )
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.

Last updated: Mon, 21 Dec 2009