From 7a33d9f6fdca098b75acb8576147474cff5dd2a8 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Mon, 31 May 2004 19:14:43 +0000
Subject: [PATCH] - Patch #7350 by Mathias: return part a taxonomy tree to a
 user-defined   depth/level.

- Updated CHANGELOG.txt.
---
 CHANGELOG.txt                    |  1 +
 modules/comment.module           |  2 +-
 modules/comment/comment.module   |  2 +-
 modules/path.module              |  2 +-
 modules/path/path.module         |  2 +-
 modules/taxonomy.module          | 15 +++++++++------
 modules/taxonomy/taxonomy.module | 15 +++++++++------
 7 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 303770c308a9..81cd0fe64f86 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -20,6 +20,7 @@ Drupal x.x.x, xxxx-xx-xx
     * slightly reorganized navigation menus.
 - accessibility:
     * improved the accessibility of the archive module's calendar.
+    * improved form handling.
 
 Drupal 4.4.1, 2004-04-01
 ------------------------
diff --git a/modules/comment.module b/modules/comment.module
index f51194c0b81c..86ac2d363a53 100644
--- a/modules/comment.module
+++ b/modules/comment.module
@@ -225,7 +225,7 @@ function comment_reply($pid, $nid) {
 
 function comment_validate_form($edit) {
   global $user;
-  
+
   /*
   ** Validate the comment's body.
   */
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index f51194c0b81c..86ac2d363a53 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -225,7 +225,7 @@ function comment_reply($pid, $nid) {
 
 function comment_validate_form($edit) {
   global $user;
-  
+
   /*
   ** Validate the comment's body.
   */
diff --git a/modules/path.module b/modules/path.module
index a33c524e9b78..5ac3cc9823ac 100644
--- a/modules/path.module
+++ b/modules/path.module
@@ -303,7 +303,7 @@ function path_save($edit) {
     }
 
     drupal_set_message(t('the alias has been saved.'));
-   
+
     return  path_overview();
   }
 }
diff --git a/modules/path/path.module b/modules/path/path.module
index a33c524e9b78..5ac3cc9823ac 100644
--- a/modules/path/path.module
+++ b/modules/path/path.module
@@ -303,7 +303,7 @@ function path_save($edit) {
     }
 
     drupal_set_message(t('the alias has been saved.'));
-   
+
     return  path_overview();
   }
 }
diff --git a/modules/taxonomy.module b/modules/taxonomy.module
index 99b3460f975f..cb425eb532e7 100644
--- a/modules/taxonomy.module
+++ b/modules/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));
+      }
     }
   }
 
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 99b3460f975f..cb425eb532e7 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));
+      }
     }
   }
 
-- 
GitLab