From 92acb92699bf2127569125689fc522f6edaf7c1c Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Tue, 10 Jan 2006 12:35:20 +0000
Subject: [PATCH] - Patch #33747 by Ber and Moshe: bugfix + code improvement:
 clean up some of the taxonomy loading code.

---
 modules/blogapi.module           |  5 -----
 modules/blogapi/blogapi.module   |  5 -----
 modules/forum.module             |  3 +--
 modules/forum/forum.module       |  3 +--
 modules/taxonomy.module          | 14 +++++---------
 modules/taxonomy/taxonomy.module | 14 +++++---------
 6 files changed, 12 insertions(+), 32 deletions(-)

diff --git a/modules/blogapi.module b/modules/blogapi.module
index 8fa29326eb70..ce7edce8df11 100644
--- a/modules/blogapi.module
+++ b/modules/blogapi.module
@@ -274,11 +274,6 @@ function blogapi_blogger_edit_post($appkey, $postid, $username, $password, $cont
     return blogapi_error(implode("\n", $errors));
   }
 
-  $terms = module_invoke('taxonomy', 'node_get_terms', $node->nid, 'tid');
-  foreach ($terms as $term) {
-    $node->taxonomy[] = $term->tid;
-  }
-
   $node = node_submit($node);
   node_save($node);
   if ($node->nid) {
diff --git a/modules/blogapi/blogapi.module b/modules/blogapi/blogapi.module
index 8fa29326eb70..ce7edce8df11 100644
--- a/modules/blogapi/blogapi.module
+++ b/modules/blogapi/blogapi.module
@@ -274,11 +274,6 @@ function blogapi_blogger_edit_post($appkey, $postid, $username, $password, $cont
     return blogapi_error(implode("\n", $errors));
   }
 
-  $terms = module_invoke('taxonomy', 'node_get_terms', $node->nid, 'tid');
-  foreach ($terms as $term) {
-    $node->taxonomy[] = $term->tid;
-  }
-
   $node = node_submit($node);
   node_save($node);
   if ($node->nid) {
diff --git a/modules/forum.module b/modules/forum.module
index 0b2aba5c1799..b73d85cc840c 100644
--- a/modules/forum.module
+++ b/modules/forum.module
@@ -535,8 +535,7 @@ function forum_submit(&$node) {
       }
     }
     if ($node->tid && $node->shadow) {
-      $terms = array_keys(taxonomy_node_get_terms($node->nid));
-      if (!in_array($node->tid, $terms)) {
+      if (!in_array($node->tid, $node->taxonomy)) {
         $terms[] = $node->tid;
       }
       $node->taxonomy = $terms;
diff --git a/modules/forum/forum.module b/modules/forum/forum.module
index 0b2aba5c1799..b73d85cc840c 100644
--- a/modules/forum/forum.module
+++ b/modules/forum/forum.module
@@ -535,8 +535,7 @@ function forum_submit(&$node) {
       }
     }
     if ($node->tid && $node->shadow) {
-      $terms = array_keys(taxonomy_node_get_terms($node->nid));
-      if (!in_array($node->tid, $terms)) {
+      if (!in_array($node->tid, $node->taxonomy)) {
         $terms[] = $node->tid;
       }
       $node->taxonomy = $terms;
diff --git a/modules/taxonomy.module b/modules/taxonomy.module
index f56fa8338f46..de8b86404978 100644
--- a/modules/taxonomy.module
+++ b/modules/taxonomy.module
@@ -28,13 +28,7 @@ function taxonomy_link($type, $node = NULL) {
   if ($type == 'taxonomy terms' && $node != NULL) {
     $links = array();
     if (array_key_exists('taxonomy', $node)) {
-      foreach ($node->taxonomy as $tid) {
-        $term = taxonomy_get_term($tid);
-        $links[] = l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => $term->description));
-      }
-    }
-    else {
-      foreach (taxonomy_node_get_terms($node->nid) as $term) {
+      foreach ($node->taxonomy as $term) {
         $links[] = l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => $term->description));
       }
     }
@@ -1009,6 +1003,9 @@ function taxonomy_render_nodes($result) {
  */
 function taxonomy_nodeapi($node, $op, $arg = 0) {
   switch ($op) {
+    case 'load':
+     $output['taxonomy'] = taxonomy_node_get_terms($node->nid);
+     return $output;
     case 'insert':
       taxonomy_node_save($node->nid, $node->taxonomy);
       break;
@@ -1184,8 +1181,7 @@ function taxonomy_admin() {
  */
 function taxonomy_rss_item($node) {
   $output = array();
-  $terms = taxonomy_node_get_terms($node->nid);
-  foreach ($terms as $term) {
+  foreach ($node->taxonomy as $term) {
     $output[] = array('key'   => 'category',
                       'value' => check_plain($term->name),
                       'attributes' => array('domain' => url('taxonomy/term/'. $term->tid, NULL, NULL, TRUE)));
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index f56fa8338f46..de8b86404978 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -28,13 +28,7 @@ function taxonomy_link($type, $node = NULL) {
   if ($type == 'taxonomy terms' && $node != NULL) {
     $links = array();
     if (array_key_exists('taxonomy', $node)) {
-      foreach ($node->taxonomy as $tid) {
-        $term = taxonomy_get_term($tid);
-        $links[] = l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => $term->description));
-      }
-    }
-    else {
-      foreach (taxonomy_node_get_terms($node->nid) as $term) {
+      foreach ($node->taxonomy as $term) {
         $links[] = l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => $term->description));
       }
     }
@@ -1009,6 +1003,9 @@ function taxonomy_render_nodes($result) {
  */
 function taxonomy_nodeapi($node, $op, $arg = 0) {
   switch ($op) {
+    case 'load':
+     $output['taxonomy'] = taxonomy_node_get_terms($node->nid);
+     return $output;
     case 'insert':
       taxonomy_node_save($node->nid, $node->taxonomy);
       break;
@@ -1184,8 +1181,7 @@ function taxonomy_admin() {
  */
 function taxonomy_rss_item($node) {
   $output = array();
-  $terms = taxonomy_node_get_terms($node->nid);
-  foreach ($terms as $term) {
+  foreach ($node->taxonomy as $term) {
     $output[] = array('key'   => 'category',
                       'value' => check_plain($term->name),
                       'attributes' => array('domain' => url('taxonomy/term/'. $term->tid, NULL, NULL, TRUE)));
-- 
GitLab