/** * Renders the given array of nodes. * @param TREE_NODE[] $nodes * @access private */ public function iterate_nodes($nodes) { $count = count($nodes); $index = 0; $sub_nodes = array(); $sub_node_has_children = false; while ($index < $count) { $node = $nodes[$index]; if ($node) { $node_sub_nodes = $this->node_info->sub_nodes($node); $sub_node_has_children = $sub_node_has_children || !empty($node_sub_nodes); $sub_nodes[] = $node_sub_nodes; } else { $sub_nodes[] = array(); } $index += 1; } $index = 0; while ($index < $count) { $node = $nodes[$index]; if (isset($this->decorator)) { $this->decorator->node_found($node); } $this->iterate_node($node, $index == $count - 1, $sub_nodes[$index], $sub_node_has_children); $index += 1; } }
/** * @param TREE $tree Decorate this tree. * @param integer[] $selected_node_ids Initially selected node ids */ public function __construct($tree, $selected_node_ids) { parent::__construct($tree); $this->selected_node_ids = $selected_node_ids; }