You are here

function _term_reference_tree_get_term_hierarchy_recursive in Taxonomy Term Reference Tree Widget 7

Recursive helper function for _term_reference_tree_get_term_hierarchy().

1 call to _term_reference_tree_get_term_hierarchy_recursive()
_term_reference_tree_get_term_hierarchy in ./term_reference_tree.module
This function returns a taxonomy term hierarchy in a nested array.

File

./term_reference_tree.module, line 99

Code

function _term_reference_tree_get_term_hierarchy_recursive($parent_tid, $tree, $expanded, $use_ajax, $max_depth, $depth = 1) {
  $terms = array();
  if (isset($tree['children'][$parent_tid])) {
    foreach ($tree['children'][$parent_tid] as $child_tid) {
      $term = $tree['terms'][$child_tid];
      $term->has_children = isset($tree['children'][$term->tid]);
      if ($term->has_children) {

        // Process children if:
        // Max depth is not reached
        // And we don't use ajax OR if this term must be expanded.
        $max_depth_reached = isset($max_depth) && $depth >= $max_depth;
        if (!$max_depth_reached && (!$use_ajax || in_array($term->tid, $expanded))) {
          $term->children = _term_reference_tree_get_term_hierarchy_recursive($term->tid, $tree, $expanded, $use_ajax, $max_depth, $depth + 1);
        }
      }
      $terms[$term->tid] = $term;
    }
  }
  return $terms;
}