? t.patch ? taxo.patch Index: taxonomy.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.admin.inc,v retrieving revision 1.2 diff -u -p -r1.2 taxonomy.admin.inc --- taxonomy.admin.inc 2 Aug 2007 10:25:21 -0000 1.2 +++ taxonomy.admin.inc 13 Aug 2007 22:06:38 -0000 @@ -177,28 +177,42 @@ function taxonomy_overview_terms($vocabu $page_increment = 25; // number of tids per page $displayed_count = 0; // number of tids shown - $tree = taxonomy_get_tree($vocabulary->vid); - foreach ($tree as $term) { - $total_entries++; // we're counting all-totals, not displayed - if (($start_from && ($start_from * $page_increment) >= $total_entries) || ($displayed_count == $page_increment)) { - continue; + if ($vocabulary->tags) { + // We are not calling taxonomy_get_tree because that might fail with a big + // number of tags in the freetagging vocabulary. + $results = pager_query(db_rewrite_sql('SELECT t.*, h.parent FROM {term_data} t INNER JOIN {term_hierarchy} h ON t.tid = h.tid WHERE t.vid = %d ORDER BY weight, name', 't', 'tid'), $page_increment, 0, NULL, $vid); + while ($term = db_fetch_object($results)) { + $rows[] = array( + l($term->name, "taxonomy/term/$term->tid"), + l(t('edit'), "admin/content/taxonomy/edit/term/$term->tid", array('query' => $destination)), + ); } - $rows[] = array(str_repeat('--', $term->depth) .' '. l($term->name, "taxonomy/term/$term->tid"), l(t('edit'), "admin/content/taxonomy/edit/term/$term->tid", array('query' => $destination))); - $displayed_count++; // we're counting tids displayed } + else { + $tree = taxonomy_get_tree($vocabulary->vid); + foreach ($tree as $term) { + $total_entries++; // we're counting all-totals, not displayed + if (($start_from && ($start_from * $page_increment) >= $total_entries) || ($displayed_count == $page_increment)) { + continue; + } + $rows[] = array(str_repeat('--', $term->depth) .' '. l($term->name, "taxonomy/term/$term->tid"), l(t('edit'), "admin/content/taxonomy/edit/term/$term->tid", array('query' => $destination))); + $displayed_count++; // we're counting tids displayed + } - if (empty($rows)) { - $rows[] = array(array('data' => t('No terms available.'), 'colspan' => '2')); - } + if (empty($rows)) { + $rows[] = array(array('data' => t('No terms available.'), 'colspan' => '2')); + } - $GLOBALS['pager_page_array'][] = $start_from; // FIXME - $GLOBALS['pager_total'][] = intval($total_entries / $page_increment) + 1; // FIXME + $GLOBALS['pager_page_array'][] = $start_from; // FIXME + $GLOBALS['pager_total'][] = intval($total_entries / $page_increment) + 1; // FIXME + } - if ($total_entries >= $page_increment) { - $rows[] = array(array('data' => theme('pager', NULL, $page_increment), 'colspan' => '2')); + $output .= theme('table', $header, $rows, array('id' => 'taxonomy')); + if ($vocabulary->tags || $total_entries >= $page_increment) { + $output .= theme('pager', NULL, $page_increment); } - return theme('table', $header, $rows, array('id' => 'taxonomy')); + return $output; } /**