From cb7c2e09ed6f1ba12e8c277f1690576ea802bcb3 Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Wed, 24 Dec 2003 15:09:43 +0000 Subject: [PATCH] - Fixed the breadcrumb trail of nested forums. Patch by Goba. --- modules/forum.module | 36 +++++++++----------------------- modules/forum/forum.module | 36 +++++++++----------------------- modules/taxonomy.module | 14 +++++++++++++ modules/taxonomy/taxonomy.module | 14 +++++++++++++ 4 files changed, 48 insertions(+), 52 deletions(-) diff --git a/modules/forum.module b/modules/forum.module index f88071178450..0fb1722b95ff 100644 --- a/modules/forum.module +++ b/modules/forum.module @@ -154,22 +154,19 @@ function forum_view($node, $main = 0, $page = 0) { // we are previewing $term_data = taxonomy_get_term($node->taxonomy[0]); } - $voc = taxonomy_get_vocabulary($term_data->vid); + // Breadcrumb navigation - $breadcrumb[] = l(t("Home"), NULL); - $breadcrumb[] = l(t("forums"), "forum"); - $breadcrumb[] = l($term_data->name, "forum/$term_data->tid"); - // print the breadcrumb + $breadcrumb = array(l(t("Home"), NULL), l(t("forum"), "forum")); + if ($parents = taxonomy_get_parents_all($term_data->tid)) { + $parents = array_reverse($parents); + foreach ($parents as $p) { + $breadcrumb[] = l($p->name, "forum/$p->tid"); + } + } drupal_set_breadcrumb($breadcrumb); } - // prepare the node content - $node = forum_content($node); - - // print the node - $output .= theme("node", $node, $main, $page); - - return $output; + return theme("node", forum_content($node), $main, $page); } function forum_validate(&$node) { @@ -287,19 +284,6 @@ function forum_get_forums($tid = 0) { return $forums; } -function forum_get_parents($tid) { - if ($tid) { - $parents[] = taxonomy_get_term($tid); - } - $n = 0; - while ($parent = taxonomy_get_parents($parents[$n]->tid)) { - $parents = array_merge($parents, $parent); - $n++; - } - - return $parents; -} - function _forum_num_topics($term) { $value = db_fetch_object(db_query("SELECT COUNT(n.nid) AS count FROM {node} n INNER JOIN {forum} f ON n.nid = f.nid WHERE f.tid = %d AND n.nid = f.nid AND n.status = 1 AND n.type = 'forum'", $term)); return ($value) ? $value->count : 0; @@ -444,7 +428,7 @@ function forum_page() { $offset = ($from / $forum_per_page) + 1; $forums = forum_get_forums($tid); - $parents = forum_get_parents($tid); + $parents = taxonomy_get_parents_all($tid); if ($tid && !in_array($tid, variable_get("forum_containers", array()))) { $topics = forum_get_topics($tid, $sortby, $forum_per_page); } diff --git a/modules/forum/forum.module b/modules/forum/forum.module index f88071178450..0fb1722b95ff 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -154,22 +154,19 @@ function forum_view($node, $main = 0, $page = 0) { // we are previewing $term_data = taxonomy_get_term($node->taxonomy[0]); } - $voc = taxonomy_get_vocabulary($term_data->vid); + // Breadcrumb navigation - $breadcrumb[] = l(t("Home"), NULL); - $breadcrumb[] = l(t("forums"), "forum"); - $breadcrumb[] = l($term_data->name, "forum/$term_data->tid"); - // print the breadcrumb + $breadcrumb = array(l(t("Home"), NULL), l(t("forum"), "forum")); + if ($parents = taxonomy_get_parents_all($term_data->tid)) { + $parents = array_reverse($parents); + foreach ($parents as $p) { + $breadcrumb[] = l($p->name, "forum/$p->tid"); + } + } drupal_set_breadcrumb($breadcrumb); } - // prepare the node content - $node = forum_content($node); - - // print the node - $output .= theme("node", $node, $main, $page); - - return $output; + return theme("node", forum_content($node), $main, $page); } function forum_validate(&$node) { @@ -287,19 +284,6 @@ function forum_get_forums($tid = 0) { return $forums; } -function forum_get_parents($tid) { - if ($tid) { - $parents[] = taxonomy_get_term($tid); - } - $n = 0; - while ($parent = taxonomy_get_parents($parents[$n]->tid)) { - $parents = array_merge($parents, $parent); - $n++; - } - - return $parents; -} - function _forum_num_topics($term) { $value = db_fetch_object(db_query("SELECT COUNT(n.nid) AS count FROM {node} n INNER JOIN {forum} f ON n.nid = f.nid WHERE f.tid = %d AND n.nid = f.nid AND n.status = 1 AND n.type = 'forum'", $term)); return ($value) ? $value->count : 0; @@ -444,7 +428,7 @@ function forum_page() { $offset = ($from / $forum_per_page) + 1; $forums = forum_get_forums($tid); - $parents = forum_get_parents($tid); + $parents = taxonomy_get_parents_all($tid); if ($tid && !in_array($tid, variable_get("forum_containers", array()))) { $topics = forum_get_topics($tid, $sortby, $forum_per_page); } diff --git a/modules/taxonomy.module b/modules/taxonomy.module index b60fd1c89a94..5bed8bb16aea 100644 --- a/modules/taxonomy.module +++ b/modules/taxonomy.module @@ -437,6 +437,20 @@ function taxonomy_get_parents($tid, $key = "tid") { } } +// Gets all parents, parents of parents, etc. +function taxonomy_get_parents_all($tid, $key = "tid") { + $parents = array(); + if ($tid) { + $parents[] = taxonomy_get_term($tid); + $n = 0; + while ($parent = taxonomy_get_parents($parents[$n]->tid)) { + $parents = array_merge($parents, $parent); + $n++; + } + } + return $parents; +} + // hierarchy: get children function taxonomy_get_children($tid, $vid = 0, $key = "tid") { if ($vid) { diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index b60fd1c89a94..5bed8bb16aea 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -437,6 +437,20 @@ function taxonomy_get_parents($tid, $key = "tid") { } } +// Gets all parents, parents of parents, etc. +function taxonomy_get_parents_all($tid, $key = "tid") { + $parents = array(); + if ($tid) { + $parents[] = taxonomy_get_term($tid); + $n = 0; + while ($parent = taxonomy_get_parents($parents[$n]->tid)) { + $parents = array_merge($parents, $parent); + $n++; + } + } + return $parents; +} + // hierarchy: get children function taxonomy_get_children($tid, $vid = 0, $key = "tid") { if ($vid) { -- GitLab