? 107051-whos-online-dupes-D7-2.patch
? 314349-comment-stop-gap.patch
? 314349-comment-stop-gap_0.patch
? 323477-simpletest-speedup.patch
? 328110-recoverable-fatal-error-1226481158.patch
? 328110-recoverable-fatal-error_1.patch
? admincontentnode.patch
? admincontentnode.patch.1
? cache_get_multiple.patch
? code-style-coder.patch
? comment_mode.patch
? css_status_style.patch
? d7test.sql
? disabled_checkbox_tests.patch
? fix_update_2.patch
? i_can_no_has_horrible_test.patch
? i_can_no_has_horrible_test_0.patch
? i_can_no_has_horrible_test_2.patch
? menu_rebuild_8.patch
? multiple_cache.patch
? multiple_load.patch
? multiple_load2.patch
? node_load_21.patch
? node_load_multiple.patch
? node_load_multiple_1.patch
? system-enable_3.patch
? taxonomy_count_nodes.patch
? taxonomy_count_nodes_HEAD.patch
? taxonomy_preview.test
? term_hooks.patch
? term_hooks_6.patch
? term_hooks_6.patch.1
? term_objects.patch
? tracker.patch
? tracker2.txt
? url_filter.patch
? url_filter_2.patch
? vocab-hooks-329140-4.patch
? vocabulary_admin.patch
? vocabulary_admin.patch.1
? vocabulary_overview.patch
? warn_on_alien_comment_edit.patch
? modules/dblog/.dblog.test.swp
? modules/node/node_load_multiple.patch
? modules/system/.system.install.swp
? modules/tracker/modules
? modules/tracker/tracker2.txt
? sites/all/modules
? sites/default/fiels
? sites/default/files
? sites/default/settings.php
Index: modules/taxonomy/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v
retrieving revision 1.442
diff -u -p -r1.442 taxonomy.module
--- modules/taxonomy/taxonomy.module	13 Nov 2008 08:13:56 -0000	1.442
+++ modules/taxonomy/taxonomy.module	20 Nov 2008 12:33:14 -0000
@@ -928,27 +928,24 @@ function taxonomy_get_synonym_root($syno
  */
 function taxonomy_term_count_nodes($tid, $type = 0) {
   static $count;
-
-  if (!isset($count[$type])) {
-    // $type == 0 always evaluates TRUE if $type is a string
-    if (is_numeric($type)) {
-      $result = db_query(db_rewrite_sql('SELECT t.tid, COUNT(n.nid) AS c FROM {term_node} t INNER JOIN {node} n ON t.vid = n.vid WHERE n.status = 1 GROUP BY t.tid'));
-    }
-    else {
-      $result = db_query(db_rewrite_sql("SELECT t.tid, COUNT(n.nid) AS c FROM {term_node} t INNER JOIN {node} n ON t.vid = n.vid WHERE n.status = 1 AND n.type = '%s' GROUP BY t.tid"), $type);
-    }
-    $count[$type] = array();
-    while ($term = db_fetch_object($result)) {
-      $count[$type][$term->tid] = $term->c;
+  $term = taxonomy_get_term($tid);
+  $tree = taxonomy_get_tree($term->vid, $tid);
+  $tids = array($tid);
+    foreach ($tree as $descendant) {
+      $tids[] = $descendant->tid;
     }
+
+  if (!isset($count[$type][$tid])) {
+    $count[$type][$tid] = db_result(db_query(db_rewrite_sql('SELECT COUNT(DISTINCT(n.nid)) AS count FROM {term_node} t INNER JOIN {node} n ON t.vid = n.vid WHERE n.status = 1 AND t.tid IN (' . db_placeholders($tids) . ')')), $tids);
   }
-  $children_count = 0;
-  foreach (_taxonomy_term_children($tid) as $c) {
-    $children_count += taxonomy_term_count_nodes($c, $type);
+  else {
+    $count[$type][$tid] = db_result(db_query(db_rewrite_sql("SELECT COUNT(DISTINCT(n.nid)) AS count FROM {term_node} t INNER JOIN {node} n ON t.vid = n.vid WHERE n.status = 1 AND n.type = '%s' AND t.tid IN (" . db_placeholders($tids) . ")"), $type, implode(',', $tids)));
   }
-  return $children_count + (isset($count[$type][$tid]) ? $count[$type][$tid] : 0);
+  return $count[$type][$tid];
 }
 
+
+
 /**
  * Helper for taxonomy_term_count_nodes(). Used to find out
  * which terms are children of a parent term.
