Same name and namespace in other branches
  1. 4.7.x modules/taxonomy.module \taxonomy_term_count_nodes()
  2. 5.x modules/taxonomy/taxonomy.module \taxonomy_term_count_nodes()
  3. 6.x modules/taxonomy/taxonomy.module \taxonomy_term_count_nodes()

Given a term id, count the number of published nodes in it.

File

modules/taxonomy.module, line 668
Enables the organization of content into categories.

Code

function taxonomy_term_count_nodes($tid, $type = 0) {
  static $count;
  if (!isset($count[$type])) {

    // $type == 0 always evaluates true is $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.nid = n.nid 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, {node} n WHERE t.nid = n.nid AND n.status = 1 AND n.type = '%s' GROUP BY t.tid"), $type);
    }
    while ($term = db_fetch_object($result)) {
      $count[$type][$term->tid] = $term->c;
    }
  }
  foreach (_taxonomy_term_children($tid) as $c) {
    $children_count += taxonomy_term_count_nodes($c, $type);
  }
  return $count[$type][$tid] + $children_count;
}