JTableUsergroup/rebuild
From Joomla! Documentation
< API16:JTableUsergroup
The "API16" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.
Description[edit]
Method to recursively rebuild the nested set tree.
Syntax[edit]
rebuild($parent_id=0, $left=0)
Parameter Name | Default Value | Description |
---|---|---|
$parent_id | 0 | The root of the tree to rebuild. |
$left | 0 | The left id to start with in building the tree. |
Returns[edit]
boolean True on success
Defined in[edit]
libraries/joomla/database/table/usergroup.php
Importing[edit]
jimport( 'joomla.database.table.usergroup' );
Source Body[edit]
function rebuild($parent_id = 0, $left = 0)
{
// get the database object
$db = &$this->_db;
// get all children of this node
$db->setQuery(
'SELECT id FROM '. $this->_tbl .
' WHERE parent_id='. (int)$parent_id .
' ORDER BY parent_id, title'
);
$children = $db->loadResultArray();
// the right value of this node is the left value + 1
$right = $left + 1;
// execute this function recursively over all children
for ($i=0,$n=count($children); $i < $n; $i++)
{
// $right is the current right value, which is incremented on recursion return
$right = $this->rebuild($children[$i], $right);
// if there is an update failure, return false to break out of the recursion
if ($right === false) {
return false;
}
}
// we've got the left value, and now that we've processed
// the children of this node we also know the right value
$db->setQuery(
'UPDATE '. $this->_tbl .
' SET lft='. (int)$left .', rgt='. (int)$right .
' WHERE id='. (int)$parent_id
);
// if there is an update failure, return false to break out of the recursion
if (!$db->query()) {
return false;
}
// return the right value of this node + 1
return $right + 1;
}
Examples[edit]
Code Examples[edit]