From 7a33d9f6fdca098b75acb8576147474cff5dd2a8 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Mon, 31 May 2004 19:14:43 +0000 Subject: - Patch #7350 by Mathias: return part a taxonomy tree to a user-defined depth/level. - Updated CHANGELOG.txt. --- modules/taxonomy/taxonomy.module | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'modules/taxonomy/taxonomy.module') diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index 99b3460f9..cb425eb53 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -462,7 +462,7 @@ function taxonomy_get_children($tid, $vid = 0, $key = "tid") { } // hierarchy: get whole family, with tid, parent and depth; useful to show -function taxonomy_get_tree($vocabulary_id, $parent = 0, $depth = -1, $key = "tid") { +function taxonomy_get_tree($vocabulary_id, $parent = 0, $depth = -1, $max_depth = NULL) { static $children, $parents, $terms; $depth++; @@ -479,14 +479,17 @@ function taxonomy_get_tree($vocabulary_id, $parent = 0, $depth = -1, $key = "tid } } + $max_depth = ($max_depth == '') ? count($children[$vocabulary_id]) : $max_depth; if ($children[$vocabulary_id][$parent]) { foreach ($children[$vocabulary_id][$parent] as $child) { - $terms[$vocabulary_id][$child]->depth = $depth; - unset($terms[$vocabulary_id][$child]->parent); // this is not useful as it would show one parent only - $terms[$vocabulary_id][$child]->parents = $parents[$vocabulary_id][$child]; - $tree[] = $terms[$vocabulary_id][$child]; + if ($max_depth > $depth) { + $terms[$vocabulary_id][$child]->depth = $depth; + unset($terms[$vocabulary_id][$child]->parent); // this is not useful as it would show one parent only + $terms[$vocabulary_id][$child]->parents = $parents[$vocabulary_id][$child]; + $tree[] = $terms[$vocabulary_id][$child]; - $tree = array_merge($tree, taxonomy_get_tree($vocabulary_id, $child, $depth)); + $tree = array_merge($tree, taxonomy_get_tree($vocabulary_id, $child, $depth, $max_depth)); + } } } -- cgit v1.2.3